updated version and copyright notice
[geeqie.git] / src / renderer-tiles.c
index 9f5cb09..24a8a42 100644 (file)
@@ -1,9 +1,10 @@
 /*
  * Geeqie
  * (C) 2006 John Ellis
- * Copyright (C) 2008 - 2010 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
  *
  * Author: John Ellis
+ * Author: Vladimir Nadvornik
  *
  * This software is released under the GNU General Public License (GNU GPL).
  * Please read the included file COPYING for more information.
@@ -154,14 +155,10 @@ static void rt_queue_merge(QueueData *parent, QueueData *qd);
 static void rt_queue(RendererTiles *rt, gint x, gint y, gint w, gint h,
                     gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing);
 
-static void rt_redraw(RendererTiles *rt, gboolean new_data);
-
-
-static void rt_signals_connect(RendererTiles *rt);
-static void rt_size_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data);
 static void rt_hierarchy_changed_cb(GtkWidget *widget, GtkWidget *previous_toplevel, gpointer data);
-static void pixbuf_renderer_paint(RendererTiles *rt, GdkRectangle *area);
 static gint rt_queue_draw_idle_cb(gpointer data);
+static void renderer_redraw(void *renderer, gint x, gint y, gint w, gint h,
+                     gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing);
 
 #define GET_RIGHT_PIXBUF_OFFSET(rt) \
         (( (rt->stereo_mode & PR_STEREO_RIGHT) && !(rt->stereo_mode & PR_STEREO_SWAP)) || \
@@ -496,14 +493,11 @@ static void rt_tile_prepare(RendererTiles *rt, ImageTile *it)
                rt->tile_cache_size += size;
                }
 
-       if ((pr->zoom != 1.0 || pr->source_tiles_enabled || (pr->pixbuf && gdk_pixbuf_get_has_alpha(pr->pixbuf)) ||
-            pr->orientation != EXIF_ORIENTATION_TOP_LEFT || pr->func_post_process) && !it->pixbuf)
+       if (!it->pixbuf)
                {
                GdkPixbuf *pixbuf;
                guint size;
-                       {
-                       pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, rt->tile_width, rt->tile_height);
-                       }
+               pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, rt->tile_width, rt->tile_height);
 
                size = gdk_pixbuf_get_rowstride(pixbuf) * rt->tile_height;
                rt_tile_free_space(rt, size, it);
@@ -1888,14 +1882,6 @@ static void rt_queue(RendererTiles *rt, gint x, gint y, gint w, gint h,
                }
 }
 
-static void rt_redraw(RendererTiles *rt, gboolean new_data)
-{
-       PixbufRenderer *pr = rt->pr;
-       rt_queue_clear(rt);
-       rt_queue(rt, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE);
-}
-
-
 static void rt_scroll(RendererTiles *rt, gint x_off, gint y_off)
 {
        PixbufRenderer *pr = rt->pr;
@@ -1976,8 +1962,9 @@ static void rt_scroll(RendererTiles *rt, gint x_off, gint y_off)
 #if ! GTK_CHECK_VERSION(2,18,0)
                while ((event = gdk_event_get_graphics_expose(box->window)) != NULL)
                        {
-                       pixbuf_renderer_paint(pr, &event->expose.area);
-
+                       renderer_redraw((void *) rt, event->expose.area.x, event->expose.area.y, event->expose.area.width, event->expose.area.height,
+                              FALSE, TILE_RENDER_ALL, FALSE, FALSE);
                        if (event->expose.count == 0)
                                {
                                gdk_event_free(event);
@@ -2044,10 +2031,9 @@ static void renderer_queue_clear(void *renderer)
        rt_queue_clear((RendererTiles *)renderer);
 }
 
-static void renderer_border_draw(void *renderer, gint x, gint y, gint w, gint h)
+static void renderer_border_clear(void *renderer)
 {
-       RendererTiles *rt = (RendererTiles *)renderer;
-       rt_border_draw((RendererTiles *)renderer, x, y, w, h);
+       rt_border_clear((RendererTiles *)renderer);
 }
 
 
@@ -2132,7 +2118,7 @@ RendererFuncs *renderer_tiles_new(PixbufRenderer *pr)
        rt->f.redraw = renderer_redraw;
        rt->f.area_changed = renderer_area_changed;
        rt->f.queue_clear = renderer_queue_clear;
-       rt->f.border_draw = renderer_border_draw;
+       rt->f.border_clear = renderer_border_clear;
        rt->f.free = renderer_free;
        rt->f.invalidate_all = renderer_invalidate_all;
        rt->f.invalidate_region = renderer_invalidate_region;