Summary: | Passive touch grab on master device and touch event mask on slave device breaks pointer emulation | ||
---|---|---|---|
Product: | xorg | Reporter: | Daniel d'Andrada <daniel.dandrada> |
Component: | Server/Input/Core | Assignee: | Peter Hutterer <peter.hutterer> |
Status: | RESOLVED MOVED | QA Contact: | Xorg Project Team <xorg-team> |
Severity: | normal | ||
Priority: | medium | CC: | peter.hutterer |
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
See Also: |
https://launchpad.net/bugs/1307701 https://bugreports.qt-project.org/browse/QTBUG-38625 |
||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Description
Daniel d'Andrada
2014-05-06 15:52:38 UTC
Created attachment 98564 [details]
Xorg.log with detailed input event handling info
Created attachment 98565 [details]
A filtered Xorg.log with only the interesting parts
Created attachment 98566 [details]
output of xinput
Created attachment 98567 [details]
output of xwininfo showing the whole window tree
For reference, those were the steps I took when recording the log - started lightdm (and threfore X) - logged in - launched the Qt app (qmlscene) - tapped on the qmlscene window - tapped on the desktop background (nautilus) - closed the Qt app (qmlscene) - stopped lightdm (and threfore X) Created attachment 98629 [details] [review] xorg-integration-tests testcase I think this reproduces the bug quite well, does this match your logs? Comment on attachment 98629 [details] [review] xorg-integration-tests testcase Woops, test is broken, the way it was written probably doesn't reproduce this bug. Although I believe it probably matches the description of the bug. Maybe missing something? Created attachment 98694 [details] [review] xorg-integration-tests testcase try 2 Ok so I've finally isolated the problem. The problem is the XIGrabDevice on the slave pointer, which is only removed after the touch ends. When this happens the ButtonRelease call for pointer emulation is never generated, leading to the 'stuck button' bug. Modifying qt to listen to touch events on the master fixes it and removes the need for the XIGrabDevice call. The grab was originally done to prevent pointer emulation events, but these won't get generated when we listen for touch events on the master, solving both problems. But this is still a bug in xorg-server, regardless. :) -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/xserver/issues/569. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.