Module: wine Branch: master Commit: 69138c85edbc5c38fccb27e0f93b8e85aa26bcc5 URL: https://gitlab.winehq.org/wine/wine/-/commit/69138c85edbc5c38fccb27e0f93b8e8...
Author: Paul Gofman pgofman@codeweavers.com Date: Tue Jun 18 12:52:54 2024 -0600
ddraw: Preserve d3d device state in ddraw_surface_create().
---
dlls/ddraw/surface.c | 18 +----------------- dlls/ddraw/tests/ddraw2.c | 4 ++-- dlls/ddraw/tests/ddraw4.c | 4 ++-- dlls/ddraw/tests/ddraw7.c | 8 ++++---- 4 files changed, 9 insertions(+), 25 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 71179b01a0b..203f02bbd2d 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -6771,35 +6771,19 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_ if (ddraw->cooperative_level & DDSCL_EXCLUSIVE) { struct wined3d_swapchain_desc swapchain_desc; - struct d3d_device *device;
wined3d_swapchain_get_desc(ddraw->wined3d_swapchain, &swapchain_desc); swapchain_desc.backbuffer_width = mode.width; swapchain_desc.backbuffer_height = mode.height; swapchain_desc.backbuffer_format = mode.format_id;
- LIST_FOR_EACH_ENTRY(device, &ddraw->d3ddevice_list, struct d3d_device, ddraw_entry) - { - if (device->recording) - wined3d_stateblock_decref(device->recording); - device->recording = NULL; - device->update_state = device->state; - wined3d_stateblock_reset(device->state); - } - if (FAILED(hr = wined3d_device_reset(ddraw->wined3d_device, - &swapchain_desc, NULL, ddraw_reset_enum_callback, TRUE))) + &swapchain_desc, NULL, ddraw_reset_enum_callback, FALSE))) { ERR("Failed to reset device.\n"); free(texture); return hr_ddraw_from_wined3d(hr); } - - LIST_FOR_EACH_ENTRY(device, &ddraw->d3ddevice_list, struct d3d_device, ddraw_entry) - { - wined3d_stateblock_set_render_state(device->state, WINED3D_RS_ZENABLE, - !!swapchain_desc.enable_auto_depth_stencil); - } } }
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index 79ffe51a6f8..66fceafbc8d 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -16705,10 +16705,10 @@ static void test_d3d_state_reset(void)
hr = IDirect3DDevice2_GetRenderState(device, D3DRENDERSTATE_FOGCOLOR, &state); ok(hr == DD_OK, "got %#lx.\n", hr); - todo_wine ok(state == 0x00282828, "got %#lx.\n", state); + ok(state == 0x00282828, "got %#lx.\n", state); hr = IDirect3DDevice2_GetRenderState(device, D3DRENDERSTATE_ZENABLE, &state); ok(hr == DD_OK, "got %#lx.\n", hr); - todo_wine ok(state == TRUE, "got %#lx.\n", state); + ok(state == TRUE, "got %#lx.\n", state);
hr = IDirectDraw2_SetCooperativeLevel(ddraw, NULL, DDSCL_NORMAL); ok(hr == DD_OK, "got %#lx.\n", hr); diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 278d2b21da0..a952eb683a5 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -19809,10 +19809,10 @@ static void test_d3d_state_reset(void)
hr = IDirect3DDevice3_GetRenderState(device, D3DRENDERSTATE_FOGCOLOR, &state); ok(hr == DD_OK, "got %#lx.\n", hr); - todo_wine ok(state == 0x00282828, "got %#lx.\n", state); + ok(state == 0x00282828, "got %#lx.\n", state); hr = IDirect3DDevice3_GetRenderState(device, D3DRENDERSTATE_ZENABLE, &state); ok(hr == DD_OK, "got %#lx.\n", hr); - todo_wine ok(state == TRUE, "got %#lx.\n", state); + ok(state == TRUE, "got %#lx.\n", state);
hr = IDirectDraw4_SetCooperativeLevel(ddraw, NULL, DDSCL_NORMAL); ok(hr == DD_OK, "got %#lx.\n", hr); diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 709030ecdbe..04fe5a2049b 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -20251,15 +20251,15 @@ static void test_d3d_state_reset(void)
hr = IDirect3DDevice7_GetViewport(device, &vp2); ok(hr == DD_OK, "got %#lx.\n", hr); - todo_wine ok(vp2.dwWidth == vp1.dwWidth, "got %ld, expected %ld.\n", vp2.dwWidth, vp1.dwWidth); - todo_wine ok(vp2.dwHeight == vp1.dwHeight, "got %ld, expected %ld.\n", vp2.dwHeight, vp1.dwHeight); + ok(vp2.dwWidth == vp1.dwWidth, "got %ld, expected %ld.\n", vp2.dwWidth, vp1.dwWidth); + ok(vp2.dwHeight == vp1.dwHeight, "got %ld, expected %ld.\n", vp2.dwHeight, vp1.dwHeight);
hr = IDirect3DDevice7_GetRenderState(device, D3DRENDERSTATE_FOGCOLOR, &state); ok(hr == DD_OK, "got %#lx.\n", hr); - todo_wine ok(state == 0x00282828, "got %#lx.\n", state); + ok(state == 0x00282828, "got %#lx.\n", state); hr = IDirect3DDevice7_GetRenderState(device, D3DRENDERSTATE_ZENABLE, &state); ok(hr == DD_OK, "got %#lx.\n", hr); - todo_wine ok(state == TRUE, "got %#lx.\n", state); + ok(state == TRUE, "got %#lx.\n", state);
hr = IDirectDraw7_SetCooperativeLevel(ddraw, NULL, DDSCL_NORMAL); ok(hr == DD_OK, "got %#lx.\n", hr);