Roderick Colenbrander : opengl32: Add a wglShareLists test.

Alexandre Julliard julliard at winehq.org
Tue May 12 09:08:46 CDT 2009


Module: wine
Branch: master
Commit: 03c6a0d9d1ba17be8ba8ea15b167bd2b80e915da
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=03c6a0d9d1ba17be8ba8ea15b167bd2b80e915da

Author: Roderick Colenbrander <thunderbird2k at gmail.com>
Date:   Mon May 11 22:12:10 2009 +0200

opengl32: Add a wglShareLists test.

---

 dlls/opengl32/tests/opengl.c |   54 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c
index 49659eb..48a75f8 100644
--- a/dlls/opengl32/tests/opengl.c
+++ b/dlls/opengl32/tests/opengl.c
@@ -285,6 +285,59 @@ static void test_setpixelformat(HDC winhdc)
     }
 }
 
+static void test_sharelists(HDC winhdc)
+{
+    HGLRC hglrc1, hglrc2, hglrc3;
+    int res;
+
+    hglrc1 = wglCreateContext(winhdc);
+    res = wglShareLists(0, 0);
+    ok(res == FALSE, "Sharing display lists for no contexts passed!\n");
+
+    /* Test 1: Create a context and just share lists without doing anything special */
+    hglrc2 = wglCreateContext(winhdc);
+    if(hglrc2)
+    {
+        res = wglShareLists(hglrc1, hglrc2);
+        ok(res, "Sharing of display lists failed\n");
+        wglDeleteContext(hglrc2);
+    }
+
+    /* Test 2: Share display lists with a 'destination' context which has been made current */
+    hglrc2 = wglCreateContext(winhdc);
+    if(hglrc2)
+    {
+        res = wglMakeCurrent(winhdc, hglrc2);
+        ok(res, "Make current failed\n");
+        res = wglShareLists(hglrc1, hglrc2);
+        todo_wine ok(res, "Sharing display lists with a destination context which has been made current passed\n");
+        wglMakeCurrent(0, 0);
+        wglDeleteContext(hglrc2);
+    }
+
+    /* Test 3: Share display lists with a context which already shares display lists with another context.
+     * According to MSDN the second paramater can't share any display lists but some buggy drivers might allow it */
+    hglrc3 = wglCreateContext(winhdc);
+    if(hglrc3)
+    {
+        res = wglShareLists(hglrc3, hglrc1);
+        ok(res == FALSE, "Sharing of display lists failed for a context which already shared lists before\n");
+        wglDeleteContext(hglrc3);
+    }
+
+    /* Test 4: Share display lists with a 'source' context which has been made current */
+    hglrc2 = wglCreateContext(winhdc);
+    if(hglrc2)
+    {
+        res = wglMakeCurrent(winhdc, hglrc1);
+        ok(res, "Make current failed\n");
+        res = wglShareLists(hglrc1, hglrc2);
+        ok(res, "Sharing display lists with a source context which has been made current passed\n");
+        wglMakeCurrent(0, 0);
+        wglDeleteContext(hglrc2);
+    }
+}
+
 static void test_makecurrent(HDC winhdc)
 {
     BOOL ret;
@@ -601,6 +654,7 @@ START_TEST(opengl)
 
         test_makecurrent(hdc);
         test_setpixelformat(hdc);
+        test_sharelists(hdc);
         test_colorbits(hdc);
         test_gdi_dbuf(hdc);
 




More information about the wine-cvs mailing list