aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/randr/rrdispatch.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/randr/rrdispatch.c')
-rw-r--r--xorg-server/randr/rrdispatch.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/xorg-server/randr/rrdispatch.c b/xorg-server/randr/rrdispatch.c
index a4927bd14..272bbc4df 100644
--- a/xorg-server/randr/rrdispatch.c
+++ b/xorg-server/randr/rrdispatch.c
@@ -146,7 +146,7 @@ ProcRRSelectInput (ClientPtr client)
/*
* Now see if the client needs an event
*/
- if (pScrPriv && (pRREvent->mask & RRScreenChangeNotifyMask))
+ if (pScrPriv)
{
pTimes = &((RRTimesPtr) (pRRClient + 1))[pScreen->myNum];
if (CompareTimeStamps (pTimes->setTime,
@@ -154,7 +154,35 @@ ProcRRSelectInput (ClientPtr client)
CompareTimeStamps (pTimes->configTime,
pScrPriv->lastConfigTime) != 0)
{
- RRDeliverScreenEvent (client, pWin, pScreen);
+ if (pRREvent->mask & RRScreenChangeNotifyMask)
+ {
+ RRDeliverScreenEvent (client, pWin, pScreen);
+ }
+
+ if (pRREvent->mask & RRCrtcChangeNotifyMask)
+ {
+ int i;
+
+ for (i = 0; i < pScrPriv->numCrtcs; i++)
+ {
+ RRDeliverCrtcEvent (client, pWin, pScrPriv->crtcs[i]);
+ }
+ }
+
+ if (pRREvent->mask & RROutputChangeNotifyMask)
+ {
+ int i;
+
+ for (i = 0; i < pScrPriv->numOutputs; i++)
+ {
+ RRDeliverOutputEvent (client, pWin, pScrPriv->outputs[i]);
+ }
+ }
+
+ /* We don't check for RROutputPropertyNotifyMask, as randrproto.txt doesn't
+ * say if there ought to be notifications of changes to output properties
+ * if those changes occurred before the time RRSelectInput is called.
+ */
}
}
}