summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hult <richard@imendio.com>2008-02-27 10:55:55 +0000
committerRichard Hult <rhult@src.gnome.org>2008-02-27 10:55:55 +0000
commit33516557503192538970d394ac868379e8982cc1 (patch)
treed2f8433032cf765939c7d443a89961951fdcaf59
parent7a8337feb4aa4cb00671552a2fa3dd1021074e6d (diff)
downloadgdk-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--ChangeLog10
-rw-r--r--gdk/quartz/GdkQuartzView.c15
-rw-r--r--gdk/quartz/GdkQuartzView.h2
-rw-r--r--gdk/quartz/gdkwindow-quartz.c6
4 files changed, 28 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 46fdbeb9f..0070d878e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;