Merge lp://staging/~andreas-pokorny/mir/fix-1672955 into lp://staging/mir
Status: | Merged |
---|---|
Approved by: | Daniel van Vugt |
Approved revision: | no longer in the source branch. |
Merged at revision: | 4114 |
Proposed branch: | lp://staging/~andreas-pokorny/mir/fix-1672955 |
Merge into: | lp://staging/mir |
Prerequisite: | lp://staging/~andreas-pokorny/mir/store-device-config |
Diff against target: |
308 lines (+99/-33) 6 files modified
src/server/input/default_device.cpp (+30/-15) src/server/input/default_device.h (+2/-1) src/server/input/default_input_device_hub.cpp (+19/-12) src/server/input/default_input_device_hub.h (+6/-5) tests/unit-tests/input/test_default_device.cpp (+23/-0) tests/unit-tests/input/test_default_input_device_hub.cpp (+19/-0) |
To merge this branch: | bzr merge lp://staging/~andreas-pokorny/mir/fix-1672955 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Kevin DuBois (community) | Approve | ||
Alan Griffiths | Approve | ||
Alexandros Frantzis (community) | Approve | ||
Mir CI Bot | continuous-integration | Approve | |
Review via email: mp+320066@code.staging.launchpad.net |
Commit message
Ensure that no action is still queued that may access the mir::input:
Shared pointers to mir::input::Device are handed out to other threads and may still be used after the mir::input:
Description of the change
The attached bug was caused by actions in the queue that try to apply configuration while the device was already removed. mir::input::Device does not to keep the platform devices alive. Changing that to shared_ptr does not really improve the situation as we would keep the device alive until the queue is processed. Instead this change will remove the queue instead such that outstanding actions are canceled. All that happens inside the input thread..
Proposing that on top of lp:~andreas-pokorny/mir/store-device-config since it would conflict otherwise.
PASSED: Continuous integration, rev:4074 /mir-jenkins. ubuntu. com/job/ mir-ci/ 3180/ /mir-jenkins. ubuntu. com/job/ build-mir/ 4273 /mir-jenkins. ubuntu. com/job/ build-0- fetch/4360 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 4350 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial+ overlay/ 4350 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= zesty/4350 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/4300 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/4300/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4300 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4300/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4300 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4300/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 4300 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 4300/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 4300 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 4300/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4300 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4300/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild: /mir-jenkins. ubuntu. com/job/ mir-ci/ 3180/rebuild
https:/