[PATCH 08/10] Update device state including when touch record does not exist
Chase Douglas
chase.douglas at canonical.com
Tue Apr 17 18:06:39 PDT 2012
On 04/17/2012 04:33 PM, Chase Douglas wrote:
> If a touch is physically active, the pointer core state should reflect
> that the first button is pressed. Currently, this only occurs when there
> are active listeners of the touch sequence. By moving the device state
> updating to the beginning of touch processing we ensure it is updated
> according to the processed physical state no matter what.
>
> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
> ---
> Xi/exevents.c | 5 ++---
> dix/touch.c | 8 --------
> 2 files changed, 2 insertions(+), 11 deletions(-)
>
> diff --git a/Xi/exevents.c b/Xi/exevents.c
> index d2b088c..90b7c4d 100644
> --- a/Xi/exevents.c
> +++ b/Xi/exevents.c
> @@ -1597,6 +1597,8 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
> else
> touchid = ev->device_event.touchid;
>
> + UpdateDeviceState(dev, &ev->device_event);
After reviewing the patches again, I see that I forgot to copy the check
for if the touch is pointer emulated. This hunk should add:
if (emulate_pointer)
UpdateDeviceState(dev, &ev->device_event);
I have updated my input-fixes branch with this change.
> +
> if (type == ET_TouchBegin) {
> ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid,
> emulate_pointer);
> @@ -1996,9 +1998,6 @@ DeliverTouchEvents(DeviceIntPtr dev, TouchPointInfoPtr ti,
>
> DeliverTouchEvent(dev, ti, ev, listener, client, win, grab, mask);
> }
> -
> - if (ti->emulate_pointer)
> - UpdateDeviceState(dev, &ev->device_event);
> }
>
> int
> diff --git a/dix/touch.c b/dix/touch.c
> index 9f849b7..2c7e125 100644
> --- a/dix/touch.c
> +++ b/dix/touch.c
> @@ -364,14 +364,6 @@ TouchEndTouch(DeviceIntPtr dev, TouchPointInfoPtr ti)
> {
> if (ti->emulate_pointer) {
> GrabPtr grab;
> - DeviceEvent ev;
> -
> - memset(&ev, 0, sizeof(ev));
> - ev.type = ET_TouchEnd;
> - ev.detail.button = 1;
> - ev.touchid = ti->client_id;
> - ev.flags = TOUCH_POINTER_EMULATED | TOUCH_END;
> - UpdateDeviceState(dev, &ev);
>
> if ((grab = dev->deviceGrab.grab)) {
> if (dev->deviceGrab.fromPassiveGrab &&
More information about the xorg-devel
mailing list