xserver/randr
Hans de Goede 3b624aa9a9 randr: rrCheckPixmapBounding: Do not substract crtc non 0 x,y from screen size
The purpose of rrCheckPixmapBounding is to make sure that the
screen_pixmap is large enough for the slave-output which crtc is
being configured.

This should include crtc->x and crtc->y, otherwise the crtc might
still end up scanning out an area outside of the screen-pixmap.

For example: Take a laptop with an external monitor on a slave-output at
1920x1080+0+0 and its internal-screen at 3840x2160+1920+0 and in
gnome-settings-daemon move the external monitor to be on the ri ght of
the internal screen rather then on the left. First g-s-d will do a
RRSetScreenSize to 5760*2160 (which is a nop), then it calls RRSetCrtc
to move the slave output to 1920x1080+3840+0, since this is a slave
output, rrCheckPixmapBounding gets called, since the 2 crtcs now overlap
the code before this commit would shrinks the screen_pixmap to 3180*2160.
Then g-s-d calls RRSetCrtc to move the internal screen to 3180*2160+0+0.

And we end up with the slave-output configured to scan-out an area
which completely falls outside of the screen-pixmap (and end up with
a black display on the external monitor).

This commit fixes this by not substracting the x1 and y1 coordinates
of the union-ed region when determining the new screen_pixmap size.

Cc: Nikhil Mahale <nmahale@nvidia.com>
Cc: Dave Airlie <airlied@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2016-12-05 11:21:48 +01:00
..
Makefile.am randr: Add Monitor support (v1.1) 2015-03-31 12:32:04 +10:00
randr.c randr: Adjust master's last set time with slaves 2016-06-17 11:38:13 +02:00
randrstr.h randr: Add RRHasScanoutPixmap helper function 2016-09-13 10:26:47 +02:00
rrcrtc.c randr: rrCheckPixmapBounding: Do not substract crtc non 0 x,y from screen size 2016-12-05 11:21:48 +01:00
rrdispatch.c randr: Allow RRSelectInput for ProviderChange and ResourceChange events 2015-09-23 13:12:21 -04:00
rrinfo.c Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
rrmode.c Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
rrmonitor.c xrandrprovider: Do not use separate lists for unbound / source / offload slaves 2016-06-17 11:35:58 +02:00
rroutput.c xrandrprovider: Do not use separate lists for unbound / source / offload slaves 2016-06-17 11:35:58 +02:00
rrpointer.c randr: Fix logic in RRPointerToNearestCrtc 2014-07-30 14:40:17 -07:00
rrproperty.c Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
rrprovider.c randr: Add ability to turn PRIME sync off 2016-07-05 14:30:27 -04:00
rrproviderproperty.c Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
rrscreen.c xrandrprovider: Do not use separate lists for unbound / source / offload slaves 2016-06-17 11:35:58 +02:00
rrsdispatch.c randr: Add Monitor support (v1.1) 2015-03-31 12:32:04 +10:00
rrtransform.c randr: Silence -Wshift-negative-value warnings 2015-10-19 11:51:52 -04:00
rrtransform.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
rrxinerama.c randr: Use Monitor list for Xinerama 2015-03-31 12:32:04 +10:00