diff --git a/dix/eventconvert.c b/dix/eventconvert.c index 2c411cf40..ebc52c36c 100644 --- a/dix/eventconvert.c +++ b/dix/eventconvert.c @@ -684,17 +684,18 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi) xde->root_x = double_to_fp1616(ev->root_x + ev->root_x_frac); xde->root_y = double_to_fp1616(ev->root_y + ev->root_y_frac); - if (ev->type == ET_TouchUpdate) - xde->flags |= (ev->flags & TOUCH_PENDING_END) ? XITouchPendingEnd : 0; - else + if (IsTouchEvent((InternalEvent *)ev)) { + if (ev->type == ET_TouchUpdate) + xde->flags |= (ev->flags & TOUCH_PENDING_END) ? XITouchPendingEnd : 0; + + if (ev->flags & TOUCH_POINTER_EMULATED) + xde->flags |= XITouchEmulatingPointer; + } else { xde->flags = ev->flags; - if (IsTouchEvent((InternalEvent *) ev) && - ev->flags & TOUCH_POINTER_EMULATED) - xde->flags |= XITouchEmulatingPointer; - - if (ev->key_repeat) - xde->flags |= XIKeyRepeat; + if (ev->key_repeat) + xde->flags |= XIKeyRepeat; + } xde->mods.base_mods = ev->mods.base; xde->mods.latched_mods = ev->mods.latched;