From 8634e1bcbae9317fc22132f7c9bde1a4a881b9a7 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 12 Mar 2009 10:42:05 +1000 Subject: [PATCH] dix: send presence events when floating and unfloating SDs --- dix/devices.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dix/devices.c b/dix/devices.c index 0795d30ea..64af57fd2 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -2198,11 +2198,23 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master) dev->spriteInfo->spriteOwner = FALSE; dev->spriteInfo->paired = dev; + /* Floating an SD makes it appear to XI 1 clients */ + SendDevicePresenceEvent(dev->id, DeviceAdded); + if (dev->enabled) + SendDevicePresenceEvent(dev->id, DeviceEnabled); } else { dev->spriteInfo->sprite = master->spriteInfo->sprite; dev->spriteInfo->paired = master; dev->spriteInfo->spriteOwner = FALSE; + + if (!oldmaster) + { + /* Attaching a floating SD makes it disappear to XI 1 clients */ + if (dev->enabled) + SendDevicePresenceEvent(dev->id, DeviceDisabled); + SendDevicePresenceEvent(dev->id, DeviceRemoved); + } } /* If we were connected to master device before, this MD may need to