Merge lp://staging/~raof/mir/dont-tear-down-compositor-if-unnecessary into lp://staging/mir
Status: | Merged |
---|---|
Approved by: | Daniel van Vugt |
Approved revision: | no longer in the source branch. |
Merged at revision: | 3712 |
Proposed branch: | lp://staging/~raof/mir/dont-tear-down-compositor-if-unnecessary |
Merge into: | lp://staging/mir |
Diff against target: |
541 lines (+293/-13) 16 files modified
include/platform/mir/graphics/display.h (+18/-0) include/test/mir/test/doubles/null_display.h (+4/-0) src/platforms/android/server/display.cpp (+6/-0) src/platforms/android/server/display.h (+1/-0) src/platforms/eglstream-kms/server/display.cpp (+6/-0) src/platforms/eglstream-kms/server/display.h (+2/-0) src/platforms/mesa/server/kms/display.cpp (+6/-0) src/platforms/mesa/server/kms/display.h (+1/-0) src/platforms/mesa/server/x11/graphics/display.cpp (+6/-0) src/platforms/mesa/server/x11/graphics/display.h (+3/-0) src/server/graphics/nested/display.cpp (+6/-0) src/server/graphics/nested/display.h (+3/-0) src/server/scene/mediating_display_changer.cpp (+37/-4) tests/include/mir/test/doubles/mock_display.h (+2/-0) tests/mir_test_framework/stubbed_graphics_platform.cpp (+4/-0) tests/unit-tests/scene/test_mediating_display_changer.cpp (+188/-9) |
To merge this branch: | bzr merge lp://staging/~raof/mir/dont-tear-down-compositor-if-unnecessary |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mir CI Bot | continuous-integration | Approve | |
Cemil Azizoglu (community) | Approve | ||
Alan Griffiths | Approve | ||
Review via email: mp+305778@code.staging.launchpad.net |
This proposal supersedes a proposal from 2016-09-09.
Commit message
Prevent unnecessary reinitialisation of the compositor on display configuration (round 1)
We currently need to tear down and reinitialise the compositor on display changes because (a) we have no way of adding or removing compositors short of a full teardown/rebuild cycle and, worse (b) because the compositor takes a non-owning reference to a DisplayBuffer and display configuration will frequently destroy all existing DisplayBuffers.
Add an interface to the platform's Display to check when a display configuration change will *not* destroy existing DisplayBuffers. If it will not, that avoids problem (b), so check if any new outputs have been enabled. If neither of those are the case we can safely apply the display configuration without reinitialising the compositor.
Follow up work will enable this in the various graphics platforms.
Fixes (part one): https:/
FAILED: Continuous integration, rev:3702 /mir-jenkins. ubuntu. com/job/ mir-ci/ 1678/ /mir-jenkins. ubuntu. com/job/ build-mir/ 2103/console /mir-jenkins. ubuntu. com/job/ build-0- fetch/2165 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 2156 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial+ overlay/ 2156 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= yakkety/ 2156 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= yakkety/ 2131/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 2131 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 2131/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= yakkety/ 2131 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= yakkety/ 2131/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 2131 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 2131/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 2131 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 2131/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: 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/ 1678/rebuild
https:/