rendered paste bodydiff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.cindex 95e88e6..ed75192 100644--- a/dlls/winex11.drv/settings.c+++ b/dlls/winex11.drv/settings.c@@ -237,8 +237,9 @@ #undef _X_FIELD LONG X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, HWND hwnd, DWORD flags, LPVOID lpvoid ) {- DWORD i, dwBpp;+ DWORD i, dwBpp = 0; DEVMODEW dm;+ BOOL def_mode = TRUE; TRACE("(%s,%p,%p,0x%08lx,%p)\n",debugstr_w(devname),devmode,hwnd,flags,lpvoid); TRACE("flags=%s\n",_CDS_flags(flags));@@ -248,8 +249,15 @@ LONG X11DRV_ChangeDisplaySettingsEx( LPC TRACE("width=%ld height=%ld bpp=%ld freq=%ld (%s)\n", devmode->dmPelsWidth,devmode->dmPelsHeight, devmode->dmBitsPerPel,devmode->dmDisplayFrequency, handler_name);++ dwBpp = (devmode->dmBitsPerPel == 24) ? 32 : devmode->dmBitsPerPel;+ if (devmode->dmFields & DM_BITSPERPEL) def_mode &= !dwBpp;+ if (devmode->dmFields & DM_PELSWIDTH) def_mode &= !devmode->dmPelsWidth;+ if (devmode->dmFields & DM_PELSHEIGHT) def_mode &= !devmode->dmPelsHeight;+ if (devmode->dmFields & DM_DISPLAYFREQUENCY) def_mode &= !devmode->dmDisplayFrequency; }- else++ if (def_mode) { TRACE("Return to original display mode (%s)\n", handler_name); if (!X11DRV_EnumDisplaySettingsEx(devname, dd_mode_default, &dm, 0))@@ -259,11 +267,10 @@ LONG X11DRV_ChangeDisplaySettingsEx( LPC } devmode = &dm; }- dwBpp = (devmode->dmBitsPerPel == 24) ? 32 : devmode->dmBitsPerPel; for (i = 0; i < dd_mode_count; i++) {- if (devmode->dmFields & DM_BITSPERPEL)+ if (devmode->dmFields & DM_BITSPERPEL && dwBpp) { if (dwBpp != dd_modes[i].dwBPP) continue;