Ken Thomases : winemac: Move test for valid GL drawable into -[ WineContentView addGLContext:].

Alexandre Julliard julliard at winehq.org
Fri Nov 29 13:24:27 CST 2013


Module: wine
Branch: master
Commit: fd04552fe3d2acfc487192f7c6696526bd8c9950
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fd04552fe3d2acfc487192f7c6696526bd8c9950

Author: Ken Thomases <ken at codeweavers.com>
Date:   Wed Nov 27 15:32:46 2013 -0600

winemac: Move test for valid GL drawable into -[WineContentView addGLContext:].

Improves encapsulation.  Avoids a round trip to the main thread.

---

 dlls/winemac.drv/cocoa_opengl.m |    9 ++-------
 dlls/winemac.drv/cocoa_window.m |   16 +++++++++++++---
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/dlls/winemac.drv/cocoa_opengl.m b/dlls/winemac.drv/cocoa_opengl.m
index 45799db..85b3639 100644
--- a/dlls/winemac.drv/cocoa_opengl.m
+++ b/dlls/winemac.drv/cocoa_opengl.m
@@ -123,16 +123,11 @@ void macdrv_make_context_current(macdrv_opengl_context c, macdrv_view v)
         context.needsUpdate = FALSE;
         if (view)
         {
-            __block BOOL viewIsValidDrawable;
-
             macdrv_add_view_opengl_context(v, c);
 
-            OnMainThread(^{
-                viewIsValidDrawable = [[view window] windowNumber] > 0 &&
-                                      !NSIsEmptyRect([view visibleRect]);
-            });
-            if (viewIsValidDrawable)
+            if (context.needsUpdate)
             {
+                context.needsUpdate = FALSE;
                 [context setView:view];
                 [context setLatentView:nil];
             }
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m
index a29f20e..74fa191 100644
--- a/dlls/winemac.drv/cocoa_window.m
+++ b/dlls/winemac.drv/cocoa_window.m
@@ -294,8 +294,18 @@ static inline NSUInteger adjusted_modifiers_for_option_behavior(NSUInteger modif
             glContexts = [[NSMutableArray alloc] init];
         if (!pendingGlContexts)
             pendingGlContexts = [[NSMutableArray alloc] init];
-        [pendingGlContexts addObject:context];
-        [self setNeedsDisplay:YES];
+
+        if ([[self window] windowNumber] > 0 && !NSIsEmptyRect([self visibleRect]))
+        {
+            [glContexts addObject:context];
+            context.needsUpdate = TRUE;
+        }
+        else
+        {
+            [pendingGlContexts addObject:context];
+            [self setNeedsDisplay:YES];
+        }
+
         [(WineWindow*)[self window] updateColorSpace];
     }
 
@@ -2407,7 +2417,7 @@ void macdrv_add_view_opengl_context(macdrv_view v, macdrv_opengl_context c)
     WineContentView* view = (WineContentView*)v;
     WineOpenGLContext *context = (WineOpenGLContext*)c;
 
-    OnMainThreadAsync(^{
+    OnMainThread(^{
         [view addGLContext:context];
     });
 




More information about the wine-cvs mailing list