[PATCH v2 1/4] user32/tests: Do not change adapters to every available modes.
Zhiyi Zhang
zzhang at codeweavers.com
Mon May 17 02:20:21 CDT 2021
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 <zzhang at codeweavers.com>
---
v2: Supersede 205626, 205628~205630. Don't randomly test display modes.
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 6b233970ace..4510e15b79b 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;
/* Reattach detached non-primary adapters, otherwise ChangeDisplaySettingsExA with only CDS_RESET fails */
--
2.30.2
More information about the wine-devel
mailing list