dix: don't set non-exisiting flags on touch events

Unlike pointer/keyboard events, the flags field for ET_Touch* is a set of
server-internal defines that we need to convert to XI protocol defines.
Currently only two of those defines actually translate to the protocol, so
make sure we don't send internal garbage down the wire.

No effect to current clients since they shouldn't look at undefined bits
anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit b86b3d10bb)
This commit is contained in:
Peter Hutterer 2013-03-04 07:58:41 +10:00
parent f5796f98da
commit 9ad9c13585

View file

@ -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;