Ken Thomases : winemac: Don' t defer attaching OpenGL context to view if it is backed by a window device .
Alexandre Julliard
julliard at winehq.org
Mon Mar 11 16:24:51 CDT 2013
Module: wine
Branch: master
Commit: 89a4e5a6d1c77646fd397e3419a91a08533bbfb4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=89a4e5a6d1c77646fd397e3419a91a08533bbfb4
Author: Ken Thomases <ken at codeweavers.com>
Date: Sun Mar 10 17:38:25 2013 -0500
winemac: Don't defer attaching OpenGL context to view if it is backed by a window device.
This fixes a problem with certain OpenGL programs which create a context very
briefly before destroying it, like while handling WM_PAINT.
---
dlls/winemac.drv/cocoa_opengl.m | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/dlls/winemac.drv/cocoa_opengl.m b/dlls/winemac.drv/cocoa_opengl.m
index 66eec63..5879b4d 100644
--- a/dlls/winemac.drv/cocoa_opengl.m
+++ b/dlls/winemac.drv/cocoa_opengl.m
@@ -21,6 +21,7 @@
#import "cocoa_opengl.h"
#include "macdrv_cocoa.h"
+#include "cocoa_app.h"
@interface WineOpenGLContext ()
@@ -97,8 +98,21 @@ void macdrv_make_context_current(macdrv_opengl_context c, macdrv_view v)
context.needsUpdate = FALSE;
if (view)
{
+ __block BOOL windowHasDevice;
+
macdrv_add_view_opengl_context(v, c);
- [context setLatentView:view];
+
+ OnMainThread(^{
+ windowHasDevice = [[view window] windowNumber] > 0;
+ });
+ if (windowHasDevice)
+ {
+ [context setView:view];
+ [context setLatentView:nil];
+ }
+ else
+ [context setLatentView:view];
+
[context makeCurrentContext];
}
else
More information about the wine-cvs
mailing list