X does not send multitouch touch end events properly

Bug #929408 reported by Jussi Pakkanen on 2012-02-09
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
xorg-server (Ubuntu)
High
Chase Douglas

Bug Description

A test app that demostrates this bug can be downloaded from here: lp:~jpakkane/+junk/touchpad-tester.

My setup is that I have a Magic Trackpad and a Macbook Pro multitouch trackpad. The test app prints out this:

Using device id 2, Virtual core pointer.
Potential device id 11, bcm5974.
Potential device id 13, Apple Wireless Trackpad.

If I use device ids 11 or 13, stuff works. Device id 2 leads to problems, though.

I put down five fingers on one touchpad and then five on the other. Then I lift all fingers up simultaneously. The end result is that I only receive TouchEnds for roughly half of the touches. The others keep on existing.

Possible reasons for this bug include X not sending touch end events or X sending touch end events with a different device id than touch start events.

Tests were run using precise.

Does Chase or someone want to take a look?

Changed in xorg-server (Ubuntu):
assignee: nobody → Canonical Desktop Experience Team (canonical-dx-team)
Changed in xorg-server (Ubuntu):
assignee: Canonical Desktop Experience Team (canonical-dx-team) → Chase Douglas (chasedouglas)
Jussi Pakkanen (jpakkane) wrote :

Current behaviour of X in precise is that Virtual Core Pointer does not provide any touches at all. Thus testing whether this bug still exists or not is impossible.

Will update again once touch reporting works.

Chase Douglas (chasedouglas) wrote :

I believe this is due to touch records not ending properly when touches are accepted before they physically end. Since all touches on a touchpad must go to the same window set, once you send multitouch events to one set of windows you cannot send multitouch events to any other windows anymore because the first touches are still logically active in the server.

A second fix for this issue is that the server should only be looking at physically active touches, not logically active but physically ended touches, when determining the window set to send touches to.

Changed in xorg-server (Ubuntu):
status: New → In Progress
importance: Undecided → High
milestone: none → ubuntu-12.04-beta-2
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package xorg-server - 2:1.11.4-0ubuntu5

---------------
xorg-server (2:1.11.4-0ubuntu5) precise; urgency=low

  * Update to 1.12 input stack
  * Drop input patches that have been merged upstream:
    - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch
    - 601-Store-window-pointer-in-touch-listener-record.patch
    - 602-Factor-out-TouchEnd-generation-and-delivery.patch
    - 603-Export-TouchEventRejected-as-TouchRejected.patch
    - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch
    - 605-Check-for-proper-window-ID-when-processing-touch-all.patch
    - 606-Implement-early-touch-reject.patch
    - 607-Implement-touch-early-accept.patch
    - 608-dix-fix-an-out-of-memory-crash.patch
    - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch
    - 610-Fix-scrolling.patch
    - 611-Fix-touch-punt-crash.patch
    - 612-Fix-vcp-touches-corruption.patch
    - 613-Keep-vcp-touch-class.patch
  * Fix indirect touch grab handling (LP: #929408)
    - Add temporary patch 501_touch_accept_end.patch
    - Add temporary patch 502_indirect_touch_window_set.patch
 -- Chase Douglas <email address hidden> Wed, 07 Mar 2012 15:36:20 -0800

Changed in xorg-server (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers