Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57599
-- v2: ddraw: Invalidate the window when the primary surface is released. ddraw/tests: Test that releasing a primary surface invalidates the window.
From: Anton Baskanov baskanov@gmail.com
--- dlls/ddraw/tests/ddraw1.c | 75 +++++++++++++++++++++++++++++++++ dlls/ddraw/tests/ddraw2.c | 89 +++++++++++++++++++++++++++++++++++++++ dlls/ddraw/tests/ddraw4.c | 89 +++++++++++++++++++++++++++++++++++++++ dlls/ddraw/tests/ddraw7.c | 89 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 342 insertions(+)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index 167ef8a3dc4..d7ead313166 100644 --- a/dlls/ddraw/tests/ddraw1.c +++ b/dlls/ddraw/tests/ddraw1.c @@ -3015,6 +3015,12 @@ static void test_coop_level_mode_set(void) {0, FALSE, 0}, };
+ static const struct message release_messages[] = + { + {WM_PAINT, FALSE, 0}, + {0, FALSE, 0}, + }; + memset(&devmode, 0, sizeof(devmode)); devmode.dmSize = sizeof(devmode); ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); @@ -3118,7 +3124,13 @@ static void test_coop_level_mode_set(void) param.user32_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.user32_height, "Expected surface height %lu, got %lu.\n", param.user32_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3135,6 +3147,7 @@ static void test_coop_level_mode_set(void) param.ddraw_height, ddsd.dwHeight);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
@@ -3242,7 +3255,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3288,7 +3308,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3369,7 +3396,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3417,7 +3450,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3465,7 +3505,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3539,7 +3586,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3587,7 +3640,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3612,7 +3672,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3641,7 +3708,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL; + hr = IDirectDraw_RestoreDisplayMode(ddraw); ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#lx.\n", hr);
@@ -3649,6 +3723,7 @@ static void test_coop_level_mode_set(void) ok(!ref, "Unexpected refcount %lu.\n", ref);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index de4778e8d24..8d8d03861d2 100644 --- a/dlls/ddraw/tests/ddraw2.c +++ b/dlls/ddraw/tests/ddraw2.c @@ -3107,6 +3107,12 @@ static void test_coop_level_mode_set(void) {0, FALSE, 0}, };
+ static const struct message release_messages[] = + { + {WM_PAINT, FALSE, 0}, + {0, FALSE, 0}, + }; + memset(&devmode, 0, sizeof(devmode)); devmode.dmSize = sizeof(devmode); ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); @@ -3215,7 +3221,13 @@ static void test_coop_level_mode_set(void) param.user32_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.user32_height, "Expected surface height %lu, got %lu.\n", param.user32_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3232,6 +3244,7 @@ static void test_coop_level_mode_set(void) param.ddraw_height, ddsd.dwHeight);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
@@ -3339,7 +3352,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3385,7 +3405,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3466,7 +3493,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3514,7 +3547,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3562,7 +3602,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3636,7 +3683,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3684,7 +3737,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3709,7 +3769,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3755,7 +3822,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* The screen restore is a property of DDSCL_EXCLUSIVE */ hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL | DDSCL_FULLSCREEN); @@ -3779,7 +3853,13 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
hr = IDirectDraw2_RestoreDisplayMode(ddraw); ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#lx.\n", hr); @@ -3811,6 +3891,7 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, registry_mode.dmPelsHeight, screen_size2.cx, screen_size2.cy);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r)); GetWindowRect(window2, &r); @@ -3830,12 +3911,20 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ref = IDirectDraw2_Release(ddraw); ok(!ref, "Unexpected refcount %lu.\n", ref);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 96bdbf37183..1190b213490 100644 --- a/dlls/ddraw/tests/ddraw4.c +++ b/dlls/ddraw/tests/ddraw4.c @@ -3347,6 +3347,12 @@ static void test_coop_level_mode_set(void) {0, FALSE, 0}, };
+ static const struct message release_messages[] = + { + {WM_PAINT, FALSE, 0}, + {0, FALSE, 0}, + }; + memset(&devmode, 0, sizeof(devmode)); devmode.dmSize = sizeof(devmode); ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); @@ -3455,7 +3461,13 @@ static void test_coop_level_mode_set(void) param.user32_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.user32_height, "Expected surface height %lu, got %lu.\n", param.user32_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3472,6 +3484,7 @@ static void test_coop_level_mode_set(void) param.ddraw_height, ddsd.dwHeight);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
@@ -3582,7 +3595,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3628,7 +3648,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3702,7 +3729,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3750,7 +3783,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3798,7 +3838,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3872,7 +3919,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3920,7 +3973,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3945,7 +4005,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3991,7 +4058,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* The screen restore is a property of DDSCL_EXCLUSIVE */ hr = IDirectDraw4_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL | DDSCL_FULLSCREEN); @@ -4015,7 +4089,13 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
hr = IDirectDraw4_RestoreDisplayMode(ddraw); ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#lx.\n", hr); @@ -4047,6 +4127,7 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, registry_mode.dmPelsHeight, screen_size2.cx, screen_size2.cy);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r)); GetWindowRect(window2, &r); @@ -4066,12 +4147,20 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface4_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ref = IDirectDraw4_Release(ddraw); ok(!ref, "Unexpected refcount %lu.\n", ref);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 343ca652214..e99270e2427 100644 --- a/dlls/ddraw/tests/ddraw7.c +++ b/dlls/ddraw/tests/ddraw7.c @@ -3119,6 +3119,12 @@ static void test_coop_level_mode_set(void) {0, FALSE, 0}, };
+ static const struct message release_messages[] = + { + {WM_PAINT, FALSE, 0}, + {0, FALSE, 0}, + }; + memset(&devmode, 0, sizeof(devmode)); devmode.dmSize = sizeof(devmode); ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); @@ -3227,7 +3233,13 @@ static void test_coop_level_mode_set(void) param.user32_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.user32_height, "Expected surface height %lu, got %lu.\n", param.user32_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3244,6 +3256,7 @@ static void test_coop_level_mode_set(void) param.ddraw_height, ddsd.dwHeight);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
@@ -3354,7 +3367,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3400,7 +3420,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3474,7 +3501,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3522,7 +3555,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3570,7 +3610,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3644,7 +3691,13 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3692,7 +3745,14 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ret = EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &devmode); ok(ret, "Failed to get display mode.\n"); @@ -3717,7 +3777,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3763,7 +3830,14 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* The screen restore is a property of DDSCL_EXCLUSIVE */ hr = IDirectDraw7_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL | DDSCL_FULLSCREEN); @@ -3787,7 +3861,13 @@ static void test_coop_level_mode_set(void) param.ddraw_width, ddsd.dwWidth); ok(ddsd.dwHeight == param.ddraw_height, "Expected surface height %lu, got %lu.\n", param.ddraw_height, ddsd.dwHeight); + + flush_events(); + 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); + expect_messages = NULL;
hr = IDirectDraw7_RestoreDisplayMode(ddraw); ok(SUCCEEDED(hr), "RestoreDisplayMode failed, hr %#lx.\n", hr); @@ -3819,6 +3899,7 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, registry_mode.dmPelsHeight, screen_size2.cx, screen_size2.cy);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r)); GetWindowRect(window2, &r); @@ -3838,12 +3919,20 @@ static void test_coop_level_mode_set(void) registry_mode.dmPelsWidth, ddsd.dwWidth); ok(ddsd.dwHeight == registry_mode.dmPelsHeight, "Expected surface height %lu, got %lu.\n", registry_mode.dmPelsHeight, ddsd.dwHeight); + + flush_events(); + expect_messages = release_messages; IDirectDrawSurface7_Release(primary); + flush_events(); + flaky /* win10 21H2 with QXL driver */ + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ref = IDirectDraw7_Release(ddraw); ok(!ref, "Unexpected refcount %lu.\n", ref);
GetWindowRect(window, &r); + flaky /* win10 21H2 with QXL driver */ ok(EqualRect(&r, &ddraw_rect), "Expected %s, got %s.\n", wine_dbgstr_rect(&ddraw_rect), wine_dbgstr_rect(&r));
From: Anton Baskanov baskanov@gmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57599 --- dlls/ddraw/surface.c | 3 +++ 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, 19 insertions(+), 16 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 8cdaa48b753..8bf3d64f234 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -639,6 +639,9 @@ static ULONG ddraw_surface_release_iface(struct ddraw_surface *This) wined3d_mutex_unlock(); return iface_count; } + 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); ddraw_surface_cleanup(This); wined3d_mutex_unlock();
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index d7ead313166..eb7ab7e08af 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)); @@ -3401,7 +3401,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)); @@ -3591,7 +3591,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)); @@ -3713,7 +3713,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 8d8d03861d2..914ad6f632f 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)); @@ -3498,7 +3498,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)); @@ -3688,7 +3688,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)); @@ -3858,7 +3858,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 1190b213490..e3851144a1f 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)); @@ -3734,7 +3734,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)); @@ -3924,7 +3924,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)); @@ -4094,7 +4094,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 e99270e2427..d12d326a2af 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)); @@ -3506,7 +3506,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)); @@ -3696,7 +3696,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)); @@ -3866,7 +3866,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);
On Sun Jan 5 15:06:23 2025 +0000, Elizabeth Figura wrote:
I don't think you can safely access "This" there. Barring some reason I'm forgetting, it may have already been freed.
Moved it before `ddraw_surface_cleanup()`.
v2: - Marked intermittently failing tests as flaky. - Invalidate the window before `ddraw_surface_cleanup()`.
This merge request was approved by Elizabeth Figura.
This merge request was approved by Jan Sikorski.