From: Anton Baskanov baskanov@gmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57599 --- dlls/ddraw/surface.c | 4 ++++ dlls/ddraw/tests/ddraw1.c | 8 ++++---- dlls/ddraw/tests/ddraw2.c | 8 ++++---- dlls/ddraw/tests/ddraw4.c | 8 ++++---- dlls/ddraw/tests/ddraw7.c | 8 ++++---- 5 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 8cdaa48b753..319b8ea37e1 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -647,6 +647,10 @@ static ULONG ddraw_surface_release_iface(struct ddraw_surface *This) /* Release the device only after anything that may reference it (the * wined3d texture and rendertarget view in particular) is released. */ wined3d_device_decref(wined3d_device); + + if ((This->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) && (This->ddraw->flags & DDRAW_RESTORE_MODE) + && This->ddraw->swapchain_window) + RedrawWindow(This->ddraw->swapchain_window, NULL, NULL, RDW_INVALIDATE | RDW_ERASE | RDW_FRAME); }
return iface_count; diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index 77d1ab2a74a..7ccea8e2f60 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -3129,7 +3129,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3398,7 +3398,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3586,7 +3586,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3706,7 +3706,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
hr = IDirectDraw_RestoreDisplayMode(ddraw); diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index 055fe03d0b3..7889d406fe3 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -3226,7 +3226,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3495,7 +3495,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3683,7 +3683,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3850,7 +3850,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
hr = IDirectDraw2_RestoreDisplayMode(ddraw); diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 0381cbcbbe1..4360a7fa509 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -3466,7 +3466,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface4_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3731,7 +3731,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface4_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3919,7 +3919,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface4_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -4086,7 +4086,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface4_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
hr = IDirectDraw4_RestoreDisplayMode(ddraw); diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index d40fc548fb7..162439260cc 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -3238,7 +3238,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface7_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3503,7 +3503,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface7_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3691,7 +3691,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface7_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); @@ -3858,7 +3858,7 @@ static void test_coop_level_mode_set(void) expect_messages = release_messages; IDirectDrawSurface7_Release(primary); flush_events(); - todo_wine ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); + ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message); expect_messages = NULL;
hr = IDirectDraw7_RestoreDisplayMode(ddraw);