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