In case linux kernel creates multiple device nodes for touch screen, all of them are detected by evdevtouch and that creates multiple threads and that causes missed touches and crashes because there is only a single static QMap for tracking active touch points and not guarded by mutexes. It is declared in
qtbase/src/gui/kernel/qwindowsysteminterface.cpp, line 528:
Workaround is to use setenv("QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS", "/dev/input/touchscreen0", 0); it disables the automatic touch device detection and forces to use the defined one.
It would be nice if the evdev touch would use only one device, even if more are detected, to prevent crashes.
|For Gerrit Dashboard: QTBUG-63584|
|261960,1||WIP: evdevtouch: Fix crash with multiple touch devices||5.12||qt/qtbase||Status: ABANDONED||-2||0|
|276981,2||Protect global variable g_pointIdMap with mutexes||dev||qt/qtbase||Status: MERGED||-2||0|
|277100,3||Protect global variable g_pointIdMap with mutexes||5.14||qt/qtbase||Status: MERGED||+2||0|
|301778,2||Protect global variable g_pointIdMap with mutexes||5.12||qt/qtbase||Status: MERGED||+2||0|