From: Anton Baskanov baskanov@gmail.com
--- dlls/ddraw/tests/ddraw1.c | 67 +++++++++++++++++++++++++++++++++ dlls/ddraw/tests/ddraw2.c | 78 +++++++++++++++++++++++++++++++++++++++ dlls/ddraw/tests/ddraw4.c | 78 +++++++++++++++++++++++++++++++++++++++ dlls/ddraw/tests/ddraw7.c | 78 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 301 insertions(+)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c index 167ef8a3dc4..77d1ab2a74a 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); @@ -3242,7 +3254,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3288,7 +3306,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3369,7 +3393,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 +3447,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(); + 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 +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; IDirectDrawSurface_Release(primary); + flush_events(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3539,7 +3581,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 +3635,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(); + 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 +3666,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3641,7 +3701,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);
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c index de4778e8d24..055fe03d0b3 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); @@ -3339,7 +3351,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3385,7 +3403,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3466,7 +3490,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 +3544,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(); + 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 +3598,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3636,7 +3678,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 +3732,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(); + 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 +3763,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3755,7 +3815,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(); + 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 +3845,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); @@ -3830,7 +3902,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ref = IDirectDraw2_Release(ddraw); ok(!ref, "Unexpected refcount %lu.\n", ref); diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c index 96bdbf37183..0381cbcbbe1 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); @@ -3582,7 +3594,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3628,7 +3646,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3702,7 +3726,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 +3780,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(); + 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 +3834,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3872,7 +3914,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 +3968,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(); + 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 +3999,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3991,7 +4051,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(); + 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 +4081,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); @@ -4066,7 +4138,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ref = IDirectDraw4_Release(ddraw); ok(!ref, "Unexpected refcount %lu.\n", ref); diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c index 343ca652214..d40fc548fb7 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); @@ -3354,7 +3366,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
/* For Wine. */ change_ret = ChangeDisplaySettingsW(NULL, CDS_FULLSCREEN); @@ -3400,7 +3418,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3474,7 +3498,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 +3552,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(); + 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 +3606,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
memset(&ddsd, 0, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); @@ -3644,7 +3686,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 +3740,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(); + 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 +3771,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
GetWindowRect(window, &r); flaky /* win8 */ @@ -3763,7 +3823,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(); + 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 +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; 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); @@ -3838,7 +3910,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(); + ok(expect_messages->message == WM_PAINT, "Unexpected WM_PAINT.\n"); + expect_messages = NULL;
ref = IDirectDraw7_Release(ddraw); ok(!ref, "Unexpected refcount %lu.\n", ref);