[PATCH] Fix XineramaQueryScreens for reverse prime

Jan Burgmeier jan.burgmeier at unicon-software.com
Thu Feb 4 13:06:43 UTC 2016


Bugzilla: https://bugs.freedesktop.org/92313
---
 randr/rrmonitor.c |  6 +++---
 randr/rroutput.c  | 12 ++++++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

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;
 }
-- 
2.7.0



More information about the xorg-devel mailing list