Stefan Dösinger : ddrawex: Make the GetDC test more generic.

Alexandre Julliard julliard at winehq.org
Fri Jan 9 09:52:41 CST 2009


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Dec 18 16:16:33 2008 +0100

ddrawex: Make the GetDC test more generic.

---

 dlls/ddrawex/tests/surface.c |   73 ++++++++++++++++++++++--------------------
 1 files changed, 38 insertions(+), 35 deletions(-)

diff --git a/dlls/ddrawex/tests/surface.c b/dlls/ddrawex/tests/surface.c
index c8d519b..1edb9d5 100644
--- a/dlls/ddrawex/tests/surface.c
+++ b/dlls/ddrawex/tests/surface.c
@@ -68,10 +68,8 @@ static void dctest_surf(IDirectDrawSurface *surf, int ddsdver) {
     ok(hr == DDERR_NODC, "IDirectDrawSurface_ReleaseDC returned 0x%08x, expected DDERR_NODC\n", hr);
 }
 
-static void GetDCTest(void)
+static void GetDCTest_main(DDSURFACEDESC *ddsd, DDSURFACEDESC2 *ddsd2, void (*testfunc)(IDirectDrawSurface *surf, int ddsdver))
 {
-    DDSURFACEDESC ddsd;
-    DDSURFACEDESC2 ddsd2;
     IDirectDrawSurface *surf;
     IDirectDrawSurface2 *surf2;
     IDirectDrawSurface2 *surf3;
@@ -82,34 +80,21 @@ static void GetDCTest(void)
     IDirectDraw3 *dd3;
     IDirectDraw4 *dd4;
 
-    memset(&ddsd, 0, sizeof(ddsd));
-    ddsd.dwSize = sizeof(ddsd);
-    ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
-    ddsd.dwWidth = 64;
-    ddsd.dwHeight = 64;
-    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
-    memset(&ddsd2, 0, sizeof(ddsd2));
-    ddsd2.dwSize = sizeof(ddsd2);
-    ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
-    ddsd2.dwWidth = 64;
-    ddsd2.dwHeight = 64;
-    ddsd2.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
-
-    hr = IDirectDraw_CreateSurface(dd1, &ddsd, &surf, NULL);
+    hr = IDirectDraw_CreateSurface(dd1, ddsd, &surf, NULL);
     ok(hr == DD_OK, "IDirectDraw_CreateSurface failed: 0x%08x\n", hr);
-    dctest_surf(surf, 1);
+    testfunc(surf, 1);
     IDirectDrawSurface_Release(surf);
 
     hr = IDirectDraw_QueryInterface(dd1, &IID_IDirectDraw2, (void **) &dd2);
     ok(hr == DD_OK, "IDirectDraw_QueryInterface failed: 0x%08x\n", hr);
 
-    hr = IDirectDraw2_CreateSurface(dd2, &ddsd, &surf, NULL);
+    hr = IDirectDraw2_CreateSurface(dd2, ddsd, &surf, NULL);
     ok(hr == DD_OK, "IDirectDraw2_CreateSurface failed: 0x%08x\n", hr);
-    dctest_surf(surf, 1);
+    testfunc(surf, 1);
 
     hr = IDirectDrawSurface_QueryInterface(surf, &IID_IDirectDrawSurface2, (void **) &surf2);
     ok(hr == DD_OK, "IDirectDrawSurface_QueryInterface failed: 0x%08x\n", hr);
-    dctest_surf((IDirectDrawSurface *) surf2, 1);
+    testfunc((IDirectDrawSurface *) surf2, 1);
 
     IDirectDrawSurface2_Release(surf2);
     IDirectDrawSurface_Release(surf);
@@ -118,28 +103,25 @@ static void GetDCTest(void)
     hr = IDirectDraw_QueryInterface(dd1, &IID_IDirectDraw3, (void **) &dd3);
     ok(hr == DD_OK, "IDirectDraw_QueryInterface failed: 0x%08x\n", hr);
 
-    if(SUCCEEDED(hr))
-    {
-        hr = IDirectDraw3_CreateSurface(dd3, &ddsd, &surf, NULL);
-        ok(hr == DD_OK, "IDirectDraw3_CreateSurface failed: 0x%08x\n", hr);
-        dctest_surf(surf, 1);
+    hr = IDirectDraw3_CreateSurface(dd3, ddsd, &surf, NULL);
+    ok(hr == DD_OK, "IDirectDraw3_CreateSurface failed: 0x%08x\n", hr);
+    testfunc(surf, 1);
 
-        hr = IDirectDrawSurface_QueryInterface(surf, &IID_IDirectDrawSurface3, (void **) &surf3);
-        ok(hr == DD_OK, "IDirectDrawSurface_QueryInterface failed: 0x%08x\n", hr);
-        dctest_surf((IDirectDrawSurface *) surf3, 1);
+    hr = IDirectDrawSurface_QueryInterface(surf, &IID_IDirectDrawSurface3, (void **) &surf3);
+    ok(hr == DD_OK, "IDirectDrawSurface_QueryInterface failed: 0x%08x\n", hr);
+    testfunc((IDirectDrawSurface *) surf3, 1);
 
-        IDirectDrawSurface3_Release(surf3);
-        IDirectDrawSurface_Release(surf);
-        IDirectDraw3_Release(dd3);
-    }
+    IDirectDrawSurface3_Release(surf3);
+    IDirectDrawSurface_Release(surf);
+    IDirectDraw3_Release(dd3);
 
     hr = IDirectDraw_QueryInterface(dd1, &IID_IDirectDraw4, (void **) &dd4);
     ok(hr == DD_OK, "IDirectDraw_QueryInterface failed: 0x%08x\n", hr);
 
     surf = NULL;
-    hr = IDirectDraw4_CreateSurface(dd4, &ddsd2, &surf4, NULL);
+    hr = IDirectDraw4_CreateSurface(dd4, ddsd2, &surf4, NULL);
     ok(hr == DD_OK, "IDirectDraw4_CreateSurface failed: 0x%08x\n", hr);
-    dctest_surf((IDirectDrawSurface *) surf4, 2);
+    testfunc((IDirectDrawSurface *) surf4, 2);
 
     IDirectDrawSurface4_Release(surf4);
     IDirectDraw4_Release(dd4);
@@ -147,6 +129,27 @@ static void GetDCTest(void)
     IDirectDraw_Release(dd1);
 }
 
+static void GetDCTest(void)
+{
+    DDSURFACEDESC ddsd;
+    DDSURFACEDESC2 ddsd2;
+
+    memset(&ddsd, 0, sizeof(ddsd));
+    ddsd.dwSize = sizeof(ddsd);
+    ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
+    ddsd.dwWidth = 64;
+    ddsd.dwHeight = 64;
+    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+    memset(&ddsd2, 0, sizeof(ddsd2));
+    ddsd2.dwSize = sizeof(ddsd2);
+    ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
+    ddsd2.dwWidth = 64;
+    ddsd2.dwHeight = 64;
+    ddsd2.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+
+    GetDCTest_main(&ddsd, &ddsd2, dctest_surf);
+}
+
 static void CapsTest(void)
 {
     DDSURFACEDESC ddsd;




More information about the wine-cvs mailing list