Client doesn't get gestures from newly available device

Bug #944822 reported by Daniel d'Andrada
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Geis
Fix Released
Medium
Stephen M. Webb
utouch-geis (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

Preconditions:
Have a multitouch device disconnected. E.g. Apple Magic Trackpad not-paired/connected.

Steps to reproduce the problem:
1- Start a geis client. (e.g. unityshell plugin in compiz, geisview, utouch-geis/examples/geis2)
2- Connect your multitouch device. E.g. turn on bluetooth and connect to your Apple Magic Trackpad. A GEIS_EVENT_DEVICE_AVAILABLE is properly generated.
3- Do some multitouch gestures on that multitouch device

Expected outcome:
Geis client receives gesture events from that device.

Actual outcome:
No gesture event comes in.
E.g unity won't respond to any gesture

Restarting the geis client solves the problem, since the multitouch device will already be available before the new client instance comes up.
E.g. after restarting compiz, unity starts responding to multitouch gestures

Related branches

Stephen M. Webb (bregma)
Changed in utouch-geis:
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
Chase Douglas (chasedouglas) wrote :

I believe this is due to a bug I am tracking down right now. When a touch has only one listener, the listener is a grab, and the listener accepts before the touch ends, the X server does not properly dispose of the touch record. This causes problems with future touches. The end result is that on an indirect device, touch events will fail to be generated, which causes gestures to fail.

I hope to have a fix uploaded soon.

Revision history for this message
Stephen M. Webb (bregma) wrote :

I believe the problem is that a chunk of code to reexecute subscriptions when a new device comes online is missing from utouch-geis.

Because grail subscriptions are keyed on (device, window), when a new device comes online all of the existing subscriptions need to be reevaluated and new grail subscriptions may need to be created.

Similarly, when devices go offline or windows get closed, grail subscriptions may need to be removed. This does not currently happen.

Stephen M. Webb (bregma)
Changed in utouch-geis:
milestone: none → utouch-geis-2.2.7
assignee: nobody → Stephen M. Webb (bregma)
Changed in utouch-geis (Ubuntu):
status: New → Triaged
importance: Undecided → Medium
Stephen M. Webb (bregma)
Changed in utouch-geis:
milestone: utouch-geis-2.2.7 → utouch-geis-2.2.8
Stephen M. Webb (bregma)
Changed in utouch-geis:
status: Confirmed → In Progress
Changed in utouch-geis (Ubuntu):
status: Triaged → In Progress
Stephen M. Webb (bregma)
Changed in utouch-geis:
status: In Progress → Fix Committed
Stephen M. Webb (bregma)
Changed in utouch-geis:
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package utouch-geis - 2.2.8-0ubuntu1

---------------
utouch-geis (2.2.8-0ubuntu1) precise; urgency=low

  [ Chase Douglas ]
  * Build integration tests where dependencies are available
    - Will not build tests in archive, will build tests in Jenkins systems

  [ Stephen M. Webb ]
  * New upstream release.
    - fixes filter creation when no matching devices are present (lp: #904731)
    - fixes Unity crashes in geis_filter_delete() (lp: #936815)
    - fixes touch event delay during timeout wait (lp: #967605)
    - fixes handling device addition/removal (lp: #944822)
    - fixes tap timeouts (lp: #962705)
    - fixes position delta on touch count changes (lp: #967267)
    - fixes window ungrab on subscription deactivation (lp: #968736)
    - fixes geistest crash on startup (lp: #966595)
  * Bumped minimum required version of utouch-geis to 3.0.4 for licensing
    changes.
 -- <email address hidden> (Stephen M. Webb) Sat, 31 Mar 2012 13:13:34 -0400

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

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.