http://bugs.winehq.org/show_bug.cgi?id=5053
Summary: ddraw calls X11DRV_Settings_SetMode with an invalid value in desktop mode Product: Wine Version: 0.9.11. Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-directx-ddraw AssignedTo: wine-bugs@winehq.org ReportedBy: madewokherd@gmail.com
I'm not sure if this goes in ddraw or x11driver..
Starting Worms Armageddon (this doesn't happen with the demo :/) in desktop mode fails with an X error. I tried adding a few debug statements to wine, and this is what printed just before the crash:
fixme:ddraw:choose_mode (640,480) trace:ddraw:choose_mode all modes too small trace:ddraw:choose_mode using mode 27 trace:x11settings:X11DRV_Settings_SetMode Mode 27 requested by DDHAL (desktop) fixme:x11drv:X11DRV_desktop_SetCurrentMode Switching to mode 27/24 trace:x11drv:X11DRV_desktop_SetCurrentMode Resizing Wine desktop window to 0x0 trace:x11drv:X11DRV_handle_desktop_resize desktop 0x10020 change to (0x0) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 12 (X_ConfigureWindow) Value in failed request: 0x0 Serial number of failed request: 116 Current serial number in output stream: 116
So ddraw is trying to set the display to mode 27, but only 24 modes exist. I believe ddraw_hal.c's dd_gbl structure (used to decide which mode to use) is being set before the virtual display has been properly set up, and it's using modes from xrandr, which reports here that it has 30 modes. If this is the case, I have no idea how to fix it.
None of that explains why ddraw says the modes are all too small for 640x480. :/
The game works as it did previously (the frontend doesn't display anything but responds to input and the game itself works) if I force the call to SetCurrentMode to fail silently in this case.