From f8784c6eb07453ca23fa493abd4bf6a979628a7e Mon Sep 17 00:00:00 2001 From: Zhiyi Zhang Date: Mon, 17 May 2021 15:20:21 +0800 Subject: [PATCH] user32/tests: Do not change adapters to every available modes. This reduce the time to run the monitor test from 6 minutes to 25 seconds. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50086 Signed-off-by: Zhiyi Zhang Signed-off-by: Alexandre Julliard (cherry picked from commit cad102465ddb1151cdac4ec073e734dfaee0d85c) Signed-off-by: Michael Stefaniuc --- dlls/user32/tests/monitor.c | 39 ++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c index 5e4cc9d154f..a587c7c6b16 100644 --- a/dlls/user32/tests/monitor.c +++ b/dlls/user32/tests/monitor.c @@ -333,6 +333,7 @@ static void test_ChangeDisplaySettingsEx(void) DISPLAY_DEVICEA dd; POINTL position; DEVMODEW dmW; + BOOL found; LONG res; int i; @@ -732,7 +733,7 @@ static void test_ChangeDisplaySettingsEx(void) ok(count == old_count - 1, "Expect monitor count %d, got %d\n", old_count - 1, count); } - /* Test changing each adapter to every available mode */ + /* Test changing each adapter to different width, height, frequency and depth */ position.x = 0; position.y = 0; for (device = 0; device < device_count; ++device) @@ -741,6 +742,42 @@ static void test_ChangeDisplaySettingsEx(void) dm.dmSize = sizeof(dm); for (mode = 0; EnumDisplaySettingsExA(devices[device].name, mode, &dm, 0); ++mode) { + if (mode == 0) + { + dm2 = dm; + } + else + { + found = FALSE; + if (dm2.dmPelsWidth && dm.dmPelsWidth != dm2.dmPelsWidth) + { + dm2.dmPelsWidth = 0; + found = TRUE; + } + if (dm2.dmPelsHeight && dm.dmPelsHeight != dm2.dmPelsHeight) + { + dm2.dmPelsHeight = 0; + found = TRUE; + } + if (dm2.dmDisplayFrequency && dm.dmDisplayFrequency != dm2.dmDisplayFrequency) + { + dm2.dmDisplayFrequency = 0; + found = TRUE; + } + if (dm2.dmBitsPerPel && dm.dmBitsPerPel != dm2.dmBitsPerPel) + { + dm2.dmBitsPerPel = 0; + found = TRUE; + } + + if (!dm2.dmPelsWidth && !dm2.dmPelsHeight && !dm2.dmDisplayFrequency + && !dm2.dmBitsPerPel) + break; + + if (!found) + continue; + } + dm.dmPosition = position; dm.dmFields |= DM_POSITION; res = ChangeDisplaySettingsExA(devices[device].name, &dm, NULL, CDS_RESET, NULL);