From c3e1d5c86b171ff0af2738724c9b5d55873b645c Mon Sep 17 00:00:00 2001 From: cutealien Date: Wed, 6 Jan 2021 14:52:49 +0000 Subject: [PATCH] Merging r6181 through r6184 from trunk to ogl-es branch - Changes to touch-input handling on X11 git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@6185 dfc29bdd-3216-0410-991c-e03cc46cb475 --- source/Irrlicht/CIrrDeviceLinux.cpp | 44 ++++++++--------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/source/Irrlicht/CIrrDeviceLinux.cpp b/source/Irrlicht/CIrrDeviceLinux.cpp index 68e6e336..87a60abd 100644 --- a/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/source/Irrlicht/CIrrDeviceLinux.cpp @@ -2040,39 +2040,19 @@ void CIrrDeviceLinux::initXInput2() return; } - int cnt = 0; - XIDeviceInfo *di = XIQueryDevice(XDisplay, XIAllDevices, &cnt); - if ( di ) - { - for (int i = 0; i < cnt; ++i) - { - bool hasTouchClass = false; - XIDeviceInfo *dev = &di[i]; - for (int j = 0; j < dev->num_classes; ++j) - { - if (dev->classes[j]->type == XITouchClass) - { - hasTouchClass = true; - break; - } - } - if ( hasTouchClass ) - { - XIEventMask eventMask; - unsigned char mask[XIMaskLen(XI_TouchEnd)]; - memset(mask, 0, sizeof(mask)); - eventMask.deviceid = dev->deviceid; - eventMask.mask_len = sizeof(mask); - eventMask.mask = mask; - XISetMask(eventMask.mask, XI_TouchBegin); - XISetMask(eventMask.mask, XI_TouchUpdate); - XISetMask(eventMask.mask, XI_TouchEnd); + // So far we only use XInput2 for touch events. + // So we enable those and disable all other events for now. + XIEventMask eventMask; + unsigned char mask[XIMaskLen(XI_TouchEnd)]; + memset(mask, 0, sizeof(mask)); + eventMask.deviceid = XIAllMasterDevices; + eventMask.mask_len = sizeof(mask); + eventMask.mask = mask; + XISetMask(eventMask.mask, XI_TouchBegin); + XISetMask(eventMask.mask, XI_TouchUpdate); + XISetMask(eventMask.mask, XI_TouchEnd); - XISelectEvents(XDisplay, XWindow, &eventMask, 1); - } - } - XIFreeDeviceInfo(di); - } + XISelectEvents(XDisplay, XWindow, &eventMask, 1); #endif }