Zhiyi Zhang (@zhiyi) commented about dlls/user32/tests/monitor.c:
broken(res == DISP_CHANGE_FAILED), /* win8 TestBot */ "ChangeDisplaySettingsExA returned unexpected %ld\n", res); for (device = 0; device < device_count; ++device) - expect_dm(&devices[device].original_mode, devices[device].name, 0); + expect_dm(&devices[device].original_mode, devices[device].name, 0, FALSE); + + event0 = CreateEventW(NULL, FALSE, FALSE, L"test_ChangeDisplaySettingsEx_event0"); + ok(!!event0, "OpenEventA failed, error %#lx\n", GetLastError()); + event1 = CreateEventW(NULL, FALSE, FALSE, L"test_ChangeDisplaySettingsEx_event1"); + ok(!!event1, "OpenEventA failed, error %#lx\n", GetLastError()); + event2 = CreateEventW(NULL, FALSE, FALSE, L"test_ChangeDisplaySettingsEx_event2"); + ok(!!event2, "OpenEventA failed, error %#lx\n", GetLastError());
I think only one child_process_exit_event should be enough. You start a child process. The child process changes display mode according to argv parameters, set process exit events, and then exits. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5060#note_62774