diff options
author | Richard Hult <richard@imendio.com> | 2008-02-27 10:55:55 +0000 |
---|---|---|
committer | Richard Hult <rhult@src.gnome.org> | 2008-02-27 10:55:55 +0000 |
commit | 33516557503192538970d394ac868379e8982cc1 (patch) | |
tree | d2f8433032cf765939c7d443a89961951fdcaf59 | |
parent | 7a8337feb4aa4cb00671552a2fa3dd1021074e6d (diff) | |
download | gdk-pixbuf-33516557503192538970d394ac868379e8982cc1.tar.gz |
Merged from trunk:
2008-02-27 Richard Hult <richard@imendio.com>
Merged from trunk:
* gdk/quartz/GdkQuartzView.c:
* gdk/quartz/GdkQuartzView.h:
* gdk/quartz/gdkwindow-quartz.c: (gdk_window_set_decorations):
Fix performance regression for borderless transparent windows
with shadow.
svn path=/branches/gtk-2-12/; revision=19667
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | gdk/quartz/GdkQuartzView.c | 15 | ||||
-rw-r--r-- | gdk/quartz/GdkQuartzView.h | 2 | ||||
-rw-r--r-- | gdk/quartz/gdkwindow-quartz.c | 6 |
4 files changed, 28 insertions, 5 deletions
@@ -1,3 +1,13 @@ +2008-02-27 Richard Hult <richard@imendio.com> + + Merged from trunk: + + * gdk/quartz/GdkQuartzView.c: + * gdk/quartz/GdkQuartzView.h: + * gdk/quartz/gdkwindow-quartz.c: (gdk_window_set_decorations): + Fix performance regression for borderless transparent windows + with shadow. + 2008-02-27 Sven Neumann <sven@gimp.org> Merged from trunk: diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c index 44f21e5a4..1063e7bfb 100644 --- a/gdk/quartz/GdkQuartzView.c +++ b/gdk/quartz/GdkQuartzView.c @@ -116,15 +116,20 @@ gdk_region_destroy (region); - /* Invalidate the window shadow for non-opaque views that have shadow - * enabled, otherwise the shadow doesn't get updated to what we draw. - */ - if (![self isOpaque] && [[self window] hasShadow]) - [[self window] invalidateShadow]; + if (needsInvalidateShadow) + { + [[self window] invalidateShadow]; + needsInvalidateShadow = NO; + } GDK_QUARTZ_RELEASE_POOL; } +-(void)setNeedsInvalidateShadow:(BOOL)invalidate +{ + needsInvalidateShadow = invalidate; +} + /* For information on setting up tracking rects properly, see here: * http://developer.apple.com/documentation/Cocoa/Conceptual/EventOverview/EventOverview.pdf */ diff --git a/gdk/quartz/GdkQuartzView.h b/gdk/quartz/GdkQuartzView.h index 1da55e377..66bd3cd5d 100644 --- a/gdk/quartz/GdkQuartzView.h +++ b/gdk/quartz/GdkQuartzView.h @@ -24,10 +24,12 @@ @interface GdkQuartzView : NSView { GdkWindow *gdk_window; NSTrackingRectTag trackingRect; + BOOL needsInvalidateShadow; } -(void)setGdkWindow:(GdkWindow *)window; -(GdkWindow *)gdkWindow; +-(void)setNeedsInvalidateShadow:(BOOL)invalidate; @end diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index e9ac17b23..9d0c2a653 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -2535,6 +2535,12 @@ gdk_window_set_decorations (GdkWindow *window, [impl->toplevel setContentView:old_view]; [impl->toplevel setFrame:rect display:YES]; + + /* Invalidate the window shadow for non-opaque views that have shadow + * enabled, to get the shadow shape updated. + */ + if (![old_view isOpaque] && [impl->toplevel hasShadow]) + [(GdkQuartzView*)old_view setNeedsInvalidateShadow:YES]; } GDK_QUARTZ_RELEASE_POOL; |