Module: wine Branch: master Commit: 2cc53379404bfb499461add373ddb42c77d224b4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2cc53379404bfb499461add373...
Author: Ken Thomases ken@codeweavers.com Date: Tue Jan 14 01:25:03 2014 -0600
winemac: Consolidate code paths for clearing the OpenGL context.
We clear it if the context or the view is NULL. If the context is non-NULL, we want to disassociate the views of both the current and passed-in contexts, if they differ.
---
dlls/winemac.drv/cocoa_opengl.m | 44 ++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 24 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_opengl.m b/dlls/winemac.drv/cocoa_opengl.m index 752fb77..196da46 100644 --- a/dlls/winemac.drv/cocoa_opengl.m +++ b/dlls/winemac.drv/cocoa_opengl.m @@ -154,36 +154,28 @@ void macdrv_make_context_current(macdrv_opengl_context c, macdrv_view v) WineOpenGLContext *context = (WineOpenGLContext*)c; NSView* view = (NSView*)v;
- if (context) + if (context && view) { [context removeFromViews:NO]; - if (view) - { - macdrv_add_view_opengl_context(v, c); - - if (context.needsUpdate) - { - context.needsUpdate = FALSE; - [context setView:view]; - [context setLatentView:nil]; - } - else - { - if ([context view]) - [context clearDrawableLeavingSurfaceOnScreen]; - [context setLatentView:view]; - } + macdrv_add_view_opengl_context(v, c);
- [context makeCurrentContext]; - - if ([context view]) - [context clearToBlackIfNeeded]; + if (context.needsUpdate) + { + context.needsUpdate = FALSE; + [context setView:view]; + [context setLatentView:nil]; } else { - [WineOpenGLContext clearCurrentContext]; - [context removeFromViews:YES]; + if ([context view]) + [context clearDrawableLeavingSurfaceOnScreen]; + [context setLatentView:view]; } + + [context makeCurrentContext]; + + if ([context view]) + [context clearToBlackIfNeeded]; } else { @@ -192,8 +184,12 @@ void macdrv_make_context_current(macdrv_opengl_context c, macdrv_view v) if ([currentContext isKindOfClass:[WineOpenGLContext class]]) { [WineOpenGLContext clearCurrentContext]; - [currentContext removeFromViews:YES]; + if (currentContext != context) + [currentContext removeFromViews:YES]; } + + if (context) + [context removeFromViews:YES]; }
[pool release];