Mir

Merge lp://staging/~raof/mir/basic-fullscreen-on-outputs into lp://staging/mir

Proposed by Chris Halse Rogers
Status: Work in progress
Proposed branch: lp://staging/~raof/mir/basic-fullscreen-on-outputs
Merge into: lp://staging/mir
Diff against target: 1095 lines (+699/-39)
19 files modified
include/client/mir_toolkit/mir_surface.h (+17/-0)
include/common/mir_toolkit/common.h (+12/-0)
include/server/mir/scene/surface_creation_parameters.h (+9/-0)
include/server/mir/shell/display_configuration_controller.h (+1/-1)
src/client/mir_connection.cpp (+9/-0)
src/client/mir_surface.h (+1/-0)
src/client/mir_surface_api.cpp (+16/-0)
src/client/symbols.map (+1/-0)
src/include/server/mir/frontend/display_changer.h (+4/-4)
src/protobuf/mir_protobuf.proto (+2/-0)
src/server/frontend/CMakeLists.txt (+1/-0)
src/server/frontend/authorizing_display_changer.cpp (+4/-4)
src/server/frontend/authorizing_display_changer.h (+4/-4)
src/server/frontend/session_mediator.cpp (+37/-0)
src/server/scene/mediating_display_changer.cpp (+6/-6)
src/server/scene/mediating_display_changer.h (+8/-8)
tests/acceptance-tests/test_new_display_configuration.cpp (+560/-5)
tests/include/mir/test/doubles/mock_display_changer.h (+3/-3)
tests/include/mir/test/doubles/null_display_changer.h (+4/-4)
To merge this branch: bzr merge lp://staging/~raof/mir/basic-fullscreen-on-outputs
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Needs Fixing
Alan Griffiths Needs Information
Review via email: mp+304739@code.staging.launchpad.net

Commit message

New session display configuration API, part one.

Add mir_surface_spec_set_fullscreen_on_outputs. This takes a surface and an output configuration, applies the configuration to the client's session configuration, and makes the surface fullscreen on that output.

Description of the change

This is obviously missing a bunch of stuff, including:
*) mir_surface_apply_spec() support
*) Error detection and notification
*) Some way for clients to know when it's succeeded.
*) Testing for surface-size ≠ output resolution

But it's probably enough to usefully review.

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
3694. By Chris Halse Rogers

Explicitly make_tuple

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
3695. By Chris Halse Rogers

Don't leak surface specs in the tests

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:3695
https://mir-jenkins.ubuntu.com/job/mir-ci/1632/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/2042/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2104
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2095
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2095
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2095
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2068/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2068
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2068/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2068
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2068/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2068/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2068/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2068/console

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/1632/rebuild

review: Needs Fixing (continuous-integration)
3696. By Chris Halse Rogers

Hand-hold old GCCs

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:3696
https://mir-jenkins.ubuntu.com/job/mir-ci/1633/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/2043/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2105
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2096
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2096
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2096
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2069/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2069
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2069/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2069
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2069/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2069
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2069/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2069
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2069/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2069/console

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/1633/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

What problem is this solving?

We can already create fullscreen surfaces on a specified output.

We can already apply a session display config.

So is this essentially adding "fullscreen on multiple outputs"?

What does that mean? Can these outputs have an arbitrary geometry? E.g. if I arrange outputs:

ABC
DEF
GHI

What is fullscreen on AFG?

review: Needs Information
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Chris Halse Rogers (raof) wrote :

Oh! I didn't post this earlier. Stupid tab.

We *don't* have a not-to-be-deprecated way of setting the session display config. mir_connection_apply_display_config() takes a to-be-deprecated MirDisplayConfiguration* argument.

This is (mostly) option 2 on
https://docs.google.com/document/d/1wpoHVYdPZGthN2WS8oDvhRlpyuUqrizK1C4quE4XwMk

I think I'll rework this to remove the MirOutput*. As you point out, it makes it non-obvious how some things work.

(My answer to the “what is fullscreen on AFG” is “the client receives an error for not having the origins of the displays line up”, but it's much more obvious if this case just doesn't come up).

Unmerged revisions

3696. By Chris Halse Rogers

Hand-hold old GCCs

3695. By Chris Halse Rogers

Don't leak surface specs in the tests

3694. By Chris Halse Rogers

Explicitly make_tuple

3693. By Chris Halse Rogers

Test that we can set all output properties in mir_surface_spec_set_fullscreen_on_outputs()

3692. By Chris Halse Rogers

Document and test that mir_surface_spec_set_fullscreen_on_outputs() can disable outputs.

3691. By Chris Halse Rogers

Fixup documentation somewhat

3690. By Chris Halse Rogers

Support making a surface fullscreen on multiple outputs

3689. By Chris Halse Rogers

Factor out some test helper methods

3688. By Chris Halse Rogers

Split test into “changes to correct mode” and “surface has correct position/size”

3687. By Chris Halse Rogers

...and test that the fullscreen-on-outputs-surface ends up where we expect

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches