From: Connor McAdams cmcadams@codeweavers.com
Signed-off-by: Connor McAdams cmcadams@codeweavers.com --- dlls/d3d8/tests/device.c | 2 +- dlls/d3d9/device.c | 1 + dlls/d3d9/tests/device.c | 2 +- dlls/wined3d/device.c | 2 ++ 4 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c index d88fa2abc19..10c06b17ba7 100644 --- a/dlls/d3d8/tests/device.c +++ b/dlls/d3d8/tests/device.c @@ -2180,7 +2180,7 @@ static void test_scene(void)
reset_device(device, NULL); hr = IDirect3DDevice8_EndScene(device); - todo_wine ok(hr == D3DERR_INVALIDCALL, "Got hr %#lx.\n", hr); + ok(hr == D3DERR_INVALIDCALL, "Got hr %#lx.\n", hr);
hr = IDirect3DDevice8_BeginScene(device); ok(hr == S_OK, "Got hr %#lx.\n", hr); diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index e5b5463dbba..b6a3e1f58ba 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -1185,6 +1185,7 @@ static HRESULT d3d9_device_reset(struct d3d9_device *device, surface->parent_device = &device->IDirect3DDevice9Ex_iface; }
+ device->in_scene = FALSE; device->device_state = D3D9_DEVICE_STATE_OK;
if (extended) diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index 0cd290367b5..62f308e0734 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -2724,7 +2724,7 @@ static void test_scene(void)
reset_device(device, NULL); hr = IDirect3DDevice9_EndScene(device); - todo_wine ok(hr == D3DERR_INVALIDCALL, "Got hr %#lx.\n", hr); + ok(hr == D3DERR_INVALIDCALL, "Got hr %#lx.\n", hr);
hr = IDirect3DDevice9_BeginScene(device); ok(hr == S_OK, "Got hr %#lx.\n", hr); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index e445679ec2f..a9a8e7e54cb 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -5233,6 +5233,8 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device, if (reset_state) { TRACE("Resetting state.\n"); + if (device->inScene) + wined3d_device_end_scene(device); wined3d_device_context_emit_reset_state(&device->cs->c, false); state_cleanup(state);