Commit fd04552f authored by Ken Thomases's avatar Ken Thomases Committed by Alexandre Julliard

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

Improves encapsulation. Avoids a round trip to the main thread.
parent 6d0d018b
...@@ -123,16 +123,11 @@ void macdrv_make_context_current(macdrv_opengl_context c, macdrv_view v) ...@@ -123,16 +123,11 @@ void macdrv_make_context_current(macdrv_opengl_context c, macdrv_view v)
context.needsUpdate = FALSE; context.needsUpdate = FALSE;
if (view) if (view)
{ {
__block BOOL viewIsValidDrawable;
macdrv_add_view_opengl_context(v, c); macdrv_add_view_opengl_context(v, c);
OnMainThread(^{ if (context.needsUpdate)
viewIsValidDrawable = [[view window] windowNumber] > 0 &&
!NSIsEmptyRect([view visibleRect]);
});
if (viewIsValidDrawable)
{ {
context.needsUpdate = FALSE;
[context setView:view]; [context setView:view];
[context setLatentView:nil]; [context setLatentView:nil];
} }
......
...@@ -294,8 +294,18 @@ static inline NSUInteger adjusted_modifiers_for_option_behavior(NSUInteger modif ...@@ -294,8 +294,18 @@ static inline NSUInteger adjusted_modifiers_for_option_behavior(NSUInteger modif
glContexts = [[NSMutableArray alloc] init]; glContexts = [[NSMutableArray alloc] init];
if (!pendingGlContexts) if (!pendingGlContexts)
pendingGlContexts = [[NSMutableArray alloc] init]; 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]; [(WineWindow*)[self window] updateColorSpace];
} }
...@@ -2407,7 +2417,7 @@ void macdrv_add_view_opengl_context(macdrv_view v, macdrv_opengl_context c) ...@@ -2407,7 +2417,7 @@ void macdrv_add_view_opengl_context(macdrv_view v, macdrv_opengl_context c)
WineContentView* view = (WineContentView*)v; WineContentView* view = (WineContentView*)v;
WineOpenGLContext *context = (WineOpenGLContext*)c; WineOpenGLContext *context = (WineOpenGLContext*)c;
OnMainThreadAsync(^{ OnMainThread(^{
[view addGLContext:context]; [view addGLContext:context];
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment