Zhiyi Zhang (@zhiyi) commented about dlls/win32u/sysparams.c:
- DEVMODEW *mode;
- if (is_detached_mode( devmode )) return devmode;
- for (mode = modes; mode && mode->dmSize; mode = NEXT_DEVMODEW(mode))
- {
if ((devmode->dmFields & DM_BITSPERPEL) && devmode->dmBitsPerPel && devmode->dmBitsPerPel != mode->dmBitsPerPel)
continue;
if ((devmode->dmFields & DM_PELSWIDTH) && devmode->dmPelsWidth != mode->dmPelsWidth)
continue;
if ((devmode->dmFields & DM_PELSHEIGHT) && devmode->dmPelsHeight != mode->dmPelsHeight)
continue;
if ((devmode->dmFields & DM_DISPLAYFREQUENCY) && devmode->dmDisplayFrequency != mode->dmDisplayFrequency
&& devmode->dmDisplayFrequency > 1 && mode->dmDisplayFrequency)
continue;
if ((devmode->dmFields & DM_DISPLAYORIENTATION) && devmode->dmDisplayOrientation != mode->dmDisplayOrientation)
This changes the behavior of winemac.drv. winemac.drv supports additional DM_DISPLAYFLAGS and DM_DISPLAYFIXEDOUTPUT. Not comparing those fields when DM_DISPLAYFLAGS or DM_DISPLAYFIXEDOUTPUT is present will lose the application-specified mode settings.