Module: wine Branch: master Commit: eb355ece4aeb6a1e6fb348c3662378ab76809667 URL: http://source.winehq.org/git/wine.git/?a=commit;h=eb355ece4aeb6a1e6fb348c366...
Author: Stefan Dösinger stefan@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)) {