Commit 53714bd6 authored by Józef Kucia's avatar Józef Kucia Committed by Alexandre Julliard

d3d9: Forbid display mode and back buffer mismatch in IDirect3DDevice9Ex_ResetEx().

parent c1cc6e45
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment