summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-10-14 04:21:42 +0930
committerPeter Hutterer <peter@cs.unisa.edu.au>2007-10-16 11:30:59 +0930
commit38baac71bdbb8c7e882e3e39133615cfed894a6b (patch)
tree1537f6793402f5299b01314a7add2b82b872c1eb
parent70efd3d06a15093661933bda4ec21e306dece4a4 (diff)
dix: Set bidirectional pairing, don't allow pairing with already paired devs.
-rw-r--r--dix/devices.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/dix/devices.c b/dix/devices.c
index 2dd3f9e5e..7be0d6941 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -2238,7 +2238,10 @@ PairDevices(ClientPtr client, DeviceIntPtr ptr, DeviceIntPtr kbd)
return BadDevice;
/* Don't allow pairing for slave devices */
- if (ptr->master || kbd->master)
+ if (!ptr->isMaster || !kbd->isMaster)
+ return BadDevice;
+
+ if (ptr->spriteInfo->paired)
return BadDevice;
if (!pairingClient)
@@ -2255,6 +2258,7 @@ PairDevices(ClientPtr client, DeviceIntPtr ptr, DeviceIntPtr kbd)
kbd->spriteInfo->sprite = ptr->spriteInfo->sprite;
kbd->spriteInfo->paired = ptr;
+ ptr->spriteInfo->paired = kbd;
return Success;
}