grail doesn't work properly if ownership comes for touch whose end is pending
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Grail |
Fix Released
|
High
|
Daniel d'Andrada | ||
grail (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Francis Ginther |
Bug Description
[Impact]
Gestures must be accepted or rejected by the grail client. Gestures are held by grail until all the touches become "owned" by the grail client. Otherwise, the gestures are discarded automatically by grail. When this bug occurs, grail sees that a gesture is "owned", but does not send the gesture events to the client. The client doesn't react to the gesture, and thus never accepts or rejects the gesture. A side effect of this is that touchscreen input can "lock up".
[Test Case]
Steps to reproduce the problem:
1 - a touch is part of some gesture and that touch is the only one whose ownership hasn't come yet
2 - an update event with "pending end" property set comes for that touch
3 - an ownership event comes for that touch
Expected outcome:
the gesture that has this touch becomes owned and grail client finally receives all queued events from that gesture. That touch should be effectively considered as ended (from grail clients' point of view) even though its final End event didn't come yet from frame.
Actual outcome:
the gesture that has this touch stays as unowned. grail client still receives no events from that gesture.
This is difficult to test for using human input. It is hard to cause this exact scenario. The best way to test is to simply use the new grail version and confirm that nothing unexpected happens.
[Regression Potential]
Small. The resolution mostly involves a bit of functional reordering. A new regression test case has been added for this issue. All previous functional and regression test cases continue to pass.
Areas of concern for testing is whether gestures continue to operate properly, and whether touchscreens become unresponsive after gestural or pointer interactions.
Related branches
- Chase Douglas (community): Approve
-
Diff: 738 lines (+367/-253)6 files modifiedsrc/gesture.cpp (+13/-20)
test/regular/Makefile.am (+1/-0)
test/regular/grail-fixture.cpp (+222/-0)
test/regular/grail-fixture.h (+46/-0)
test/regular/intermittent_3touch.cpp (+7/-233)
test/regular/pending-end.cpp (+78/-0)
Changed in utouch-grail: | |
assignee: | nobody → Daniel d'Andrada (dandrader) |
importance: | Undecided → High |
status: | New → In Progress |
Changed in utouch-grail: | |
status: | In Progress → Fix Committed |
Changed in utouch-grail: | |
milestone: | none → 3.0.6 |
Changed in utouch-grail: | |
status: | Fix Committed → Fix Released |
affects: | utouch-grail (Ubuntu) → grail (Ubuntu) |
Changed in grail (Ubuntu): | |
status: | New → Fix Released |
description: | updated |
description: | updated |
Changed in grail (Ubuntu Precise): | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Francis Ginther (fginther) |
Hello Daniel, or anyone else affected,
Accepted grail into precise-proposed. The package will build now and be available at http:// launchpad. net/ubuntu/ +source/ grail/3. 0.6-0ubuntu0. 12.04.01 in a few hours, and then in the -proposed repository.
Please help us by testing this new package. See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.
If this package fixes the bug for you, please change the bug tag from verification-needed to verification-done. If it does not, change the tag to verification- failed. In either case, details of your testing will help us make a better decision.
Further information regarding the verification process can be found at https:/ /wiki.ubuntu. com/QATeam/ PerformingSRUVe rification . Thank you in advance!