From eb355ece4aeb6a1e6fb348c3662378ab76809667 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Sun, 14 Mar 2010 12:59:29 +0100 Subject: [PATCH] d3d9: Fix test failures on Windows 7. --- dlls/d3d9/tests/buffer.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dlls/d3d9/tests/buffer.c b/dlls/d3d9/tests/buffer.c index 134712166c..57a64951eb 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)) { -- 2.33.8