mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-05 18:01:34 +00:00
d3d9: Forbid display mode and back buffer mismatch in IDirect3DDevice9Ex_ResetEx().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
c1cc6e45da
commit
53714bd6a8
2 changed files with 23 additions and 3 deletions
|
@ -3455,6 +3455,15 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH d3d9_device_ResetEx(IDirect3DDevice9Ex *
|
|||
return D3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
if (mode && (mode->Width != present_parameters->BackBufferWidth
|
||||
|| mode->Height != present_parameters->BackBufferHeight))
|
||||
{
|
||||
WARN("Mode and back buffer mismatch (mode %ux%u, backbuffer %ux%u).\n",
|
||||
mode->Width, mode->Height,
|
||||
present_parameters->BackBufferWidth, present_parameters->BackBufferHeight);
|
||||
return D3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
return d3d9_device_reset(device, present_parameters, mode);
|
||||
}
|
||||
|
||||
|
|
|
@ -1563,15 +1563,26 @@ static void test_reset_ex(void)
|
|||
d3dpp.BackBufferWidth = modes[i].Width - 10;
|
||||
d3dpp.BackBufferHeight = modes[i].Height - 10;
|
||||
hr = IDirect3DDevice9Ex_ResetEx(device, &d3dpp, &modes[i]);
|
||||
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
d3dpp.BackBufferWidth = modes[i].Width - 1;
|
||||
d3dpp.BackBufferHeight = modes[i].Height;
|
||||
hr = IDirect3DDevice9Ex_ResetEx(device, &d3dpp, &modes[i]);
|
||||
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
d3dpp.BackBufferWidth = modes[i].Width;
|
||||
d3dpp.BackBufferHeight = modes[i].Height - 1;
|
||||
hr = IDirect3DDevice9Ex_ResetEx(device, &d3dpp, &modes[i]);
|
||||
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
d3dpp.BackBufferWidth = 0;
|
||||
d3dpp.BackBufferHeight = 0;
|
||||
hr = IDirect3DDevice9Ex_ResetEx(device, &d3dpp, &modes[i]);
|
||||
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
d3dpp.BackBufferWidth = modes[i].Width;
|
||||
d3dpp.BackBufferHeight = modes[i].Height;
|
||||
mode2 = modes[i];
|
||||
mode2.Width = 0;
|
||||
mode2.Height = 0;
|
||||
hr = IDirect3DDevice9Ex_ResetEx(device, &d3dpp, &mode2);
|
||||
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
|
||||
hr = IDirect3DDevice9Ex_TestCooperativeLevel(device);
|
||||
ok(hr == D3D_OK, "Got unexpected cooperative level %#x.\n", hr);
|
||||
|
||||
|
|
Loading…
Reference in a new issue