From 4fcf220c39ef8546accbe023e54c9d1e1aa511e6 Mon Sep 17 00:00:00 2001 From: Michael Hutchinson Date: Tue, 26 Jul 2011 07:35:52 +0200 Subject: Update clipping patch --- packages/gtk+.py | 3 +- packages/patches/gtk/gdk-empty-clip.patch | 47 +++++++++++++++++++++++++++++ packages/patches/gtk/gdkemptypath.patch | 15 --------- packages/patches/gtk/gdkwindow-quartz.patch | 14 --------- 4 files changed, 48 insertions(+), 31 deletions(-) create mode 100644 packages/patches/gtk/gdk-empty-clip.patch delete mode 100644 packages/patches/gtk/gdkemptypath.patch delete mode 100644 packages/patches/gtk/gdkwindow-quartz.patch (limited to 'packages') diff --git a/packages/gtk+.py b/packages/gtk+.py index 9633518..7cbc319 100644 --- a/packages/gtk+.py +++ b/packages/gtk+.py @@ -15,7 +15,6 @@ class GtkPackage (GnomePackage): self.sources.extend ([ #patches from gtk-osx-build 'patches/gtk/gtkselection.patch', - 'patches/gtk/gdkwindow-quartz.patch', 'patches/gtk/gtk-keyhash.patch', 'patches/gtk/gtk-relocation.patch', 'patches/gtk/gdk-deadkeys.patch', @@ -41,7 +40,7 @@ class GtkPackage (GnomePackage): # Bug 655087 - CoreGraphics error "clip: empty path" creating # new window on Lion # https://bugzilla.gnome.org/show_bug.cgi?id=655087 - 'patches/gtk/gdkemptypath.patch', + 'patches/gtk/gdk-empty-clip.patch', # Bug 508601 - Copying from GTK+ applications causes crash # https://bugzilla.gnome.org/show_bug.cgi?id=508601 diff --git a/packages/patches/gtk/gdk-empty-clip.patch b/packages/patches/gtk/gdk-empty-clip.patch new file mode 100644 index 0000000..e71f22f --- /dev/null +++ b/packages/patches/gtk/gdk-empty-clip.patch @@ -0,0 +1,47 @@ +diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c +index f058570..c8b791b 100644 +--- a/gdk/gdkwindow.c ++++ b/gdk/gdkwindow.c +@@ -3744,7 +3744,7 @@ start_draw_helper (GdkDrawable *drawable, + impl = private->impl; + } + +- if (clip) ++ if (clip && !gdk_region_empty (clip)) + _gdk_gc_add_drawable_clip (gc, + clip_region_tag, clip, + /* If there was a clip origin set appart from the +@@ -5417,18 +5417,25 @@ _gdk_window_process_updates_recurse (GdkWindow *window, + { + if (private->event_mask & GDK_EXPOSURE_MASK) + { ++ GdkRegion *region_copy = gdk_region_copy (expose_region); + GdkEvent event; + +- event.expose.type = GDK_EXPOSE; +- event.expose.window = g_object_ref (window); +- event.expose.send_event = FALSE; +- event.expose.count = 0; +- event.expose.region = expose_region; +- gdk_region_get_clipbox (expose_region, &event.expose.area); ++ gdk_region_intersect (region_copy, private->clip_region_with_children); ++ if (!gdk_region_empty (region_copy)) ++ { ++ event.expose.type = GDK_EXPOSE; ++ event.expose.window = g_object_ref (window); ++ event.expose.send_event = FALSE; ++ event.expose.count = 0; ++ event.expose.region = expose_region; ++ gdk_region_get_clipbox (expose_region, &event.expose.area); ++ ++ (*_gdk_event_func) (&event, _gdk_event_data); + +- (*_gdk_event_func) (&event, _gdk_event_data); ++ g_object_unref (window); ++ } + +- g_object_unref (window); ++ gdk_region_destroy (region_copy); + } + else if (private->bg_pixmap != GDK_NO_BG && + private->window_type != GDK_WINDOW_FOREIGN) diff --git a/packages/patches/gtk/gdkemptypath.patch b/packages/patches/gtk/gdkemptypath.patch deleted file mode 100644 index b1ba890..0000000 --- a/packages/patches/gtk/gdkemptypath.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/gdk/quartz/gdkgc-quartz.c b/gdk/quartz/gdkgc-quartz.c -index 21cc598..9b79be0 100644 ---- a/gdk/quartz/gdkgc-quartz.c -+++ b/gdk/quartz/gdkgc-quartz.c -@@ -463,6 +463,10 @@ _gdk_quartz_gc_update_cg_context (GdkGC *gc, - gdk_region_get_rectangles (_gdk_gc_get_clip_region (gc), - &rects, &n_rects); - -+ /* No rects, nothing to do */ -+ if (n_rects == 0) -+ return; -+ - if (n_rects == 1) - cg_rects = ▭ - else diff --git a/packages/patches/gtk/gdkwindow-quartz.patch b/packages/patches/gtk/gdkwindow-quartz.patch deleted file mode 100644 index abf15e9..0000000 --- a/packages/patches/gtk/gdkwindow-quartz.patch +++ /dev/null @@ -1,14 +0,0 @@ -git --diff a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c -index efc0672..85a6ef1 100644 ---- a/gdk/quartz/gdkwindow-quartz.c -+++ b/gdk/quartz/gdkwindow-quartz.c -@@ -258,6 +258,9 @@ gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable, - goto done; - - gdk_region_get_rectangles (clipped_and_offset_region, &rects, &n_rects); -+/* No rects, no point in going further */ -+ if (n_rects == 0) -+ goto done; - - if (bg_pixmap == NULL) - { -- cgit v1.2.3