ms_covering_crtc() uses RRFirstOutput() to determine a primary output to fall
back to if a drawable is overlapping a slave output.
If the primary output is a slave output, RRFirstOutput() will return a slave
output even if passed a master ScreenPtr. ms_covering_crtc() dereferences the
output's devPrivate, which is invalid for non-modesetting outputs, and can
crash.
Changing RRFirstOutput() could have unintended side effects for other callers,
so this change replaces the call to RRFirstOutput() with ms_first_output().
ms_first_output() ignores the primary output if it doesn't match the given
ScreenPtr, choosing the first connected output instead.
Signed-off-by: Alex Goins <agoins@nvidia.com>
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| Makefile.am | ||
| dri2.c | ||
| driver.c | ||
| driver.h | ||
| drmmode_display.c | ||
| drmmode_display.h | ||
| dumb_bo.c | ||
| dumb_bo.h | ||
| meson.build | ||
| modesetting.man | ||
| pageflip.c | ||
| present.c | ||
| vblank.c | ||