[3/4] ddraw: fix DDSCAPS_3DDEVICE surfaces always setting DDSCAPS_VISIBLE

Ričardas Barkauskas miegalius at gmail.com
Sun Oct 24 15:01:08 CDT 2010


Ričardas Barkauskas
REalm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20101024/584ec528/attachment.htm>
-------------- next part --------------
From 0dd8a5de17ea841575b8bcf11bd701c5b8885942 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ri=C4=8Dardas=20Barkauskas?= <miegalius at gmail.com>
Date: Sun, 24 Oct 2010 22:36:43 +0300
Subject: ddraw: fix DDSCAPS_3DDEVICE surfaces always setting DDSCAPS_VISIBLE

---
 dlls/ddraw/surface.c        |    7 ++++++-
 dlls/ddraw/tests/d3d.c      |    2 +-
 dlls/ddraw/tests/dsurface.c |    4 ++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 5bd219f..2878a56 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -3511,12 +3511,17 @@ HRESULT ddraw_surface_init(IDirectDrawSurfaceImpl *surface, IDirectDrawImpl *ddr
         desc->ddsCaps.dwCaps |= DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY;
     }
 
-    if (desc->ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE))
+    if (desc->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
     {
         usage |= WINED3DUSAGE_RENDERTARGET;
         desc->ddsCaps.dwCaps |= DDSCAPS_VISIBLE;
     }
 
+    if (desc->ddsCaps.dwCaps & DDSCAPS_3DDEVICE)
+    {
+        usage |= WINED3DUSAGE_RENDERTARGET;
+    }
+
     if (desc->ddsCaps.dwCaps & (DDSCAPS_OVERLAY))
     {
         usage |= WINED3DUSAGE_OVERLAY;
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
index 8088188..f144543 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -3593,7 +3593,7 @@ static void BackBuffer3DCreateSurfaceTest(void)
     {
         hr = IDirectDrawSurface_GetSurfaceDesc(surf, &created_ddsd);
         ok(SUCCEEDED(hr), "IDirectDraw_GetSurfaceDesc failed: 0x%08x\n", hr);
-        todo_wine ok(created_ddsd.ddsCaps.dwCaps == expected_caps,
+        ok(created_ddsd.ddsCaps.dwCaps == expected_caps,
            "GetSurfaceDesc returned caps %x, expected %x\n", created_ddsd.ddsCaps.dwCaps,
            expected_caps);
 
diff --git a/dlls/ddraw/tests/dsurface.c b/dlls/ddraw/tests/dsurface.c
index 355c9d2..14fb87c 100644
--- a/dlls/ddraw/tests/dsurface.c
+++ b/dlls/ddraw/tests/dsurface.c
@@ -2916,7 +2916,7 @@ static void SurfaceCapsTest(void)
             hr = IDirectDrawSurface_GetSurfaceDesc(surface1, &desc);
             ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc failed with %08x\n", hr);
 
-            if (!(create_caps[i] & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE)))
+            if (!(create_caps[i] & DDSCAPS_PRIMARYSURFACE))
                 ok(desc.ddsCaps.dwCaps == expected_caps[i],
                     "GetSurfaceDesc test %d returned caps %x, expected %x\n", i,
                     desc.ddsCaps.dwCaps, expected_caps[i]);
@@ -2971,7 +2971,7 @@ static void SurfaceCapsTest(void)
                 hr = IDirectDrawSurface7_GetSurfaceDesc(surface7, &desc2);
                 ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc failed with %08x\n", hr);
 
-                if (!(create_caps[i] & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE)))
+                if (!(create_caps[i] & DDSCAPS_PRIMARYSURFACE))
                     ok(desc2.ddsCaps.dwCaps == expected_caps[i],
                         "GetSurfaceDesc test %d returned caps %x, expected %x\n", i,
                         desc2.ddsCaps.dwCaps, expected_caps[i]);
-- 
1.7.1


More information about the wine-patches mailing list