** Changed in: unity8 (Ubuntu Vivid)
Status: New => Fix Released
** Changed in: unity8 (Ubuntu Vivid)
Assignee: (unassigned) => Michał Sawicz (saviq)
** No longer affects: unity8
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to mir in Ubuntu.
https://bugs.launchpad.net/bugs/1238417
Title:
Unity does not process events from evdev device created before unity
is restarted (autopilot tests)
Status in Autopilot:
Invalid
Status in Mir:
Fix Released
Status in mir package in Ubuntu:
Fix Released
Status in unity8 source package in Vivid:
Fix Released
Bug description:
Unity does not process events from evdev device created before unity
is restarted (i.e. in autopilot tests)
Brief:
In an autopilot test if you have a touch device object, launch unity, do some
tapping/dragging, stop unity, start it again the same created device will have
no effect on the new unity.
(i.e. attempt to swipe greeter will fail)
* To reproduce using python shell:
(Have 2 terminals, both on the device(ssh/adb shell); one for python
shell the other for starting/stopping unity)
1. Make sure unity8 is running on the device
2. In the python shell execute:
from autopilot.input import Touch
touch = Touch.create()
touch.drag(717,669,144,669) # assuming maguro, but some movement will happen
regardless
3. You will see the greeter disappear/dash move/some movement.
4. Restart unity (without restarting the python shell)
stop unity8
start unity8
5. Back in the python terminal, re-execute the drag:
touch.drag(717,669,144,669)
6. Nothing will happen to unity (no greeter movement etc.)
7. (Work around) Re-create the device to get movement back (in python
terminal):
from autopilot.input import _uinput
_uinput._touch_device = _uinput.create_touch_device()
touch.drag(717,669,144,669) # Movement happens again.
7b. Or you can kill the python shell and do the pythno steps from
scratch, but that just does `_uinput.create_touch_device()` again
* To reproduce using autopilot:
Any test after the first fails due to input not being processed by the evdev
device that was created before unity8 is started.
# Run at least 2 tests:
$ autopilot run -v unity8.shell.tests.test_hud.TestHud.test_show_hud_appears
unity8.shell.tests.test_hud.TestHud.test_hide_hud_dragging
The second test will fail due to failing to swipe the greeter away.
* Extra details:
If I add extra logging:
$ initctl set-env MIR_SERVER_INPUT_REPORT=log
$ initctl set-env MIR_SERVER_LEGACY_INPUT_REPORT=log
I see details in the logs (~/.cache/upstart/unity8.log) when the drag is
attempted:
...
[II, input] Received event (when, type, code, value) from kernel:
(1381464336335967000ns, 3, 54, 621)
[II, input] Received event (when, type, code, value) from kernel:
(1381464336335967000ns, 0, 0, 0)
[II, input] Published motion event (seq_id, event_time) to fd 65: (305,
1381464336335967000)
[II, input] Received event finished (seq_id) from fd 65: 305
...
But nothing happens on the screen (I am able to manually swipe the
screen).
* Workaround
A work around is to add this to the test setup:
from autopilot.input import _uinput
_uinput._touch_device = _uinput.create_touch_device()
Which forces the creation of a new device for this specific test run
and instance of unity.
related https://bugs.launchpad.net/mir/+bug/1237784
To manage notifications about this bug go to:
https://bugs.launchpad.net/autopilot/+bug/1238417/+subscriptions
--
Mailing list: https://launchpad.net/~touch-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~touch-packages
More help : https://help.launchpad.net/ListHelp