From 37f07504f203aec1345a75abeb07172259bd5973 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sun, 27 May 2012 22:51:33 +0200 Subject: [PATCH 06/68] gtk: paint only the exposed region in gdk_window_expose() --- gtk/gtkwindow.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 7094eb6..89c91da 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -6631,13 +6631,28 @@ gtk_window_paint (GtkWidget *widget, GTK_SHADOW_NONE, area, widget, "base", 0, 0, -1, -1); } +static void +gtk_window_paint_region (GtkWidget *widget, + GdkRegion *region) +{ + int i, n_rectangles; + GdkRectangle *rectangles = NULL; + + gdk_region_get_rectangles (region, &rectangles, &n_rectangles); + + for (i = 0; i < n_rectangles; i++) + gtk_window_paint (widget, &rectangles[i]); + + g_free (rectangles); +} + static gint gtk_window_expose (GtkWidget *widget, GdkEventExpose *event) { if (!gtk_widget_get_app_paintable (widget)) - gtk_window_paint (widget, &event->area); - + gtk_window_paint_region (widget, event->region); + if (GTK_WIDGET_CLASS (gtk_window_parent_class)->expose_event) return GTK_WIDGET_CLASS (gtk_window_parent_class)->expose_event (widget, event); -- 1.7.10.2 (Apple Git-33)