gtk+ r19666 - in trunk: . gdk/quartz



Author: rhult
Date: Wed Feb 27 10:49:22 2008
New Revision: 19666
URL: http://svn.gnome.org/viewvc/gtk+?rev=19666&view=rev

Log:
2008-02-27  Richard Hult  <richard imendio com>

	* 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.


Modified:
   trunk/ChangeLog
   trunk/gdk/quartz/GdkQuartzView.c
   trunk/gdk/quartz/GdkQuartzView.h
   trunk/gdk/quartz/gdkwindow-quartz.c

Modified: trunk/gdk/quartz/GdkQuartzView.c
==============================================================================
--- trunk/gdk/quartz/GdkQuartzView.c	(original)
+++ trunk/gdk/quartz/GdkQuartzView.c	Wed Feb 27 10:49:22 2008
@@ -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
  */

Modified: trunk/gdk/quartz/GdkQuartzView.h
==============================================================================
--- trunk/gdk/quartz/GdkQuartzView.h	(original)
+++ trunk/gdk/quartz/GdkQuartzView.h	Wed Feb 27 10:49:22 2008
@@ -24,9 +24,11 @@
 @interface GdkQuartzView : NSView {
   GdkWindow *gdk_window;
   NSTrackingRectTag trackingRect;
+  BOOL needsInvalidateShadow;
 }
 
 -(void)setGdkWindow:(GdkWindow *)window;
 -(GdkWindow *)gdkWindow;
+-(void)setNeedsInvalidateShadow:(BOOL)invalidate;
 
 @end

Modified: trunk/gdk/quartz/gdkwindow-quartz.c
==============================================================================
--- trunk/gdk/quartz/gdkwindow-quartz.c	(original)
+++ trunk/gdk/quartz/gdkwindow-quartz.c	Wed Feb 27 10:49:22 2008
@@ -2631,6 +2631,12 @@
 
       [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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]