summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@apple.com>2011-04-13 11:51:30 -0700
committerJeremy Huddleston <jeremyhu@apple.com>2011-05-28 17:25:58 -0700
commit613e0e9ef74c4542ed458200165adbcdfdf3cd17 (patch)
tree530bf72dd808fb2d9384ecf6a28bb71396a6be32
parentd784fd09dc277610d5f4e98d577c4fdcd9215f9c (diff)
Send events that were missing from RRSelectInput
The RANDR spec (randrproto.txt) specifies that RRSelectInput will send out events corresponding to the event mask, if there have been changes to CRTCs or outputs. Only screen events were being generated, however. Fixes http://bugs.freedesktop.org/21760 Signed-off-by: Federico Mena Quintero <federico@novell.com> Reviewd-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com> (cherry picked from commit b2997431fd426ab318bc5dfd2cd43956d733ebec)
-rw-r--r--randr/rrdispatch.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c
index ac4d2acc1..213550475 100644
--- a/randr/rrdispatch.c
+++ b/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.
+ */
}
}
}