diff options
Diffstat (limited to 'randr')
-rw-r--r-- | randr/rroutput.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/randr/rroutput.c b/randr/rroutput.c index 10df4da95..d12b9ba12 100644 --- a/randr/rroutput.c +++ b/randr/rroutput.c @@ -31,15 +31,27 @@ RESTYPE RROutputType; void RROutputChanged(RROutputPtr output, Bool configChanged) { + /* set changed bits on the master screen only */ ScreenPtr pScreen = output->pScreen; + rrScrPrivPtr mastersp; output->changed = TRUE; - if (pScreen) { - rrScrPriv(pScreen); - RRSetChanged(pScreen); - if (configChanged) - pScrPriv->configChanged = TRUE; + if (!pScreen) + return; + + if (pScreen->isGPU) { + ScreenPtr master = pScreen->current_master; + if (!master) + return; + mastersp = rrGetScrPriv(master); + } + else { + mastersp = rrGetScrPriv(pScreen); } + + RRSetChanged(pScreen); + if (configChanged) + mastersp->configChanged = TRUE; } /* |