Floating devices can't send core events anyway. Attached devices only send core events through the master device. Master devices can be configured with core events off though that is a rather special usecase.
The server behaviour is that devices listed with core events off in the config file are floating by default. Without this patch, such a device attached to a master device lateron will cause the master to send core events but not actually move the pointer. Reported-by; Benjamin Tissoires <[email protected]> Signed-off-by: Peter Hutterer <[email protected]> --- dix/devices.c | 2 ++ mi/mipointer.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dix/devices.c b/dix/devices.c index 6329d28..13fc0c2 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -2366,11 +2366,13 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master) InitializeSprite(dev, currentRoot); dev->spriteInfo->spriteOwner = FALSE; dev->spriteInfo->paired = dev; + dev->coreEvents = FALSE; } else { dev->spriteInfo->sprite = master->spriteInfo->sprite; dev->spriteInfo->paired = master; dev->spriteInfo->spriteOwner = FALSE; + dev->coreEvents = TRUE; RecalculateMasterButtons(master); } diff --git a/mi/mipointer.c b/mi/mipointer.c index e1f63be..59fd978 100644 --- a/mi/mipointer.c +++ b/mi/mipointer.c @@ -362,7 +362,7 @@ miPointerUpdateSprite (DeviceIntPtr pDev) int x, y, devx, devy; miPointerPtr pPointer; - if (!pDev || !pDev->coreEvents) + if (!pDev || IsMaster(pDev) ? !pDev->coreEvents : !GetMaster(pDev, MASTER_POINTER)) return; pPointer = MIPOINTER(pDev); @@ -502,7 +502,7 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y) if (!pScreen) return; /* called before ready */ - if (!pDev || !pDev->coreEvents) + if (!pDev || IsMaster(pDev) ? !pDev->coreEvents : !GetMaster(pDev, MASTER_POINTER)) return; if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height) -- 1.6.5.2 _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
