xserver: Branch 'master'

Adam Jackson ajax at kemper.freedesktop.org
Mon Feb 8 23:22:38 CET 2016


 randr/rrmonitor.c |    6 +++---
 randr/rroutput.c  |   12 ++++++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

New commits:
commit 7bb64d8c1de9659f11da7917772919b071e9db82
Author: Jan Burgmeier <jan.burgmeier at unicon-software.com>
Date:   Thu Feb 4 14:06:43 2016 +0100

    Fix XineramaQueryScreens for reverse prime
    
    Make sure we account for slave CRTCs when building the monitor list,
    since that's what rrxinerama uses to fake Xinerama geometry.
    
    [ajax: Slightly more informative commit message.]
    
    Bugzilla: https://bugs.freedesktop.org/92313
    Reviewed-by: Dave Airlie <airlied at redhat.com>

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..686ae49 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,8 +566,19 @@ 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;
 }
 


More information about the xorg-commit mailing list