http://bugs.winehq.org/show_bug.cgi?id=25312
Summary: WINE needs to support XRandR 1.2 Product: Wine Version: unspecified Platform: All OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winex11.drv AssignedTo: wine-bugs@winehq.org ReportedBy: owen.riddy@gmail.com
Created an attachment (id=32154) --> (http://bugs.winehq.org/attachment.cgi?id=32154) A patch to add support for XRandA 1.2. It will break many things.
Wine currently supports XRandR 1.1, which is fine for single-monitor users. It is bad for multi-monitor users because every time wine tries to change the resolution it completely mucks everything up, and usually switches off a monitor, eg, bug 16958 (which is a XRandR problem).
XRandR 1.2 introduced some very major architecture changes (*) to support multi-monitor setups.
I've attached a badly formatted & crufty patch that implements the required bits of XRandR 1.2. Some issues remain:
A) Fullscreen applications no longer occupy the whole X Screen - only one physical screen. Games will need to confine the mouse pointer to that screen to remain playable, and I don't know where in Wine to do this. This may run afoul of bug 6971.
B) I'm not certain how this patch might interact with DirectDraw & Direct3D - it probably breaks the screen co-ordinate assumptions in wine.
I don't think it is worth tidying this patch to the formatting standard required for Wine until A is dealt with.
The patch includes a lot of garbage included as I tried to work out how ddraw and xrandr interacted (sorry), and what Xinerama was doing in the mix. The really important parts are X11DRV_XRandR_Init(void), make_modes(void), int X11DRV_XRandR_GetCurrentMode(void) and LONG X11DRV_XRandR_SetCurrentMode(int mode) in xrandr12.c.
(*) http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt - Sec. 1.2 - wine should be resizing crtc, not the screen.