summaryrefslogtreecommitdiff
path: root/dix/events.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-09-25 21:40:08 +0930
committerPeter Hutterer <peter@cs.unisa.edu.au>2007-09-26 09:14:50 +0930
commit275dc77c2972147407584323b866b8acc1654ea0 (patch)
tree464cdc5d47a33a2f309e6f880fbd29061ded0850 /dix/events.c
parent5d9f6cf51becdeb1d2be9bdeec4bb5d0c4dd0e8b (diff)
dix: add comments to ComputeFreezes() and syncEvents struct.
Diffstat (limited to 'dix/events.c')
-rw-r--r--dix/events.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/dix/events.c b/dix/events.c
index aab535234..f5b0f0037 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -263,6 +263,24 @@ static int DontPropagateRefCnts[DNPMCOUNT];
*/
_X_EXPORT InputInfo inputInfo;
+/**
+ * syncEvents is the global structure for queued events.
+ * Devices can be frozen through GrabModeSync pointer grabs. If this is the
+ * case, events from these devices are added to "pending" instead of being
+ * processed normally. When the device is unfrozen, events in "pending" are
+ * replayed and processed as if they would come from the device directly.
+ *
+ * pending ... list of queued events
+ * pendtail ... last event in list
+ * replayDev ... The device to replay events for. Only set in AllowEvents, in
+ * which case it is set to the device specified in the request.
+ * replayWin ... the window the events are supposed to be replayed on. This
+ * window may be set to the grab's window (but only when
+ * Replay{Pointer|Keyboard} is given in the XAllowEvents
+ * request.
+ * playingEvents ... flag to indicate whether we're in the process of
+ * replaying events. Only set in ComputeFreezes().
+ */
static struct {
QdEventPtr pending, *pendtail;
DeviceIntPtr replayDev; /* kludgy rock to put flag for */
@@ -1430,6 +1448,9 @@ CheckGrabForSyncs(DeviceIntPtr thisDev, Bool thisMode, Bool otherMode)
CLIENT_BITS(grab->resource)))
thisDev->deviceGrab.sync.other = NullGrab;
}
+ /* XXX: other should only work on the paired keyboard, not on all other
+ devices
+ */
for (dev = inputInfo.devices; dev; dev = dev->next)
{
if (dev != thisDev)