[PATCH resend] input: Only release SD buttons for explicit floating/reattachment (#36146)
Jeremy Huddleston
jeremyhu at apple.com
Tue May 3 18:02:13 PDT 2011
Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
On May 3, 2011, at 17:12, Peter Hutterer wrote:
> Grabbing an SD device temporary floats the device but we must not release
> the buttons. Introduced in
>
> commit 9d23459415b84606ee4f38bb2d19054c432c8552
> Author: Peter Hutterer <peter.hutterer at who-t.net>
> Date: Fri Feb 25 11:08:19 2011 +1000
>
> dix: release all buttons and keys before reattaching a device (#34182)
>
> X.Org Bug 36146 <http://bugs.freedesktop.org/show_bug.cgi?id=36146>
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> Xi/xichangehierarchy.c | 2 ++
> dix/devices.c | 4 +---
> include/input.h | 2 ++
> 3 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c
> index 0736a5a..96ead6f 100644
> --- a/Xi/xichangehierarchy.c
> +++ b/Xi/xichangehierarchy.c
> @@ -355,6 +355,7 @@ detach_slave(ClientPtr client, xXIDetachSlaveInfo *c, int flags[MAXDEVICES])
> goto unwind;
> }
>
> + ReleaseButtonsAndKeys(dev);
> AttachDevice(client, dev, NULL);
> flags[dev->id] |= XISlaveDetached;
>
> @@ -406,6 +407,7 @@ attach_slave(ClientPtr client, xXIAttachSlaveInfo *c,
> goto unwind;
> }
>
> + ReleaseButtonsAndKeys(dev);
> AttachDevice(client, dev, newmaster);
> flags[dev->id] |= XISlaveAttached;
>
> diff --git a/dix/devices.c b/dix/devices.c
> index 9d4fda2..9a4498b 100644
> --- a/dix/devices.c
> +++ b/dix/devices.c
> @@ -2365,7 +2365,7 @@ RecalculateMasterButtons(DeviceIntPtr slave)
> * Generate release events for all keys/button currently down on this
> * device.
> */
> -static void
> +void
> ReleaseButtonsAndKeys(DeviceIntPtr dev)
> {
> InternalEvent* eventlist = InitEventList(GetMaximumEventsNum());
> @@ -2434,8 +2434,6 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master)
> free(dev->spriteInfo->sprite);
> }
>
> - ReleaseButtonsAndKeys(dev);
> -
> oldmaster = GetMaster(dev, MASTER_ATTACHED);
> dev->master = master;
>
> diff --git a/include/input.h b/include/input.h
> index 81c9dfb..1c0065f 100644
> --- a/include/input.h
> +++ b/include/input.h
> @@ -501,6 +501,8 @@ extern _X_EXPORT int GetMotionHistory(
> ScreenPtr pScreen,
> BOOL core);
>
> +extern void ReleaseButtonsAndKeys(DeviceIntPtr dev);
> +
> extern int AttachDevice(ClientPtr client,
> DeviceIntPtr slave,
> DeviceIntPtr master);
> --
> 1.7.4.4
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list