winemac: Move test for valid GL drawable into -[WineContentView addGLContext:].
Improves encapsulation. Avoids a round trip to the main thread.
This commit is contained in:
parent
6d0d018bfa
commit
fd04552fe3
|
@ -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];
|
||||
}
|
||||
|
|
|
@ -294,8 +294,18 @@ - (void) addGLContext:(WineOpenGLContext*)context
|
|||
glContexts = [[NSMutableArray alloc] init];
|
||||
if (!pendingGlContexts)
|
||||
pendingGlContexts = [[NSMutableArray alloc] init];
|
||||
|
||||
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];
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue