diff options
Diffstat (limited to 'Fix-XineramaQueryScreens-for-reverse-prime.patch')
-rw-r--r-- | Fix-XineramaQueryScreens-for-reverse-prime.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Fix-XineramaQueryScreens-for-reverse-prime.patch b/Fix-XineramaQueryScreens-for-reverse-prime.patch new file mode 100644 index 000000000000..fe2c9479abf8 --- /dev/null +++ b/Fix-XineramaQueryScreens-for-reverse-prime.patch @@ -0,0 +1,55 @@ +diff --git a/randr/rrmonitor.c b/randr/rrmonitor.c +index c37dcf8..58041bb 100644 +--- a/randr/rrmonitor.c ++++ b/randr/rrmonitor.c +@@ -326,7 +326,7 @@ RRMonitorMakeList(ScreenPtr screen, Bool get_active, RRMonitorPtr *monitors_ret, + RRMonitorSetFromClient(pScrPriv->monitors[list.client_primary], mon); + mon++; + } else if (list.server_primary >= 0) { +- RRMonitorSetFromServer(pScrPriv->crtcs[list.server_primary], mon); ++ RRMonitorSetFromServer(list.server_crtc[list.server_primary], mon); + mon++; + } + +@@ -354,8 +354,8 @@ RRMonitorMakeList(ScreenPtr screen, Bool get_active, RRMonitorPtr *monitors_ret, + + /* And finish with the list of crtc-inspired monitors + */ +- for (c = 0; c < pScrPriv->numCrtcs; c++) { +- RRCrtcPtr crtc = pScrPriv->crtcs[c]; ++ for (c = 0; c < list.num_crtcs; c++) { ++ RRCrtcPtr crtc = list.server_crtc[c]; + if (c == list.server_primary && list.client_primary < 0) + continue; + +diff --git a/randr/rroutput.c b/randr/rroutput.c +index d12b9ba..2ba62fa 100644 +--- a/randr/rroutput.c ++++ b/randr/rroutput.c +@@ -543,6 +543,7 @@ ProcRRSetOutputPrimary(ClientPtr client) + WindowPtr pWin; + rrScrPrivPtr pScrPriv; + int ret; ++ ScreenPtr slave; + + REQUEST_SIZE_MATCH(xRRSetOutputPrimaryReq); + +@@ -565,7 +566,18 @@ ProcRRSetOutputPrimary(ClientPtr client) + + pScrPriv = rrGetScrPriv(pWin->drawable.pScreen); + if (pScrPriv) ++ { + RRSetPrimaryOutput(pWin->drawable.pScreen, pScrPriv, output); ++ ++ xorg_list_for_each_entry(slave, ++ &pWin->drawable.pScreen->output_slave_list, ++ output_head) { ++ rrScrPrivPtr pSlavePriv; ++ pSlavePriv = rrGetScrPriv(slave); ++ ++ RRSetPrimaryOutput(slave, pSlavePriv, output); ++ } ++ } + + return Success; + } |