From 3844ac8753051b03e7f11f4625aaf7d84a01fe29 Mon Sep 17 00:00:00 2001 From: Vladislav Zavjalov Date: Wed, 14 Jul 2010 05:54:24 +0400 Subject: [PATCH] pixbuf-renderer: use gdk_region_get_rectangles instead of event->area --- gqview/src/pixbuf-renderer.c | 34 ++++++++++++++++------------------ 1 files changed, 16 insertions(+), 18 deletions(-) diff --git a/gqview/src/pixbuf-renderer.c b/gqview/src/pixbuf-renderer.c index b873010..726de7f 100644 --- a/gqview/src/pixbuf-renderer.c +++ b/gqview/src/pixbuf-renderer.c @@ -607,29 +607,27 @@ static void pixbuf_renderer_get_property(GObject *object, guint prop_id, static gint pixbuf_renderer_expose(GtkWidget *widget, GdkEventExpose *event) { - if (GTK_WIDGET_DRAWABLE(widget)) - { - if (!GTK_WIDGET_NO_WINDOW(widget)) - { - if (event->window != widget->window) - { - GdkRectangle area; + GdkRectangle *rects; + int nrects, n; - gdk_window_get_position(event->window, &area.x, &area.y); + if (!GTK_WIDGET_DRAWABLE(widget)) return FALSE; + if (GTK_WIDGET_NO_WINDOW(widget)) return FALSE; - area.x += event->area.x; - area.y += event->area.y; - area.width = event->area.width; - area.height = event->area.height; - pixbuf_renderer_paint(PIXBUF_RENDERER(widget), &area); - } - else - { - pixbuf_renderer_paint(PIXBUF_RENDERER(widget), &event->area); - } + gdk_region_get_rectangles(event->region, &rects, &nrects); + + for (n = 0; n < nrects; n++) + { + if (event->window != widget->window) + { + GdkRectangle area; + gdk_window_get_position(event->window, &area.x, &area.y); + rects[n].x += area.x; + rects[n].y += area.y; } + pixbuf_renderer_paint(PIXBUF_RENDERER(widget), &rects[n]); } + g_free(rects); return FALSE; } -- 1.6.5.3