Remove over optimization
authorKlaus Ethgen <Klaus@Ethgen.de>
Tue, 11 Aug 2015 22:19:25 +0000 (23:19 +0100)
committerKlaus Ethgen <Klaus@Ethgen.de>
Tue, 11 Aug 2015 22:23:25 +0000 (23:23 +0100)
Thanks Uwe Ohse <uwe@ohse.de> for this find.

"it looks good, but is dead slow, for each and every call to
gdk_cairo_set_source_pixbuf takes at least 15 milliseconds on my not
really slow machine, which amounts to over 2 seconds if 144 tiles have
to be drawn (tested with many jpegs and a few large pngs).

i propose to remove this optimization until someone fixes it. After
removal geeqie is fast, again."

src/renderer-tiles.c

index f48fe57..72ea055 100644 (file)
@@ -1333,21 +1333,6 @@ static void rt_tile_render(RendererTiles *rt, ImageTile *it,
                {
                draw = rt_source_tile_render(rt, it, x, y, w, h, new_data, fast);
                }
-       else if ((pr->zoom == 1.0 || pr->scale == 1.0) &&
-                pr->aspect_ratio == 1.0 &&
-                !has_alpha &&
-                orientation == EXIF_ORIENTATION_TOP_LEFT &&
-                !(pr->func_post_process && !(pr->post_process_slow && fast)) &&
-                !(rt->stereo_mode & PR_STEREO_ANAGLYPH))
-               {
-               /* special case: faster, simple, scale 1.0, base orientation, no postprocessing */
-               cairo_t *cr;
-               cr = cairo_create(it->surface);
-               cairo_rectangle (cr, x, y, w, h);
-               gdk_cairo_set_source_pixbuf(cr, pr->pixbuf, -it->x - GET_RIGHT_PIXBUF_OFFSET(rt), -it->y);
-               cairo_fill (cr);
-               cairo_destroy (cr);
-               }
        else
                {
                gdouble scale_x, scale_y;