Stefan Dösinger : d3d9: Fix test failures on Windows 7 .

Alexandre Julliard julliard at winehq.org
Tue Mar 16 11:49:21 CDT 2010


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Sun Mar 14 12:59:29 2010 +0100

d3d9: Fix test failures on Windows 7.

---

 dlls/d3d9/tests/buffer.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/dlls/d3d9/tests/buffer.c b/dlls/d3d9/tests/buffer.c
index 1347121..57a6495 100644
--- a/dlls/d3d9/tests/buffer.c
+++ b/dlls/d3d9/tests/buffer.c
@@ -78,7 +78,7 @@ static void lock_flag_test(IDirect3DDevice9 *device)
     {
         DWORD flags;
         const char *debug_string;
-        HRESULT result;
+        HRESULT win7_result;
     }
     test_data[] =
     {
@@ -87,9 +87,9 @@ static void lock_flag_test(IDirect3DDevice9 *device)
         {D3DLOCK_NOOVERWRITE,                       "D3DLOCK_NOOVERWRITE",                      D3D_OK             },
         {D3DLOCK_NOOVERWRITE | D3DLOCK_DISCARD,     "D3DLOCK_NOOVERWRITE | D3DLOCK_DISCARD",    D3D_OK             },
         {D3DLOCK_NOOVERWRITE | D3DLOCK_READONLY,    "D3DLOCK_NOOVERWRITE | D3DLOCK_READONLY",   D3D_OK             },
-        {D3DLOCK_READONLY    | D3DLOCK_DISCARD,     "D3DLOCK_READONLY | D3DLOCK_DISCARD",       D3D_OK             },
+        {D3DLOCK_READONLY    | D3DLOCK_DISCARD,     "D3DLOCK_READONLY | D3DLOCK_DISCARD",       D3DERR_INVALIDCALL },
         /* Completely bogous flags aren't an error */
-        {0xdeadbeef,                                "0xdeadbeef",                               D3D_OK             },
+        {0xdeadbeef,                                "0xdeadbeef",                               D3DERR_INVALIDCALL },
     };
 
     hr = IDirect3DDevice9_CreateVertexBuffer(device, 1024, D3DUSAGE_DYNAMIC, 0, D3DPOOL_DEFAULT, &buffer, NULL);
@@ -98,8 +98,12 @@ static void lock_flag_test(IDirect3DDevice9 *device)
     for(i = 0; i < (sizeof(test_data) / sizeof(*test_data)); i++)
     {
         hr = IDirect3DVertexBuffer9_Lock(buffer, 0, 0, &data, test_data[i].flags);
-        ok(hr == test_data[i].result, "Lock flags %s returned 0x%08x, expected 0x%08x\n",
-            test_data[i].debug_string, hr, test_data[i].result);
+        /* Windows XP always returns D3D_OK even with flags that don't make sense. Windows 7 returns
+         * an error. At least one game(Shaiya) depends on the Windows XP result, so mark the Windows 7
+         * behavior as broken()
+         */
+        ok(hr == D3D_OK || broken(hr == test_data[i].win7_result), "Lock flags %s returned 0x%08x, expected D3D_OK\n",
+            test_data[i].debug_string, hr);
 
         if(SUCCEEDED(hr))
         {




More information about the wine-cvs mailing list