Comment 2 for bug 782087

Revision history for this message
Walther (walther-md) wrote :

All right.... some final reading on that link found me this gem:

from RRSetCrtcConfig:

This request sets the CRTC to the specified position, mode, rotation
 and reflection. The entire area of the CRTC must fit within the
 screen size, else a Match error results. As an example, rotating the
 screen so that a single CRTC fills the entire screen before and
 after may necessitate disabling the CRTC, resizing the screen,
 then re-enabling the CRTC at the new configuration to avoid an
 invalid intermediate configuration.

So the proper behaviour seems to be what xrandr already does:

1. Disable any active outputs whose screen-size won't match the new size
2. Call RRSetScreenSize
3. Call RRSetCrtcConfig for all outputs to be configured.

So my patch is already a "proper" solution, except that it needs to disable any outputs that "are active and won't fit" on the new size, rather than blindly disabling all of the "changed" outputs... but I am too exhausted to work on this right now.