Merge lp://qastaging/~afrantzis/mir/fix-1317801-alt into lp://qastaging/mir
Status: | Merged |
---|---|
Approved by: | Alexandros Frantzis |
Approved revision: | no longer in the source branch. |
Merged at revision: | 1628 |
Proposed branch: | lp://qastaging/~afrantzis/mir/fix-1317801-alt |
Merge into: | lp://qastaging/mir |
Diff against target: |
162 lines (+73/-10) 2 files modified
src/server/compositor/buffer_queue.cpp (+10/-3) tests/unit-tests/compositor/test_buffer_queue.cpp (+63/-7) |
To merge this branch: | bzr merge lp://qastaging/~afrantzis/mir/fix-1317801-alt |
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot (community) | continuous-integration | Approve | |
Daniel van Vugt | Needs Fixing | ||
Alberto Aguirre (community) | Approve | ||
Alan Griffiths | Abstain | ||
Review via email:
|
Commit message
compositor: Fix race in BufferQueue (LP: #1317801)
An alternative approach to fixing bug 1317801, hopefully also resolving other races involving compositor_
Copying the std::shared_ptr<> instead of using a reference to a 'buffers' vector element ensures that acquired_buffer remains valid remain valid when new elements are added to the 'buffers' vector (i.e. in client_acquire()).
This has two side effects for the nbuffers == 1 case:
1. There is a delay in giving the compositor the resized vector (acceptable)
2. We may compositor_
Description of the change
compositor: Fix race in BufferQueue (LP: #1317801)
An alternative approach to fixing bug 1317801, hopefully also resolving other races involving compositor_
Copying the std::shared_ptr<> instead of using a reference to a 'buffers' vector element ensures that acquired_buffer remains valid remain valid when new elements are added to the 'buffers' vector (i.e. in client_acquire()).
This has two side effects for the nbuffers == 1 case:
1. There is a delay in giving the compositor the resized vector (acceptable)
2. We may compositor_
PASSED: Continuous integration, rev:1625 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- ci/1606/ jenkins. qa.ubuntu. com/job/ mir-android- utopic- i386-build/ 166 jenkins. qa.ubuntu. com/job/ mir-clang- utopic- amd64-build/ 167 jenkins. qa.ubuntu. com/job/ mir-mediumtests -utopic- touch/167 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- amd64-ci/ 125 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- amd64-ci/ 125/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- armhf-ci/ 123 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- utopic- armhf-ci/ 123/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/391 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/391/ artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-mediumtests -runner- mako/1425 s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 7104
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/mir- team-mir- development- branch- ci/1606/ rebuild
http://