mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-25 03:40:05 +01:00
Check other clients' core masks properly when adding touch listener
The current code checks the core event mask as though it were an XI mask. This change fixes the checks so the proper client and event masks are used. Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
e175971a6f
commit
ec9c429583
1 changed files with 4 additions and 4 deletions
|
|
@ -811,6 +811,7 @@ TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
|
|||
if (mask & EVENT_CORE_MASK) {
|
||||
int coretype = GetCoreType(TouchGetPointerEventType(ev));
|
||||
Mask core_filter = event_get_filter_from_type(dev, coretype);
|
||||
OtherClients *oclients;
|
||||
|
||||
/* window owner */
|
||||
if (IsMaster(dev) && (win->eventMask & core_filter)) {
|
||||
|
|
@ -822,13 +823,12 @@ TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti,
|
|||
}
|
||||
|
||||
/* all others */
|
||||
nt_list_for_each_entry(iclients, (InputClients *) wOtherClients(win),
|
||||
next) {
|
||||
if (!(iclients->mask[XIAllDevices] & core_filter))
|
||||
nt_list_for_each_entry(oclients, wOtherClients(win), next) {
|
||||
if (!(oclients->mask & core_filter))
|
||||
continue;
|
||||
|
||||
TouchEventHistoryAllocate(ti);
|
||||
TouchAddListener(ti, iclients->resource, CORE,
|
||||
TouchAddListener(ti, oclients->resource, CORE,
|
||||
type, LISTENER_AWAITING_BEGIN, win);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue