Can't accept owned touch that has ended.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
frame |
Fix Released
|
High
|
Daniel d'Andrada | ||
Precise |
Fix Released
|
High
|
Francis Ginther |
Bug Description
frame lib fails to forward the accept/reject command to xserver for an owned touch if it has already ended.
[Test Case]
Steps to reproduce the issue:
1 - touch 1 begins and gets ownership
2 - touch 1 ends
3 - touch 2 begins and gets ownership
4 - frame client accepts touch 1
An example of when this happens in normal usage is performing a three-touch tap on a touchscreen in unity where the first touch to hit the screen is over a menu item that opens a drop-down menu.
Expected outcome:
Frame lib accepts the touch on the XInput backend. All further input events continue as normal.
Actual outcome:
Nothing happens. Frame lib never accepts the touch. This causes the touchscreen to behave as though it has "locked up". Touches no longer cause emulated button press/release events, so it is hard to interact with the desktop.
[Regression Potential]
Small. Look for issues when using unity gestures on a trackpad or when using a touchscreen for any type of interactions in unity.
The actual code change involves removing logic that waits for a touch to end before it is accepted or rejected. This was required in the initial XInput multitouch protocol, but because unnecessary upon protocol finalization. Now, frame simply forwards accept and reject when they occur. This simplifies the code considerably.
A new regression test case has been added for this issue. All previous functional and regression test cases continue to pass.
Related branches
- Chase Douglas (community): Approve
-
Diff: 1378 lines (+1014/-152)19 files modified.bzrignore (+4/-3)
Makefile.am (+0/-2)
configure.ac (+12/-4)
m4/gtest.m4 (+51/-0)
src/x11/window_x11.cpp (+21/-41)
src/x11/window_x11.h (+0/-2)
test/Makefile-xorg-gtest.am (+0/-63)
test/Makefile.am (+5/-0)
test/README (+11/-0)
test/gtest/Makefile-xorg-gtest.am (+68/-0)
test/gtest/Makefile.am (+11/-0)
test/integration/Makefile.am (+20/-37)
test/regular/Makefile.am (+57/-0)
test/regular/accept-ended-touch.cpp (+72/-0)
test/regular/frame-fixture.cpp (+161/-0)
test/regular/frame-fixture.h (+31/-0)
test/x11_mocks/Makefile.am (+14/-0)
test/x11_mocks/x11_mocks.cpp (+435/-0)
test/x11_mocks/x11_mocks.h (+41/-0)
description: | updated |
Changed in utouch-frame: | |
assignee: | nobody → Daniel d'Andrada (dandrader) |
importance: | Undecided → High |
status: | New → In Progress |
description: | updated |
Changed in utouch-frame: | |
status: | In Progress → Fix Committed |
Changed in utouch-frame: | |
milestone: | none → utouch-frame-2.2.4 |
status: | Fix Committed → Fix Released |
description: | updated |
description: | updated |
description: | updated |
Hello Daniel, or anyone else affected,
Accepted frame into precise-proposed. The package will build now and be available at http:// launchpad. net/ubuntu/ +source/ frame/2. 2.4-0ubuntu0. 12.04.1 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!