[PATCH 5/5] wined3d: Get rid of the silly refcount for the "fake" GL context.

Henri Verbeet hverbeet at codeweavers.com
Thu Jul 2 03:01:38 CDT 2009


---
 dlls/wined3d/directx.c |   35 +++++++++++++----------------------
 1 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index a30da67..f39d35e 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -197,7 +197,6 @@ glMultiTexCoordFunc multi_texcoord_funcs[WINED3D_FFP_EMIT_COUNT];
  * function query some info from GL.
  */
 
-static int             wined3d_fake_gl_context_ref = 0;
 static BOOL            wined3d_fake_gl_context_available = FALSE;
 static HDC             wined3d_fake_gl_context_hdc = NULL;
 static HWND            wined3d_fake_gl_context_hwnd = NULL;
@@ -224,26 +223,22 @@ static void WineD3D_ReleaseFakeGLContext(void) {
     }
 
     glCtx = pwglGetCurrentContext();
-
-    TRACE_(d3d_caps)("decrementing ref from %i\n", wined3d_fake_gl_context_ref);
-    if (0 == (--wined3d_fake_gl_context_ref) ) {
-        if (glCtx)
+    if (glCtx)
+    {
+        TRACE_(d3d_caps)("destroying fake GL context\n");
+        if (!pwglMakeCurrent(NULL, NULL))
         {
-            TRACE_(d3d_caps)("destroying fake GL context\n");
-            if (!pwglMakeCurrent(NULL, NULL))
-            {
-                ERR("Failed to disable fake GL context.\n");
-            }
-            pwglDeleteContext(glCtx);
+            ERR("Failed to disable fake GL context.\n");
         }
-        if(wined3d_fake_gl_context_hdc)
-            ReleaseDC(wined3d_fake_gl_context_hwnd, wined3d_fake_gl_context_hdc);
-        wined3d_fake_gl_context_hdc = NULL; /* Make sure we don't think that it is still around */
-        if(wined3d_fake_gl_context_hwnd)
-            DestroyWindow(wined3d_fake_gl_context_hwnd);
-        wined3d_fake_gl_context_hwnd = NULL;
-        wined3d_fake_gl_context_available = FALSE;
+        pwglDeleteContext(glCtx);
     }
+    if (wined3d_fake_gl_context_hdc)
+        ReleaseDC(wined3d_fake_gl_context_hwnd, wined3d_fake_gl_context_hdc);
+    wined3d_fake_gl_context_hdc = NULL; /* Make sure we don't think that it is still around */
+    if (wined3d_fake_gl_context_hwnd)
+        DestroyWindow(wined3d_fake_gl_context_hwnd);
+    wined3d_fake_gl_context_hwnd = NULL;
+    wined3d_fake_gl_context_available = FALSE;
 
     LeaveCriticalSection(&wined3d_fake_gl_context_cs);
 }
@@ -256,7 +251,6 @@ static BOOL WineD3D_CreateFakeGLContext(void) {
     EnterCriticalSection(&wined3d_fake_gl_context_cs);
 
     TRACE("getting context...\n");
-    if(wined3d_fake_gl_context_ref > 0) goto ret;
 
     /* We need a fake window as a hdc retrieved using GetDC(0) can't be used for much GL purposes. */
     wined3d_fake_gl_context_hwnd = CreateWindowA(WINED3D_OPENGL_WINDOW_CLASS_NAME, "WineD3D fake window",
@@ -309,9 +303,6 @@ static BOOL WineD3D_CreateFakeGLContext(void) {
     }
     context_set_last_device(NULL);
 
-  ret:
-    TRACE("incrementing ref from %i\n", wined3d_fake_gl_context_ref);
-    wined3d_fake_gl_context_ref++;
     wined3d_fake_gl_context_available = TRUE;
     LeaveCriticalSection(&wined3d_fake_gl_context_cs);
     return TRUE;
-- 
1.6.0.6




More information about the wine-patches mailing list