randr: make RROutputChanged change the main protocol screen not the gpu screen

We only set changes on the main protocol screen as, for example
in RRSetChanged() and RRTellChanged(), therefore we should follow
the same logic when reporting that an output changed in
RROutputChanged().

This means that RRTellChanged() will then update the relevant
timestamps also when events come from gpu screens.

[ajax: Fix mixed code and decls]

Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Alberto Milone <alberto.milone@canonical.com>
This commit is contained in:
Alberto Milone 2013-12-12 10:00:09 +01:00 committed by Adam Jackson
parent 2092f12a24
commit 702c0a247f

View File

@ -31,15 +31,27 @@ RESTYPE RROutputType;
void void
RROutputChanged(RROutputPtr output, Bool configChanged) RROutputChanged(RROutputPtr output, Bool configChanged)
{ {
/* set changed bits on the master screen only */
ScreenPtr pScreen = output->pScreen; ScreenPtr pScreen = output->pScreen;
rrScrPrivPtr mastersp;
output->changed = TRUE; output->changed = TRUE;
if (pScreen) { if (!pScreen)
rrScrPriv(pScreen); return;
if (pScreen->isGPU) {
ScreenPtr master = pScreen->current_master;
if (!master)
return;
mastersp = rrGetScrPriv(master);
}
else {
mastersp = rrGetScrPriv(pScreen);
}
RRSetChanged(pScreen); RRSetChanged(pScreen);
if (configChanged) if (configChanged)
pScrPriv->configChanged = TRUE; mastersp->configChanged = TRUE;
}
} }
/* /*