Stefan Dösinger : ddraw: Show that ddraw reads ddsCaps without DDSD_CAPS set.

Alexandre Julliard julliard at winehq.org
Wed Aug 31 13:19:25 CDT 2011


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Tue Aug 30 11:58:07 2011 +0200

ddraw: Show that ddraw reads ddsCaps without DDSD_CAPS set.

---

 dlls/ddraw/tests/dsurface.c |   45 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/dlls/ddraw/tests/dsurface.c b/dlls/ddraw/tests/dsurface.c
index 1bbf5cc..a257878 100644
--- a/dlls/ddraw/tests/dsurface.c
+++ b/dlls/ddraw/tests/dsurface.c
@@ -3801,6 +3801,50 @@ static void CreateSurfaceBadCapsSizeTest(void)
     IDirectDraw7_Release(dd7);
 }
 
+static void reset_ddsd(DDSURFACEDESC *ddsd)
+{
+    memset(ddsd, 0, sizeof(*ddsd));
+    ddsd->dwSize = sizeof(*ddsd);
+}
+
+static void no_ddsd_caps_test(void)
+{
+    DDSURFACEDESC ddsd;
+    HRESULT hr;
+    IDirectDrawSurface *surface;
+
+    reset_ddsd(&ddsd);
+    ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT;
+    ddsd.dwWidth = 128;
+    ddsd.dwHeight = 128;
+    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+    hr = IDirectDraw_CreateSurface(lpDD, &ddsd, &surface, NULL);
+    ok(SUCCEEDED(hr), "IDirectDraw_CreateSurface failed, hr %#x.\n", hr);
+    reset_ddsd(&ddsd);
+    hr = IDirectDrawSurface_GetSurfaceDesc(surface, &ddsd);
+    IDirectDrawSurface_Release(surface);
+    ok(ddsd.dwFlags & DDSD_CAPS, "DDSD_CAPS is not set\n");
+    ok(ddsd.ddsCaps.dwCaps & DDSCAPS_OFFSCREENPLAIN, "DDSCAPS_OFFSCREENPLAIN is not set\n");
+
+    reset_ddsd(&ddsd);
+    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
+    hr = IDirectDraw_CreateSurface(lpDD, &ddsd, &surface, NULL);
+    ok(SUCCEEDED(hr), "IDirectDraw_CreateSurface failed, hr %#x.\n", hr);
+    reset_ddsd(&ddsd);
+    hr = IDirectDrawSurface_GetSurfaceDesc(surface, &ddsd);
+    IDirectDrawSurface_Release(surface);
+    ok(ddsd.dwFlags & DDSD_CAPS, "DDSD_CAPS is not set\n");
+    ok(ddsd.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE, "DDSCAPS_OFFSCREENPLAIN is not set\n");
+
+    reset_ddsd(&ddsd);
+    ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT;
+    ddsd.dwWidth = 128;
+    ddsd.dwHeight = 128;
+    ddsd.ddsCaps.dwCaps = DDSCAPS_VIDEOMEMORY | DDSCAPS_SYSTEMMEMORY;
+    hr = IDirectDraw_CreateSurface(lpDD, &ddsd, &surface, NULL);
+    ok(hr == DDERR_INVALIDCAPS, "IDirectDraw_CreateSurface returned %#x, expected DDERR_INVALIDCAPS.\n", hr);
+}
+
 START_TEST(dsurface)
 {
     HRESULT ret;
@@ -3857,5 +3901,6 @@ START_TEST(dsurface)
     BackBufferCreateSurfaceTest();
     BackBufferAttachmentFlipTest();
     CreateSurfaceBadCapsSizeTest();
+    no_ddsd_caps_test();
     ReleaseDirectDraw();
 }




More information about the wine-cvs mailing list