Mir

Merge lp:~mir-team/mir/0.26-old into lp:mir/ubuntu

Proposed by Alan Griffiths on 2017-04-25
Status: Merged
Approved by: Alan Griffiths on 2017-05-28
Approved revision: 4067
Merged at revision: 1302
Proposed branch: lp:~mir-team/mir/0.26-old
Merge into: lp:mir/ubuntu
Diff against target: 2048 lines (+422/-227)
37 files modified
CMakeLists.txt (+1/-1)
debian/changelog (+19/-0)
include/client/mir/event_printer.h (+5/-5)
include/client/mir/events/event_builders.h (+10/-10)
include/client/mir_toolkit/client_types.h (+22/-25)
include/client/mir_toolkit/debug/surface.h (+4/-3)
include/client/mir_toolkit/events/event.h (+11/-10)
include/client/mir_toolkit/events/input_configuration_event.h (+8/-4)
include/client/mir_toolkit/events/keymap_event.h (+1/-1)
include/client/mir_toolkit/events/surface_event.h (+3/-2)
include/client/mir_toolkit/events/surface_output_event.h (+6/-5)
include/client/mir_toolkit/events/surface_placement.h (+2/-1)
include/client/mir_toolkit/mir_blob.h (+3/-2)
include/client/mir_toolkit/mir_buffer_stream.h (+3/-1)
include/client/mir_toolkit/mir_connection.h (+9/-8)
include/client/mir_toolkit/mir_cursor_configuration.h (+2/-1)
include/client/mir_toolkit/mir_display_configuration.h (+3/-2)
include/client/mir_toolkit/mir_persistent_id.h (+5/-4)
include/client/mir_toolkit/mir_platform_message.h (+8/-7)
include/client/mir_toolkit/mir_screencast.h (+2/-1)
include/client/mir_toolkit/mir_surface.h (+61/-60)
include/client/mir_toolkit/mir_wait.h (+3/-2)
include/client/mir_toolkit/mir_window.h (+4/-3)
include/client/mir_toolkit/rs/mir_render_surface.h (+47/-11)
include/core/mir_toolkit/common.h (+8/-6)
include/core/mir_toolkit/deprecations.h (+36/-0)
src/common/events/input_configuration_event.cpp (+1/-3)
src/include/common/mir/events/input_configuration_event.h (+1/-2)
src/platforms/android/utils/CMakeLists.txt (+1/-0)
src/platforms/mesa/server/kms/kms_page_flipper.cpp (+6/-6)
src/server/input/default_configuration.cpp (+6/-2)
src/server/input/default_device.cpp (+56/-25)
src/server/input/default_device.h (+4/-1)
src/server/input/default_input_device_hub.cpp (+15/-9)
src/server/input/default_input_device_hub.h (+5/-4)
tests/unit-tests/input/test_default_device.cpp (+23/-0)
tests/unit-tests/input/test_default_input_device_hub.cpp (+18/-0)
To merge this branch: bzr merge lp:~mir-team/mir/0.26-old
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve on 2017-05-26
Alan Griffiths Needs Fixing on 2017-05-26
Daniel van Vugt 2017-04-25 Approve on 2017-05-11
Review via email: mp+323122@code.launchpad.net

Commit message

Mir release 0.26.3

To post a comment you must log in.
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:4056
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/109/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4573/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4699
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4688
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4688
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4605
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4605/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4605/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4605
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4605/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4605
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4605/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4605
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4605/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Daniel van Vugt (vanvugt) wrote :

Sounds OK, but we can support clang on xenial still (trivial fixes pending) so this would need to be more flexible:

+ #if defined(__clang__) || !defined(__GNUC__) || (__GNUC__ >= 6)

review: Needs Fixing
Daniel van Vugt (vanvugt) wrote :

Actually, that's fine. Automatic detection of clang is inconsequential. What's important is xenial distro (hence gcc).

review: Approve
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4057
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/112/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4590
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4718
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4707
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4707
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4622
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4622/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4622
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4622/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4622
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4622/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4622
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4622/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4622
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4622/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4059
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/114/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4600
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4728
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4717
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4717
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4632
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4632
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4632
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4632
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4632/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4632
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4632/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4061
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/115/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4602
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4730
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4719
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4719
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4634
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4634/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4634
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4634/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4634
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4634/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4634
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4634/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4634
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4634/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4062
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/118/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4606
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4734
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4723
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4723
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4638
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4638/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4638
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4638/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4638
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4638/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4638
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4638/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4638
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4638/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4063
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/119/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4607
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4735
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4724
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4724
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4639
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4639/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4639
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4639/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4639
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4639/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4639
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4639/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4639
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4639/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4064
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/120/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4608
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4736
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4725
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4725
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4640
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4640/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4640
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4640/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4640
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4640/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4640
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4640/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4640
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4640/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Daniel van Vugt (vanvugt) wrote :

We do have arm64 binaries in current Ubuntu. So won't this break things for post-xenial?

47 - libhardware-dev [i386 amd64 armhf arm64],
48 - libandroid-properties-dev [i386 amd64 armhf arm64],
49 + libhardware-dev [i386 amd64 armhf],
50 + libandroid-properties-dev [i386 amd64 armhf],

review: Needs Information
Alan Griffiths (alan-griffiths) wrote :

> We do have arm64 binaries in current Ubuntu. So won't this break things for
> post-xenial?
>
> 47 - libhardware-dev [i386 amd64 armhf arm64],
> 48 - libandroid-properties-dev [i386 amd64 armhf arm64],
> 49 + libhardware-dev [i386 amd64 armhf],
> 50 + libandroid-properties-dev [i386 amd64 armhf],

Only if we were to land it there. The sole purpose of this release is to update the 16.04 LTS (to get 0.26 into Ubuntu Core).

Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4065
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/121/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4610
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4739
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4728
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4728
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4642
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4642/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4642
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4642/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4642
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4642/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4642
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4642/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4642
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4642/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Daniel van Vugt (vanvugt) wrote :

OK, fair point. Assuming zesty/artful only get Mir 0.27 (or no upgrades at all) then that will work.

review: Approve
Alan Griffiths (alan-griffiths) wrote :

The SRU process requires this (or later) to exist in later archives. So first we need it in artful, then we can land in zesty, then in yakkety and, finally, in xenial.

review: Needs Fixing
lp:~mir-team/mir/0.26-old updated on 2017-05-26
4066. By Alan Griffiths on 2017-05-26

Restore platforms that are unsupported in xenial, add support for building downstreams on, and re-sync deprecation macros with current development.

Mir CI Bot (mir-ci-bot) wrote :

FAILED: Continuous integration, rev:4066
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/122/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4655/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4788
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/4779
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4779
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4779
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4692
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4692/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4692
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4692/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4692
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4692/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4692/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4692
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4692/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4692
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4692/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4692
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4692/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4692
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4692/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
lp:~mir-team/mir/0.26-old updated on 2017-05-26
4067. By Alan Griffiths on 2017-05-26

More restore arm64

Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4067
https://mir-jenkins.ubuntu.com/job/mir-ubuntu-ci/123/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4659
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4792
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/4782
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4782
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4782
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/4695/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4695/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/4695/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/4695/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4695/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/4695/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/4695/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4695
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/4695/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2017-02-17 02:24:03 +0000
3+++ CMakeLists.txt 2017-05-26 16:23:13 +0000
4@@ -29,7 +29,7 @@
5
6 set(MIR_VERSION_MAJOR 0)
7 set(MIR_VERSION_MINOR 26)
8-set(MIR_VERSION_PATCH 2)
9+set(MIR_VERSION_PATCH 3)
10
11 add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})
12 add_definitions(-DMIR_VERSION_MINOR=${MIR_VERSION_MINOR})
13
14=== modified file 'debian/changelog'
15--- debian/changelog 2017-04-12 21:43:04 +0000
16+++ debian/changelog 2017-05-26 16:23:13 +0000
17@@ -1,3 +1,22 @@
18+mir (0.26.3-0ubuntu1) UNRELEASED; urgency=medium
19+
20+ * New upstream release 0.26.3 (https://launchpad.net/mir/+milestone/0.26.3)
21+ - Enhancements:
22+ . Make deprecations optional (and default to off for builds on 16.04 LTS)
23+ . Added support for building on Ubuntu 17.10 artful.
24+ - Bugs fixed:
25+ . Mir needs to be updated to 0.26 in 16.04LTS (LP: #1685186)
26+ . unity-system-compositor crashed with SIGSEGV in
27+ libinput_device_config_accel_is_available() from
28+ libinput_device_config_accel_set_speed() from
29+ mir::input::evdev::LibInputDevice::apply_settings() (LP: #1672955)
30+ . Please transition to Boost 1.62 (LP: #1675138)
31+ . Mir sending key repeat events continually to nested shell after VT
32+ switch (causes Unity8 lockup for a while) (LP: #1675357)
33+ . mir_demo_standalone_render_overlays fails to link (LP: #1677239)
34+
35+ -- Daniel van Vugt <daniel.van.vugt@canonical.com> Thu, 30 Mar 2017 11:43:28 +0800
36+
37 mir (0.26.2+17.04.20170322.1-0ubuntu2) zesty; urgency=medium
38
39 [ Mattia Rizzolo ]
40
41=== modified file 'include/client/mir/event_printer.h'
42--- include/client/mir/event_printer.h 2017-01-19 05:30:03 +0000
43+++ include/client/mir/event_printer.h 2017-05-26 16:23:13 +0000
44@@ -35,19 +35,19 @@
45 std::ostream& operator<<(std::ostream& out, MirOrientation orientation);
46
47 std::ostream& operator<<(std::ostream& out, MirSurfaceAttrib attribute)
48-__attribute__ ((deprecated("use << with MirWindowAttrib instead")));
49+MIR_FOR_REMOVAL_IN_VERSION_1("use << with MirWindowAttrib instead");
50 std::ostream& operator<<(std::ostream& out, MirWindowAttrib attribute);
51 std::ostream& operator<<(std::ostream& out, MirSurfaceFocusState state)
52-__attribute__ ((deprecated("use << with MirWindowFocusState instead")));
53+MIR_FOR_REMOVAL_IN_VERSION_1("use << with MirWindowFocusState instead");
54 std::ostream& operator<<(std::ostream& out, MirWindowFocusState state);
55 std::ostream& operator<<(std::ostream& out, MirSurfaceVisibility state)
56-__attribute__ ((deprecated("use << with MirWindowVisibility instead")));
57+MIR_FOR_REMOVAL_IN_VERSION_1("use << with MirWindowVisibility instead");
58 std::ostream& operator<<(std::ostream& out, MirWindowVisibility state);
59 std::ostream& operator<<(std::ostream& out, MirSurfaceType type)
60-__attribute__ ((deprecated("use << with MirWindowType instead")));
61+MIR_FOR_REMOVAL_IN_VERSION_1("use << with MirWindowType instead");
62 std::ostream& operator<<(std::ostream& out, MirWindowType type);
63 std::ostream& operator<<(std::ostream& out, MirSurfaceState state)
64-__attribute__ ((deprecated("use << with MirWindowState instead")));
65+MIR_FOR_REMOVAL_IN_VERSION_1("use << with MirWindowState instead");
66 std::ostream& operator<<(std::ostream& out, MirWindowState state);
67
68 std::ostream& operator<<(std::ostream& out, MirPromptSessionEvent const& event);
69
70=== modified file 'include/client/mir/events/event_builders.h'
71--- include/client/mir/events/event_builders.h 2017-01-19 05:30:03 +0000
72+++ include/client/mir/events/event_builders.h 2017-05-26 16:23:13 +0000
73@@ -48,7 +48,7 @@
74 EventUPtr make_event(frontend::SurfaceId const& surface_id, geometry::Size const& size);
75 // Surface configure event
76 EventUPtr make_event(frontend::SurfaceId const& surface_id, MirSurfaceAttrib attribute, int value)
77-__attribute__ ((deprecated("use make_event with MirWindowAttribute instead")));
78+MIR_FOR_REMOVAL_IN_VERSION_1("use make_event with MirWindowAttribute instead");
79 // Window configure event
80 EventUPtr make_event(frontend::SurfaceId const& surface_id, MirWindowAttrib attribute, int value);
81 // Close surface event
82@@ -81,12 +81,12 @@
83 // Deprecated version with uint64_t mac
84 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
85 uint64_t mac, MirKeyboardAction action, xkb_keysym_t key_code,
86- int scan_code, MirInputEventModifiers modifiers) __attribute__ ((deprecated));
87+ int scan_code, MirInputEventModifiers modifiers) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
88
89 // Deprecated version without mac
90 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
91 MirKeyboardAction action, xkb_keysym_t key_code,
92- int scan_code, MirInputEventModifiers modifiers) __attribute__ ((deprecated));
93+ int scan_code, MirInputEventModifiers modifiers) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
94
95 // Touch event
96 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
97@@ -94,11 +94,11 @@
98
99 // Deprecated version with uint64_t mac
100 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
101- uint64_t mac, MirInputEventModifiers modifiers) __attribute__ ((deprecated));
102+ uint64_t mac, MirInputEventModifiers modifiers) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
103
104 // Deprecated version without mac
105 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
106- MirInputEventModifiers modifiers) __attribute__ ((deprecated));
107+ MirInputEventModifiers modifiers) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
108
109 void add_touch(MirEvent &event, MirTouchId touch_id, MirTouchAction action,
110 MirTouchTooltype tooltype, float x_axis_value, float y_axis_value,
111@@ -110,14 +110,14 @@
112 uint64_t mac, MirInputEventModifiers modifiers, MirPointerAction action,
113 MirPointerButtons buttons_pressed,
114 float x_axis_value, float y_axis_value,
115- float hscroll_value, float vscroll_value) __attribute__ ((deprecated));
116+ float hscroll_value, float vscroll_value) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
117
118 // Deprecated version without relative axis and mac
119 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
120 MirInputEventModifiers modifiers, MirPointerAction action,
121 MirPointerButtons buttons_pressed,
122 float x_axis_value, float y_axis_value,
123- float hscroll_value, float vscroll_value) __attribute__ ((deprecated));
124+ float hscroll_value, float vscroll_value) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
125
126 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
127 std::vector<uint8_t> const& mac, MirInputEventModifiers modifiers, MirPointerAction action,
128@@ -132,7 +132,7 @@
129 MirPointerButtons buttons_pressed,
130 float x_axis_value, float y_axis_value,
131 float hscroll_value, float vscroll_value,
132- float relative_x_value, float relative_y_value) __attribute__ ((deprecated));
133+ float relative_x_value, float relative_y_value) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
134
135 // Deprecated version without mac
136 EventUPtr make_event(MirInputDeviceId device_id, std::chrono::nanoseconds timestamp,
137@@ -140,11 +140,11 @@
138 MirPointerButtons buttons_pressed,
139 float x_axis_value, float y_axis_value,
140 float hscroll_value, float vscroll_value,
141- float relative_x_value, float relative_y_value) __attribute__ ((deprecated));
142+ float relative_x_value, float relative_y_value) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
143
144 // Input configuration event
145 EventUPtr make_event(MirInputConfigurationAction action,
146- MirInputDeviceId id, std::chrono::nanoseconds time) __attribute__((deprecated));
147+ MirInputDeviceId id, std::chrono::nanoseconds time) MIR_FOR_REMOVAL_IN_VERSION_1("unused");
148
149 EventUPtr make_event(std::chrono::nanoseconds timestamp,
150 MirPointerButtons pointer_buttons,
151
152=== modified file 'include/client/mir_toolkit/client_types.h'
153--- include/client/mir_toolkit/client_types.h 2017-03-16 16:47:21 +0000
154+++ include/client/mir_toolkit/client_types.h 2017-05-26 16:23:13 +0000
155@@ -23,6 +23,7 @@
156
157 #include <mir_toolkit/events/event.h>
158 #include <mir_toolkit/common.h>
159+#include <mir_toolkit/deprecations.h>
160
161 #include <stddef.h>
162
163@@ -38,23 +39,22 @@
164 typedef void* MirEGLNativeWindowType;
165 typedef void* MirEGLNativeDisplayType;
166 typedef struct MirConnection MirConnection;
167-typedef struct MirSurface MirSurface __attribute__((deprecated("Use MirWindow instead")));
168+typedef struct MirSurface MirSurface MIR_FOR_REMOVAL_IN_VERSION_1("Use MirWindow instead");
169 typedef struct MirSurface MirWindow;
170-typedef struct MirSurfaceSpec MirSurfaceSpec __attribute__((deprecated("Use MirWindowSpec instead")));
171+typedef struct MirSurfaceSpec MirSurfaceSpec MIR_FOR_REMOVAL_IN_VERSION_1("Use MirWindowSpec instead");
172 typedef struct MirSurfaceSpec MirWindowSpec;
173 typedef struct MirScreencast MirScreencast;
174 typedef struct MirScreencastSpec MirScreencastSpec;
175 typedef struct MirPromptSession MirPromptSession;
176 typedef struct MirBufferStream MirBufferStream;
177-typedef struct MirPersistentId MirPersistentId __attribute((deprecated("Use MirWindowId instead")));
178+typedef struct MirPersistentId MirPersistentId MIR_FOR_REMOVAL_IN_VERSION_1("Use MirWindowId instead");
179 typedef struct MirPersistentId MirWindowId;
180 typedef struct MirBlob MirBlob;
181 typedef struct MirDisplayConfig MirDisplayConfig;
182 typedef struct MirError MirError;
183 typedef struct MirPresentationChain MirPresentationChain;
184 typedef struct MirBuffer MirBuffer;
185-typedef struct MirRenderSurface MirRenderSurface
186-__attribute__((deprecated("This type is slated for rename due to MirRenderSurface-->MirSurface transition")));
187+typedef struct MirRenderSurface MirRenderSurface;
188
189 /**
190 * Descriptor for an output connection.
191@@ -82,7 +82,7 @@
192 typedef void (*MirConnectedCallback)(
193 MirConnection *connection, void *client_context);
194 typedef MirConnectedCallback mir_connected_callback
195- __attribute__((deprecated("Use MirConnectedCallback instead")));
196+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirConnectedCallback instead");
197
198 /**
199 * Callback to be passed when calling window functions :
200@@ -102,7 +102,7 @@
201 typedef void (*MirBufferStreamCallback)(
202 MirBufferStream *stream, void *client_context);
203 typedef MirBufferStreamCallback mir_buffer_stream_callback
204- __attribute__((deprecated("Use MirBufferStreamCallback instead")));
205+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirBufferStreamCallback instead");
206
207 /**
208 * Callback for handling of window events.
209@@ -124,7 +124,7 @@
210 typedef void (*MirLifecycleEventCallback)(
211 MirConnection* connection, MirLifecycleState state, void* context);
212 typedef MirLifecycleEventCallback mir_lifecycle_event_callback
213- __attribute__((deprecated("Use MirLifecycleEventCallback instead")));
214+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirLifecycleEventCallback instead");
215
216 /**
217 * Callback called when the server pings for responsiveness testing.
218@@ -136,7 +136,7 @@
219 typedef void (*MirPingEventCallback)(
220 MirConnection* connection, int32_t serial, void* context);
221 typedef MirPingEventCallback mir_ping_event_callback
222- __attribute__((deprecated("Use MirPingEventCallback instead")));
223+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirPingEventCallback instead");
224
225 /**
226 * Callback called when a display config change has occurred
227@@ -147,7 +147,7 @@
228 typedef void (*MirDisplayConfigCallback)(
229 MirConnection* connection, void* context);
230 typedef MirDisplayConfigCallback mir_display_config_callback
231- __attribute__((deprecated("Use MirDisplayConfigCallback instead")));
232+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirDisplayConfigCallback instead");
233
234 /**
235 * Callback called when a request for client file descriptors completes
236@@ -162,7 +162,7 @@
237 typedef void (*MirClientFdCallback)(
238 MirPromptSession *prompt_session, size_t count, int const* fds, void* context);
239 typedef MirClientFdCallback mir_client_fd_callback
240- __attribute__((deprecated("Use MirClientFdCallback instead")));
241+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirClientFdCallback instead");
242
243 #pragma GCC diagnostic push
244 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
245@@ -201,7 +201,7 @@
246 * use the value mir_display_output_id_invalid.
247 */
248 uint32_t output_id;
249-} MirSurfaceParameters __attribute__((deprecated("Use MirWindowParameters instead")));
250+} MirSurfaceParameters MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_get apis or listen for attribute events instead");
251
252 enum { mir_platform_package_max = 32 };
253
254@@ -214,7 +214,7 @@
255 * \todo This should be removed from the public API at the next API break.
256 */
257 #ifndef __cplusplus
258-__attribute__ ((deprecated))
259+MIR_FOR_REMOVAL_IN_VERSION_1("Use of this type is inherently non-portable")
260 #endif
261 typedef enum MirPlatformType
262 {
263@@ -429,7 +429,7 @@
264 typedef void (*MirScreencastCallback)(
265 MirScreencast *screencast, void *client_context);
266 typedef MirScreencastCallback mir_screencast_callback
267- __attribute__((deprecated("Use MirScreencastCallback instead")));
268+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirScreencastCallback instead");
269
270 /**
271 * Callback member of MirPromptSession for handling of prompt sessions.
272@@ -439,7 +439,7 @@
273 typedef void (*MirPromptSessionCallback)(
274 MirPromptSession* prompt_provider, void* context);
275 typedef MirPromptSessionCallback mir_prompt_session_callback
276- __attribute__((deprecated("Use MirPromptSessionCallback instead")));
277+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirPromptSessionCallback instead");
278
279 /**
280 * Callback member of MirPromptSession for handling of prompt sessions events.
281@@ -452,7 +452,7 @@
282 void* context);
283 typedef MirPromptSessionStateChangeCallback
284 mir_prompt_session_state_change_callback
285- __attribute__((deprecated("Use MirPromptSessionStateChangeCallback instead")));
286+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirPromptSessionStateChangeCallback instead");
287
288 /**
289 * Callback called when a platform operation completes.
290@@ -467,7 +467,7 @@
291 typedef void (*MirPlatformOperationCallback)(
292 MirConnection* connection, MirPlatformMessage* reply, void* context);
293 typedef MirPlatformOperationCallback mir_platform_operation_callback
294- __attribute__((deprecated("Use MirPlatformOperationCallback instead")));
295+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirPlatformOperationCallback instead");
296
297 /**
298 * Callback called when a change of input devices has occurred
299@@ -479,7 +479,7 @@
300 typedef void (*MirInputConfigCallback)(
301 MirConnection* connection, void* context);
302 typedef MirInputConfigCallback mir_input_config_callback
303- __attribute__((deprecated("Use MirInputConfigCallback instead")));
304+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirInputConfigCallback instead");
305
306 typedef void (*MirBufferCallback)(MirBuffer*, void* context);
307
308@@ -539,24 +539,21 @@
309 typedef void (*MirErrorCallback)(
310 MirConnection* connection, MirError const* error, void* context);
311 typedef MirErrorCallback mir_error_callback
312- __attribute__((deprecated("Use MirErrorCallback instead")));
313+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirErrorCallback instead");
314
315 #pragma GCC diagnostic push
316 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
317
318 typedef void (*mir_surface_callback)(MirSurface *surface, void *client_context)
319-__attribute__((deprecated("Use MirWindowCallback instead")));
320+MIR_FOR_REMOVAL_IN_VERSION_1("Use MirWindowCallback instead");
321
322 typedef void (*mir_surface_event_callback)(
323 MirSurface* surface, MirEvent const* event, void* context)
324-__attribute__((deprecated("Use MirWindowEventCallback instead")));
325+MIR_FOR_REMOVAL_IN_VERSION_1("Use MirWindowEventCallback instead");
326
327 typedef void (*mir_surface_id_callback)(
328 MirSurface* surface, MirPersistentId* id, void* context)
329-__attribute__((deprecated("Use MirWindowIdCallback instead")));
330-
331-typedef void (*MirRenderSurfaceCallback)(MirRenderSurface*, void* context)
332-__attribute__((deprecated("This type is slated for rename due to MirRenderSurface-->MirSurface transition")));
333+MIR_FOR_REMOVAL_IN_VERSION_1("Use MirWindowIdCallback instead");
334
335 typedef MirSurfaceParameters MirWindowParameters;
336
337
338=== modified file 'include/client/mir_toolkit/debug/surface.h'
339--- include/client/mir_toolkit/debug/surface.h 2017-01-18 04:43:15 +0000
340+++ include/client/mir_toolkit/debug/surface.h 2017-05-26 16:23:13 +0000
341@@ -19,6 +19,7 @@
342 #define MIR_CLIENT_LIBRARY_DEBUG_H
343
344 #include <mir_toolkit/mir_client_library.h>
345+#include <mir_toolkit/deprecations.h>
346
347 /* This header defines debug interfaces that aren't expected to be generally useful
348 * and do not have the same API-stability guarantees that the main API has */
349@@ -65,13 +66,13 @@
350 bool mir_debug_surface_coords_to_screen(MirSurface *surface,
351 int x, int y,
352 int* screen_x, int* screen_y)
353-__attribute__((deprecated("Use mir_extension_window_coordinate_translation instead")));
354+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_extension_window_coordinate_translation instead");
355
356 int mir_debug_surface_id(MirSurface *surface)
357-__attribute__((deprecated("Use mir_debug_window_id() instead")));
358+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_debug_window_id() instead");
359
360 uint32_t mir_debug_surface_current_buffer_id(MirSurface *surface)
361-__attribute__((deprecated("Use mir_debug_window_current_buffer_id() instead")));
362+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_debug_window_current_buffer_id() instead");
363
364 #pragma GCC diagnostic pop
365
366
367=== modified file 'include/client/mir_toolkit/events/event.h'
368--- include/client/mir_toolkit/events/event.h 2017-01-25 08:12:00 +0000
369+++ include/client/mir_toolkit/events/event.h 2017-05-26 16:23:13 +0000
370@@ -22,6 +22,7 @@
371 #include <stddef.h>
372 #include <stdint.h>
373 #include "mir_toolkit/common.h"
374+#include <mir_toolkit/deprecations.h>
375
376 #ifdef __cplusplus
377 /**
378@@ -58,24 +59,24 @@
379 #pragma GCC diagnostic pop
380
381 typedef struct MirSurfaceEvent MirSurfaceEvent
382- __attribute__ ((deprecated("use MirWindowEvent instead")));
383+ MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowEvent instead");
384 typedef struct MirSurfaceEvent MirWindowEvent;
385 typedef struct MirResizeEvent MirResizeEvent;
386 typedef struct MirPromptSessionEvent MirPromptSessionEvent;
387 typedef struct MirOrientationEvent MirOrientationEvent;
388 typedef struct MirCloseSurfaceEvent MirCloseSurfaceEvent
389- __attribute__ ((deprecated("use MirCloseWindowEvent instead")));
390+ MIR_FOR_REMOVAL_IN_VERSION_1("use MirCloseWindowEvent instead");
391 typedef struct MirCloseSurfaceEvent MirCloseWindowEvent;
392 typedef struct MirInputEvent MirInputEvent;
393 typedef struct MirKeymapEvent MirKeymapEvent;
394 typedef struct MirInputConfigurationEvent MirInputConfigurationEvent
395- __attribute__ ((deprecated("Use MirInputDeviceStateEvent and the MirInputConfig callback instead")));
396+ MIR_FOR_REMOVAL_IN_VERSION_1("Use MirInputDeviceStateEvent and the MirInputConfig callback instead");
397 typedef struct MirSurfaceOutputEvent MirSurfaceOutputEvent
398- __attribute__ ((deprecated("use MirWindowOutputEvent instead")));
399+ MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowOutputEvent instead");
400 typedef struct MirSurfaceOutputEvent MirWindowOutputEvent;
401 typedef struct MirInputDeviceStateEvent MirInputDeviceStateEvent;
402 typedef struct MirSurfacePlacementEvent MirSurfacePlacementEvent
403- __attribute__ ((deprecated("use MirWindowPlacementEvent instead")));
404+ MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowPlacementEvent instead");
405 typedef struct MirSurfacePlacementEvent MirWindowPlacementEvent;
406
407 typedef struct MirCookie MirCookie;
408@@ -136,7 +137,7 @@
409 * \return The associated MirSurfaceEvent
410 */
411 MirSurfaceEvent const* mir_event_get_surface_event(MirEvent const* event)
412-__attribute__ ((deprecated("use mir_event_get_window_event instead")));
413+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_event_get_window_event instead");
414
415 /**
416 * Retrieve the MirWindowEvent associated with a MirEvent of
417@@ -195,7 +196,7 @@
418 * \return The associated MirCloseSurfaceEvent
419 */
420 /// @cond
421-__attribute__ ((deprecated))
422+MIR_FOR_REMOVAL_IN_VERSION_1("Use of this function is pointless as there is no way to use the return value")
423 /// @endcond
424 MirCloseSurfaceEvent const* mir_event_get_close_surface_event(MirEvent const* event);
425 #pragma GCC diagnostic pop
426@@ -223,7 +224,7 @@
427 * \return The associated MirInputConfigurationEvent
428 */
429 /// @cond
430-__attribute__((deprecated))
431+MIR_FOR_REMOVAL_IN_VERSION_1("Input devices and changes to the input devices are indicated via the MirInputConfigCallback")
432 /// @endcond
433 MirInputConfigurationEvent const* mir_event_get_input_configuration_event(MirEvent const* event);
434 #pragma GCC diagnostic pop
435@@ -242,7 +243,7 @@
436 * \return The associated MirSurfaceOutputEvent
437 */
438 MirSurfaceOutputEvent const* mir_event_get_surface_output_event(MirEvent const* event)
439-__attribute__((deprecated("use mir_event_get_window_output_event")));
440+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_event_get_window_output_event");
441
442 /**
443 * Retrieve the MirWindowOutputEvent associated with a MirEvent of type
444@@ -279,7 +280,7 @@
445 * \return The associated MirSurfacePlacementEvent
446 */
447 MirSurfacePlacementEvent const* mir_event_get_surface_placement_event(MirEvent const* event)
448-__attribute__((deprecated("use mir_event_get_window_placement_event")));
449+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_event_get_window_placement_event");
450
451 /**
452 * Retrieve the MirWindowPlacementEvent associated with a MirEvent of
453
454=== modified file 'include/client/mir_toolkit/events/input_configuration_event.h'
455--- include/client/mir_toolkit/events/input_configuration_event.h 2017-01-20 16:27:50 +0000
456+++ include/client/mir_toolkit/events/input_configuration_event.h 2017-05-26 16:23:13 +0000
457@@ -20,6 +20,7 @@
458 #define MIR_TOOLKIT_EVENTS_INPUT_CONFIGURATION_EVENT_H_
459
460 #include <mir_toolkit/events/event.h>
461+#include <mir_toolkit/deprecations.h>
462
463 #ifdef __cplusplus
464 /**
465@@ -45,7 +46,7 @@
466 mir_input_configuration_action_configuration_changed,
467 mir_input_configuration_action_device_reset
468 } MirInputConfigurationAction
469-__attribute__((deprecated));
470+MIR_FOR_REMOVAL_IN_VERSION_1("Input devices and changes to the input devices are indicated via the MirInputConfigCallback");
471
472 #pragma GCC diagnostic push
473 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
474@@ -55,7 +56,8 @@
475 * \param[in] ev The input configuration event
476 * \return The action
477 */
478-MirInputConfigurationAction mir_input_configuration_event_get_action(MirInputConfigurationEvent const* ev) __attribute__((deprecated));
479+MirInputConfigurationAction mir_input_configuration_event_get_action(MirInputConfigurationEvent const* ev)
480+MIR_FOR_REMOVAL_IN_VERSION_1("Input devices and changes to the input devices are indicated via the MirInputConfigCallback");
481
482 /**
483 * Retreive the time associated with a MirInputConfiguration event
484@@ -63,7 +65,8 @@
485 * \param[in] ev The input configuration event
486 * \return The time in nanoseconds since epoch
487 */
488-int64_t mir_input_configuration_event_get_time(MirInputConfigurationEvent const* ev) __attribute__((deprecated));
489+int64_t mir_input_configuration_event_get_time(MirInputConfigurationEvent const* ev)
490+MIR_FOR_REMOVAL_IN_VERSION_1("Input devices and changes to the input devices are indicated via the MirInputConfigCallback");
491
492 /**
493 * Retreive the device id associated with a MirInputConfiguration event
494@@ -71,7 +74,8 @@
495 * \param[in] ev The input configuration event
496 * \return The device id or -1 if not applicable to events of this action
497 */
498-MirInputDeviceId mir_input_configuration_event_get_device_id(MirInputConfigurationEvent const* ev) __attribute__((deprecated));
499+MirInputDeviceId mir_input_configuration_event_get_device_id(MirInputConfigurationEvent const* ev)
500+MIR_FOR_REMOVAL_IN_VERSION_1("Input devices and changes to the input devices are indicated via the MirInputConfigCallback");
501 #pragma GCC diagnostic pop
502
503 #ifdef __cplusplus
504
505=== modified file 'include/client/mir_toolkit/events/keymap_event.h'
506--- include/client/mir_toolkit/events/keymap_event.h 2017-01-18 02:29:37 +0000
507+++ include/client/mir_toolkit/events/keymap_event.h 2017-05-26 16:23:13 +0000
508@@ -42,7 +42,7 @@
509 */
510 void mir_keymap_event_get_rules(MirKeymapEvent const* ev,
511 struct xkb_rule_names* rules)
512- __attribute__ ((deprecated));
513+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_keymap_event_get_keymap_buffer() instead");
514
515 /**
516 * Retrieve the new keymap reported by this MirKeymapEvent
517
518=== modified file 'include/client/mir_toolkit/events/surface_event.h'
519--- include/client/mir_toolkit/events/surface_event.h 2017-01-23 03:38:33 +0000
520+++ include/client/mir_toolkit/events/surface_event.h 2017-05-26 16:23:13 +0000
521@@ -20,6 +20,7 @@
522 #define MIR_TOOLKIT_EVENTS_SURFACE_EVENT_H_
523
524 #include <mir_toolkit/events/event.h>
525+#include <mir_toolkit/deprecations.h>
526
527 #ifdef __cplusplus
528 /**
529@@ -39,7 +40,7 @@
530 * \return The associated attribute
531 */
532 MirSurfaceAttrib mir_surface_event_get_attribute(MirSurfaceEvent const* event)
533-__attribute__ ((deprecated("use mir_window_event_get_attribute instead")));
534+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_event_get_attribute instead");
535
536 /**
537 * Retrieve the new value of the associated attribute for a given MirSurfaceEvent
538@@ -48,7 +49,7 @@
539 * \return The associated attribute value
540 */
541 int mir_surface_event_get_attribute_value(MirSurfaceEvent const* event)
542-__attribute__ ((deprecated("use make_event with mir_window_event_get_attribute_value instead")));
543+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_event_get_attribute_value with MirWindowEvent instead");
544 #pragma GCC diagnostic pop
545
546 #ifdef __cplusplus
547
548=== modified file 'include/client/mir_toolkit/events/surface_output_event.h'
549--- include/client/mir_toolkit/events/surface_output_event.h 2017-01-23 03:38:33 +0000
550+++ include/client/mir_toolkit/events/surface_output_event.h 2017-05-26 16:23:13 +0000
551@@ -20,6 +20,7 @@
552 #define MIR_TOOLKIT_SURFACE_OUTPUT_EVENT_H_
553
554 #include <mir_toolkit/events/event.h>
555+#include <mir_toolkit/deprecations.h>
556
557 #ifdef __cplusplus
558 /**
559@@ -39,7 +40,7 @@
560 * \return The new DPI value for the surface is primarily on.
561 */
562 int mir_surface_output_event_get_dpi(MirSurfaceOutputEvent const* ev)
563-__attribute__ ((deprecated("use mir_window_output_event_get_dpi instead")));
564+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_output_event_get_dpi instead");
565
566 /**
567 * Retrieve the form factor of the new output configuration of a MirSurfaceOutputEvent
568@@ -48,7 +49,7 @@
569 * \return The new form factor of the output the surface is primarily on.
570 */
571 MirFormFactor mir_surface_output_event_get_form_factor(MirSurfaceOutputEvent const* ev)
572-__attribute__ ((deprecated("use mir_window_output_event_get_form_factor instead")));
573+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_output_event_get_form_factor instead");
574
575 /**
576 * Retrieve the suggested scaling factor of the new output configuration of a
577@@ -58,7 +59,7 @@
578 * \return The new scaling factor of the output the surface is primarily on.
579 */
580 float mir_surface_output_event_get_scale(MirSurfaceOutputEvent const* ev)
581-__attribute__ ((deprecated("use mir_window_output_event_get_scale instead")));
582+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_output_event_get_scale instead");
583
584 /**
585 * Retrieve the maximum refresh rate of the output(s) associated with a
586@@ -70,7 +71,7 @@
587 * \return The refresh rate in Hz
588 */
589 double mir_surface_output_event_get_refresh_rate(MirSurfaceOutputEvent const* ev)
590-__attribute__ ((deprecated("use mir_window_output_event_get_refresh_rate instead")));
591+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_output_event_get_refresh_rate instead");
592
593 /**
594 * Retrieve the ID of the output this surface is on from a MirSurfaceOutputEvent
595@@ -80,7 +81,7 @@
596 * (From MirDisplayOutput::output_id)
597 */
598 uint32_t mir_surface_output_event_get_output_id(MirSurfaceOutputEvent const *ev)
599-__attribute__ ((deprecated("use mir_window_output_event_get_output_id instead")));
600+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_output_event_get_output_id instead");
601
602 #pragma GCC diagnostic pop
603
604
605=== modified file 'include/client/mir_toolkit/events/surface_placement.h'
606--- include/client/mir_toolkit/events/surface_placement.h 2017-01-19 05:30:03 +0000
607+++ include/client/mir_toolkit/events/surface_placement.h 2017-05-26 16:23:13 +0000
608@@ -20,6 +20,7 @@
609 #define MIR_TOOLKIT_SURFACE_PLACEMENT_H_
610
611 #include <mir_toolkit/client_types.h>
612+#include <mir_toolkit/deprecations.h>
613
614 #ifdef __cplusplus
615 /**
616@@ -38,7 +39,7 @@
617 * \return The position relative to the parent surface
618 */
619 MirRectangle mir_surface_placement_get_relative_position(MirSurfacePlacementEvent const* event)
620-__attribute__ ((deprecated("use mir_window_placement_get_relative_position instead")));
621+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_placement_get_relative_position instead");
622
623 #ifdef __cplusplus
624 }
625
626=== modified file 'include/client/mir_toolkit/mir_blob.h'
627--- include/client/mir_toolkit/mir_blob.h 2017-01-19 05:30:03 +0000
628+++ include/client/mir_toolkit/mir_blob.h 2017-05-26 16:23:13 +0000
629@@ -19,6 +19,7 @@
630 #define MIR_TOOLKIT_MIR_BLOB_H_
631
632 #include <mir_toolkit/client_types.h>
633+#include <mir_toolkit/deprecations.h>
634
635 #ifdef __cplusplus
636 /**
637@@ -35,7 +36,7 @@
638 * \return A blob
639 */
640 MirBlob* mir_blob_from_display_configuration(MirDisplayConfiguration* configuration)
641-__attribute__ ((deprecated("use mir_blob_from_display_config instead")));
642+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_blob_from_display_config instead");
643
644 /**
645 * Create a blob from a display config
646@@ -65,7 +66,7 @@
647 * \return A display configuration
648 */
649 MirDisplayConfiguration* mir_blob_to_display_configuration(MirBlob* blob)
650-__attribute__ ((deprecated("use mir_blob_to_display_config instead")));
651+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_blob_to_display_config instead");
652
653 /**
654 * Create a blob from a display config
655
656=== modified file 'include/client/mir_toolkit/mir_buffer_stream.h'
657--- include/client/mir_toolkit/mir_buffer_stream.h 2017-01-24 07:49:13 +0000
658+++ include/client/mir_toolkit/mir_buffer_stream.h 2017-05-26 16:23:13 +0000
659@@ -20,6 +20,7 @@
660
661 #include <mir_toolkit/mir_native_buffer.h>
662 #include <mir_toolkit/client_types.h>
663+#include <mir_toolkit/deprecations.h>
664
665 #ifdef __cplusplus
666 /**
667@@ -141,7 +142,8 @@
668 * mir_platform_type_gbm
669 */
670 /// @cond
671-__attribute__ ((deprecated))
672+MIR_FOR_REMOVAL_IN_VERSION_1("To identify the graphics platform use mir_connection_get_graphics_module(). \n"
673+ "To safely interpret the buffer contents use mir_buffer_stream_get_graphics_region()")
674 /// @endcond
675 MirPlatformType mir_buffer_stream_get_platform_type(MirBufferStream *stream);
676
677
678=== modified file 'include/client/mir_toolkit/mir_connection.h'
679--- include/client/mir_toolkit/mir_connection.h 2017-01-24 19:53:45 +0000
680+++ include/client/mir_toolkit/mir_connection.h 2017-05-26 16:23:13 +0000
681@@ -20,6 +20,7 @@
682
683 #include <mir_toolkit/client_types.h>
684 #include <mir_toolkit/common.h>
685+#include <mir_toolkit/deprecations.h>
686
687 #include <stdbool.h>
688
689@@ -93,7 +94,7 @@
690 * \param [out] platform_package Structure to be populated
691 */
692 void mir_connection_get_platform(MirConnection *connection, MirPlatformPackage *platform_package)
693-__attribute__((deprecated("use platform extensions instead")));
694+MIR_FOR_REMOVAL_IN_VERSION_1("use platform extensions instead");
695
696 /**
697 * Query graphics platform module.
698@@ -105,7 +106,7 @@
699 * \param [out] properties Structure to be populated
700 */
701 void mir_connection_get_graphics_module(MirConnection *connection, MirModuleProperties *properties)
702-__attribute__((deprecated("use graphics module extension instead")));
703+MIR_FOR_REMOVAL_IN_VERSION_1("use graphics module extension instead");
704
705 /**
706 * Register a callback to be called when a Lifecycle state change occurs.
707@@ -156,7 +157,7 @@
708 * \return structure that describes the display configuration
709 */
710 MirDisplayConfiguration* mir_connection_create_display_config(MirConnection *connection)
711-__attribute__ ((deprecated("use mir_connection_create_display_configuration instead")));
712+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_connection_create_display_configuration instead");
713
714 /**
715 * Query the display
716@@ -188,7 +189,7 @@
717 * \param [in] display_configuration The display_configuration information resource to be destroyed
718 */
719 void mir_display_config_destroy(MirDisplayConfiguration* display_configuration)
720-__attribute__ ((deprecated("use mir_display_config_release instead")));
721+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_display_config_release instead");
722
723 /**
724 * Apply the display configuration
725@@ -204,7 +205,7 @@
726 * \return A handle that can be passed to mir_wait_for
727 */
728 MirWaitHandle* mir_connection_apply_display_config(MirConnection *connection, MirDisplayConfiguration* display_configuration)
729-__attribute__ ((deprecated("use mir_connection_apply_session_display_config instead")));
730+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_connection_apply_session_display_config instead");
731
732 /**
733 * Apply the display config for the connection
734@@ -254,7 +255,7 @@
735 MirWaitHandle* mir_connection_set_base_display_config(
736 MirConnection* connection,
737 MirDisplayConfiguration const* display_configuration)
738-__attribute__ ((deprecated("use mir_connection_preview_base_display_configuration/mir_connection_confirm_base_display_configuration")));
739+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_connection_preview_base_display_configuration/mir_connection_confirm_base_display_configuration");
740
741
742 /**
743@@ -379,7 +380,7 @@
744 MirConnection* connection,
745 MirPlatformMessage const* request,
746 MirPlatformOperationCallback callback, void* context)
747-__attribute__ ((deprecated("use platform specific extensions instead")));
748+MIR_FOR_REMOVAL_IN_VERSION_1("use platform specific extensions instead");
749
750 /**
751 * Create a snapshot of the attached input devices and device configurations.
752@@ -399,7 +400,7 @@
753 * \param [in] config The input configuration
754 */
755 void mir_input_config_destroy(MirInputConfig const* config)
756-__attribute__ ((deprecated("use mir_input_config_release instead")));
757+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_input_config_release instead");
758
759 /**
760 * Release this snapshot of the input configuration.
761
762=== modified file 'include/client/mir_toolkit/mir_cursor_configuration.h'
763--- include/client/mir_toolkit/mir_cursor_configuration.h 2017-01-18 02:29:37 +0000
764+++ include/client/mir_toolkit/mir_cursor_configuration.h 2017-05-26 16:23:13 +0000
765@@ -20,6 +20,7 @@
766
767 #include <mir_toolkit/common.h>
768 #include <mir_toolkit/client_types.h>
769+#include <mir_toolkit/deprecations.h>
770
771 /**
772 * Opaque structure containing cursor parameterization. Create with mir_cursor* family.
773@@ -53,7 +54,7 @@
774 * to_mir_cursor_configuration_destroy
775 */
776 /// @cond
777-__attribute__ ((deprecated))
778+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_cursor_name()")
779 /// @endcond
780 MirCursorConfiguration *mir_cursor_configuration_from_name(char const* name);
781
782
783=== modified file 'include/client/mir_toolkit/mir_display_configuration.h'
784--- include/client/mir_toolkit/mir_display_configuration.h 2017-02-20 05:36:21 +0000
785+++ include/client/mir_toolkit/mir_display_configuration.h 2017-05-26 16:23:13 +0000
786@@ -20,6 +20,7 @@
787 #define MIR_TOOLKIT_MIR_DISPLAY_CONFIGURATION_H_
788
789 #include "client_types.h"
790+#include <mir_toolkit/deprecations.h>
791
792 #ifdef __cplusplus
793 extern "C" {
794@@ -60,7 +61,7 @@
795 */
796 int mir_display_config_get_max_simultaneous_outputs(
797 MirDisplayConfig const* config)
798- __attribute__((deprecated("Not accurate in Mir 0.26 and later. May be removed in future.")));
799+ MIR_FOR_REMOVAL_IN_VERSION_1("Not accurate in Mir 0.26 and later. May be removed in future.");
800
801 /**
802 * Get the number of outputs available in this display configuration.
803@@ -268,7 +269,7 @@
804 * \returns The name of the output type.
805 */
806 char const* mir_display_output_type_name(MirDisplayOutputType type)
807-__attribute__((deprecated("use mir_output_type_name instead")));
808+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_output_type_name instead");
809
810 /**
811 * Get the textual name of an output type.
812
813=== modified file 'include/client/mir_toolkit/mir_persistent_id.h'
814--- include/client/mir_toolkit/mir_persistent_id.h 2017-02-02 19:52:04 +0000
815+++ include/client/mir_toolkit/mir_persistent_id.h 2017-05-26 16:23:13 +0000
816@@ -19,6 +19,7 @@
817 #define MIR_TOOLKIT_MIR_PERSISTENT_ID_H_
818
819 #include <mir_toolkit/client_types.h>
820+#include <mir_toolkit/deprecations.h>
821
822 #include <stdbool.h>
823
824@@ -39,7 +40,7 @@
825 * \note This does not guarantee that the ID refers to a currently valid object.
826 */
827 bool mir_persistent_id_is_valid(MirPersistentId* id)
828-__attribute__((deprecated("Use mir_window_id_is_valid() instead")));
829+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_id_is_valid() instead");
830
831 /**
832 * \brief Free a MirPersistentId
833@@ -48,7 +49,7 @@
834 * object referred to by \arg id.
835 */
836 void mir_persistent_id_release(MirPersistentId* id)
837-__attribute__((deprecated("Use mir_window_id_release() instead")));
838+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_id_release() instead");
839
840 /**
841 * \brief Get a string representation of a MirSurfaceId
842@@ -59,7 +60,7 @@
843 * \see mir_surface_id_from_string
844 */
845 char const* mir_persistent_id_as_string(MirPersistentId* id)
846-__attribute__((deprecated("Use mir_window_id_as_string() instead")));
847+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_id_as_string() instead");
848
849 /**
850 * \brief Deserialise a string representation of a MirSurfaceId
851@@ -67,7 +68,7 @@
852 * \return The deserialised MirSurfaceId
853 */
854 MirPersistentId* mir_persistent_id_from_string(char const* string_representation)
855-__attribute__((deprecated("Use mir_window_id_from_string() instead")));
856+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_id_from_string() instead");
857
858 #pragma GCC diagnostic pop
859
860
861=== modified file 'include/client/mir_toolkit/mir_platform_message.h'
862--- include/client/mir_toolkit/mir_platform_message.h 2017-01-18 02:29:37 +0000
863+++ include/client/mir_toolkit/mir_platform_message.h 2017-05-26 16:23:13 +0000
864@@ -19,6 +19,7 @@
865 #define MIR_TOOLKIT_MIR_PLATFORM_MESSAGE_H_
866
867 #include <sys/types.h>
868+#include <mir_toolkit/deprecations.h>
869
870 #ifdef __cplusplus
871 /**
872@@ -51,7 +52,7 @@
873 * \param [in] opcode The platform message opcode
874 * \return The created MirPlatformMessage
875 */
876-__attribute__((deprecated("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")))
877+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")
878 MirPlatformMessage* mir_platform_message_create(unsigned int opcode);
879
880 /**
881@@ -59,7 +60,7 @@
882 *
883 * \param [in] message The MirPlatformMessage
884 */
885-__attribute__((deprecated("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")))
886+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")
887 void mir_platform_message_release(MirPlatformMessage const* message);
888
889 /**
890@@ -71,7 +72,7 @@
891 * \param [in] data Pointer to the data
892 * \param [in] data_size The size of the data in bytes
893 */
894-__attribute__((deprecated("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")))
895+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")
896 void mir_platform_message_set_data(MirPlatformMessage* message, void const* data, size_t data_size);
897
898 /**
899@@ -89,7 +90,7 @@
900 * \param [in] fds Pointer to the array of fds
901 * \param [in] num_fds The number of fds
902 */
903-__attribute__((deprecated("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")))
904+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")
905 void mir_platform_message_set_fds(MirPlatformMessage* message, int const* fds, size_t num_fds);
906
907 /**
908@@ -98,7 +99,7 @@
909 * \param [in] message The MirPlatformMessage
910 * \return The opcode
911 */
912-__attribute__((deprecated("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")))
913+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")
914 unsigned int mir_platform_message_get_opcode(MirPlatformMessage const* message);
915
916 /**
917@@ -111,7 +112,7 @@
918 * \param [in] message The MirPlatformMessage
919 * \return The data
920 */
921-__attribute__((deprecated("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")))
922+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")
923 MirPlatformMessageData mir_platform_message_get_data(MirPlatformMessage const* message);
924
925 /**
926@@ -128,7 +129,7 @@
927 * \param [in] message The MirPlatformMessage
928 * \return The fds
929 */
930-__attribute__((deprecated("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")))
931+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_extension_mesa_drm_auth or mir_extension_set_gbm_device")
932 MirPlatformMessageFds mir_platform_message_get_fds(MirPlatformMessage const* message);
933
934 #ifdef __cplusplus
935
936=== modified file 'include/client/mir_toolkit/mir_screencast.h'
937--- include/client/mir_toolkit/mir_screencast.h 2017-01-19 05:30:03 +0000
938+++ include/client/mir_toolkit/mir_screencast.h 2017-05-26 16:23:13 +0000
939@@ -18,6 +18,7 @@
940 #define MIR_TOOLKIT_MIR_SCREENCAST_H_
941
942 #include <mir_toolkit/client_types.h>
943+#include <mir_toolkit/deprecations.h>
944
945 #ifdef __cplusplus
946 /**
947@@ -143,7 +144,7 @@
948 MirScreencast* mir_connection_create_screencast_sync(
949 MirConnection* connection,
950 MirScreencastParameters* parameters)
951-__attribute__ ((deprecated("use mir_screencast_create_sync instead")));
952+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_screencast_create_sync instead");
953
954 /**
955 * Release the specified screencast.
956
957=== modified file 'include/client/mir_toolkit/mir_surface.h'
958--- include/client/mir_toolkit/mir_surface.h 2017-01-24 11:06:35 +0000
959+++ include/client/mir_toolkit/mir_surface.h 2017-05-26 16:23:13 +0000
960@@ -22,6 +22,7 @@
961 #include <mir_toolkit/client_types.h>
962 #include <mir_toolkit/common.h>
963 #include <mir_toolkit/mir_cursor_configuration.h>
964+#include <mir_toolkit/deprecations.h>
965
966 #include <stdbool.h>
967
968@@ -40,7 +41,7 @@
969 MirSurfaceSpec* mir_connection_create_spec_for_normal_surface(MirConnection* connection,
970 int width, int height,
971 MirPixelFormat format)
972-__attribute__((deprecated("Use mir_create_normal_window_spec() instead")));
973+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_create_normal_window_spec() instead");
974
975 MirSurfaceSpec*
976 mir_connection_create_spec_for_menu(MirConnection* connection,
977@@ -50,7 +51,7 @@
978 MirSurface* parent,
979 MirRectangle* rect,
980 MirEdgeAttachment edge)
981-__attribute__((deprecated("Use mir_specify_menu() instead")));
982+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_specify_menu() instead");
983
984 MirSurfaceSpec*
985 mir_connection_create_spec_for_tooltip(MirConnection* connection,
986@@ -58,7 +59,7 @@
987 MirPixelFormat format,
988 MirSurface* parent,
989 MirRectangle* zone)
990-__attribute__((deprecated("Use mir_create_tip_window_spec() instead")));
991+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_create_tip_window_spec() instead");
992
993 MirSurfaceSpec*
994 mir_connection_create_spec_for_tip(MirConnection* connection,
995@@ -67,30 +68,30 @@
996 MirSurface* parent,
997 MirRectangle* rect,
998 MirEdgeAttachment edge)
999-__attribute__((deprecated("Use mir_create_tip_window_spec() instead")));
1000+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_create_tip_window_spec() instead");
1001
1002 MirSurfaceSpec*
1003 mir_connection_create_spec_for_modal_dialog(MirConnection* connection,
1004 int width, int height,
1005 MirPixelFormat format,
1006 MirSurface* parent)
1007-__attribute__((deprecated("Use mir_create_modal_dialog_window_spec() instead")));
1008+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_create_modal_dialog_window_spec() instead");
1009
1010 MirSurfaceSpec*
1011 mir_connection_create_spec_for_dialog(MirConnection* connection,
1012 int width, int height,
1013 MirPixelFormat format)
1014-__attribute__((deprecated("Use mir_create_dialog_window_spec() instead")));
1015+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_create_dialog_window_spec() instead");
1016
1017 MirSurfaceSpec* mir_create_surface_spec(MirConnection* connection)
1018-__attribute__((deprecated("Use mir_create_window_spec() instead")));
1019+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_create_window_spec() instead");
1020
1021 MirSurfaceSpec*
1022 mir_connection_create_spec_for_changes(MirConnection* connection)
1023-__attribute__((deprecated("Use mir_create_window_spec() instead")));
1024+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_create_window_spec() instead");
1025
1026 void mir_surface_spec_set_parent(MirSurfaceSpec* spec, MirSurface* parent)
1027-__attribute__((deprecated("Use mir_window_spec_set_parent() instead")));
1028+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_spec_set_parent() instead");
1029
1030 /**
1031 *\deprecated This will soon be a property of the backing content.
1032@@ -103,77 +104,77 @@
1033 * was removed by use of mir_window_spec_set_streams().
1034 */
1035 int mir_surface_get_swapinterval(MirSurface* surface)
1036-__attribute__((deprecated("This will soon be a property of the backing content")));
1037+MIR_FOR_REMOVAL_IN_VERSION_1("This will soon be a property of the backing content");
1038
1039 void mir_surface_spec_set_type(MirSurfaceSpec* spec, MirSurfaceType type)
1040-__attribute__((deprecated("use mir_window_spec_set_type() instead")));
1041+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_type() instead");
1042
1043 void mir_surface_spec_set_name(MirSurfaceSpec* spec, char const* name)
1044-__attribute__((deprecated("use mir_window_spec_set_name() instead")));
1045+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_name() instead");
1046
1047 void mir_surface_spec_set_width(MirSurfaceSpec* spec, unsigned width)
1048-__attribute__((deprecated("use mir_window_spec_set_width() instead")));
1049+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_width() instead");
1050
1051 void mir_surface_spec_set_height(MirSurfaceSpec* spec, unsigned height)
1052-__attribute__((deprecated("use mir_window_spec_set_height() instead")));
1053+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_height() instead");
1054
1055 void mir_surface_spec_set_width_increment(MirSurfaceSpec* spec, unsigned width_inc)
1056-__attribute__((deprecated("use mir_window_spec_set_width_increment() instead")));
1057+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_width_increment() instead");
1058
1059 void mir_surface_spec_set_height_increment(MirSurfaceSpec* spec, unsigned height_inc)
1060-__attribute__((deprecated("use mir_window_spec_set_height_increment() instead")));
1061+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_height_increment() instead");
1062
1063 void mir_surface_spec_set_min_width(MirSurfaceSpec* spec, unsigned min_width)
1064-__attribute__((deprecated("use mir_window_spec_set_min_width() instead")));
1065+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_min_width() instead");
1066
1067 void mir_surface_spec_set_min_height(MirSurfaceSpec* spec, unsigned min_height)
1068-__attribute__((deprecated("use mir_window_spec_set_min_height() instead")));
1069+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_min_height() instead");
1070
1071 void mir_surface_spec_set_max_width(MirSurfaceSpec* spec, unsigned max_width)
1072-__attribute__((deprecated("use mir_window_spec_set_max_width() instead")));
1073+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_max_width() instead");
1074
1075 void mir_surface_spec_set_max_height(MirSurfaceSpec* spec, unsigned max_height)
1076-__attribute__((deprecated("use mir_window_spec_set_max_height() instead")));
1077+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_max_height() instead");
1078
1079 void mir_surface_spec_set_min_aspect_ratio(MirSurfaceSpec* spec, unsigned width, unsigned height)
1080-__attribute__((deprecated("use mir_window_spec_set_min_aspect_ratio() instead")));
1081+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_min_aspect_ratio() instead");
1082
1083 void mir_surface_spec_set_max_aspect_ratio(MirSurfaceSpec* spec, unsigned width, unsigned height)
1084-__attribute__((deprecated("use mir_window_spec_set_max_aspect_ratio() instead")));
1085+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_max_aspect_ratio() instead");
1086
1087 void mir_surface_spec_set_fullscreen_on_output(MirSurfaceSpec* spec, uint32_t output_id)
1088-__attribute__((deprecated("use mir_window_spec_set_fullscreen_on_output() instead")));
1089+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_fullscreen_on_output() instead");
1090
1091 void mir_surface_spec_set_preferred_orientation(MirSurfaceSpec* spec, MirOrientationMode mode)
1092-__attribute__((deprecated("use mir_window_spec_set_preferred_orientation() instead")));
1093+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_preferred_orientation() instead");
1094
1095 bool mir_surface_spec_attach_to_foreign_parent(MirSurfaceSpec* spec,
1096 MirPersistentId* parent,
1097 MirRectangle* attachment_rect,
1098 MirEdgeAttachment edge)
1099-__attribute__((deprecated("use mir_window_spec_attach_to_foreign_parent() instead")));
1100+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_attach_to_foreign_parent() instead");
1101
1102 void mir_surface_spec_set_state(MirSurfaceSpec* spec, MirSurfaceState state)
1103-__attribute__((deprecated("use mir_window_spec_set_state() instead")));
1104+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_state() instead");
1105
1106 void mir_surface_spec_release(MirSurfaceSpec* spec)
1107-__attribute__((deprecated("use mir_window_spec_release() instead")));
1108+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_release() instead");
1109
1110 void mir_surface_spec_set_input_shape(MirSurfaceSpec* spec,
1111 MirRectangle const *rectangles,
1112 size_t n_rects)
1113-__attribute__((deprecated("use mir_window_spec_set_input_shape() instead")));
1114+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_input_shape() instead");
1115
1116 void mir_surface_spec_set_event_handler(MirSurfaceSpec* spec,
1117 mir_surface_event_callback callback,
1118 void* context)
1119-__attribute__((deprecated("use mir_window_spec_set_event_handler() instead")));
1120+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_event_handler() instead");
1121
1122 void mir_surface_spec_set_shell_chrome(MirSurfaceSpec* spec, MirShellChrome style)
1123-__attribute__((deprecated("use mir_window_spec_set_shell_chrome() instead")));
1124+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_shell_chrome() instead");
1125
1126 void mir_surface_spec_set_pointer_confinement(MirSurfaceSpec* spec, MirPointerConfinementState state)
1127-__attribute__((deprecated("use mir_window_spec_set_pointer_confinement() instead")));
1128+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_pointer_confinement() instead");
1129
1130 void mir_surface_spec_set_placement(MirSurfaceSpec* spec,
1131 const MirRectangle* rect,
1132@@ -182,69 +183,69 @@
1133 MirPlacementHints placement_hints,
1134 int offset_dx,
1135 int offset_dy)
1136-__attribute__((deprecated("use mir_window_spec_set_placement() instead")));
1137+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_placement() instead");
1138
1139 MirSurfaceSpec* mir_connection_create_spec_for_input_method(MirConnection* connection,
1140 int width, int height,
1141 MirPixelFormat format)
1142-__attribute__((deprecated("use mir_create_input_method_window_spec() instead")));
1143+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_create_input_method_window_spec() instead");
1144
1145 void mir_surface_spec_set_pixel_format(MirSurfaceSpec* spec, MirPixelFormat format)
1146-__attribute__((deprecated("use mir_window_spec_set_pixel_format() instead")));
1147+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_pixel_format() instead");
1148
1149 void mir_surface_spec_set_buffer_usage(MirSurfaceSpec* spec, MirBufferUsage usage)
1150-__attribute__((deprecated("use mir_window_spec_set_buffer_usage() instead")));
1151+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_buffer_usage() instead");
1152
1153 void mir_surface_spec_set_streams(MirSurfaceSpec* spec,
1154 MirBufferStreamInfo* streams,
1155 unsigned int num_streams)
1156-__attribute__((deprecated("use mir_window_spec_set_streams() instead")));
1157+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_spec_set_streams() instead");
1158
1159 void mir_surface_apply_spec(MirSurface* surface, MirSurfaceSpec* spec)
1160-__attribute__((deprecated("use mir_window_apply_spec() instead")));
1161+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_apply_spec() instead");
1162
1163 bool mir_surface_is_valid(MirSurface *surface)
1164-__attribute__((deprecated("use mir_window_is_valid() instead")));
1165+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_is_valid() instead");
1166
1167 MirWaitHandle* mir_surface_create(MirSurfaceSpec* requested_specification,
1168 mir_surface_callback callback, void* context)
1169-__attribute__((deprecated("use mir_create_window() instead")));
1170+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_create_window() instead");
1171
1172 MirSurface* mir_surface_create_sync(MirSurfaceSpec* requested_specification)
1173-__attribute__((deprecated("use mir_create_window_sync() instead")));
1174+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_create_window_sync() instead");
1175
1176 MirWaitHandle *mir_surface_release(
1177 MirSurface *surface,
1178 mir_surface_callback callback,
1179 void *context)
1180-__attribute__((deprecated("use mir_window_release() instead")));
1181+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_release() instead");
1182
1183 void mir_surface_release_sync(MirSurface *surface)
1184-__attribute__((deprecated("use mir_window_release_sync() instead")));
1185+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_release_sync() instead");
1186
1187 void mir_surface_set_event_handler(MirSurface *surface,
1188 mir_surface_event_callback callback,
1189 void* context)
1190-__attribute__((deprecated("use mir_window_set_event_handler() instead")));
1191+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_set_event_handler() instead");
1192
1193 MirBufferStream* mir_surface_get_buffer_stream(MirSurface *surface)
1194-__attribute__((deprecated("use mir_window_get_buffer_stream() instead")));
1195+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_buffer_stream() instead");
1196
1197 char const* mir_surface_get_error_message(MirSurface *surface)
1198-__attribute__((deprecated("use mir_window_get_error_message() instead")));
1199+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_error_message() instead");
1200
1201 void mir_surface_get_parameters(MirSurface *surface, MirSurfaceParameters *parameters)
1202-__attribute__((deprecated("use mir_window_get_parameters() instead")));
1203+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_parameters() instead");
1204
1205 MirSurfaceType mir_surface_get_type(MirSurface* surface)
1206-__attribute__((deprecated("use mir_window_get_type() instead")));
1207+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_type() instead");
1208
1209 MirWaitHandle* mir_surface_set_state(MirSurface *surface,
1210 MirSurfaceState state)
1211-__attribute__((deprecated("use mir_window_set_state() instead")));
1212+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_set_state() instead");
1213
1214 MirSurfaceState mir_surface_get_state(MirSurface *surface)
1215-__attribute__((deprecated("use mir_window_get_state() instead")));
1216+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_state() instead");
1217
1218 /**
1219 * Set the swapinterval for the default stream.
1220@@ -260,37 +261,37 @@
1221 * or NULL if the interval could not be supported
1222 */
1223 MirWaitHandle* mir_surface_set_swapinterval(MirSurface* surface, int interval)
1224-__attribute__((deprecated("Swap interval should be set on the backing content")));
1225+MIR_FOR_REMOVAL_IN_VERSION_1("Swap interval should be set on the backing content");
1226
1227 int mir_surface_get_dpi(MirSurface* surface)
1228-__attribute__((deprecated("use mir_window_get_dpi() instead")));
1229+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_dpi() instead");
1230
1231 MirSurfaceFocusState mir_surface_get_focus(MirSurface *surface)
1232-__attribute__((deprecated("use mir_window_get_focus_state() instead")));
1233+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_focus_state() instead");
1234
1235 MirSurfaceVisibility mir_surface_get_visibility(MirSurface *surface)
1236-__attribute__((deprecated("use mir_window_get_visibility() instead")));
1237+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_visibility() instead");
1238
1239 MirWaitHandle* mir_surface_configure_cursor(MirSurface *surface, MirCursorConfiguration const* parameters)
1240-__attribute__((deprecated("use mir_window_configure_cursor() instead")));
1241+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_configure_cursor() instead");
1242
1243 MirOrientation mir_surface_get_orientation(MirSurface *surface)
1244-__attribute__((deprecated("use mir_window_get_orientation() instead")));
1245+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_orientation() instead");
1246
1247 MirWaitHandle* mir_surface_set_preferred_orientation(MirSurface *surface, MirOrientationMode orientation)
1248-__attribute__((deprecated("use mir_window_set_preferred_orientation() instead")));
1249+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_set_preferred_orientation() instead");
1250
1251 MirOrientationMode mir_surface_get_preferred_orientation(MirSurface *surface)
1252-__attribute__((deprecated("use mir_window_get_preferred_orientation() instead")));
1253+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_get_preferred_orientation() instead");
1254
1255 MirWaitHandle* mir_surface_request_persistent_id(MirSurface* surface, mir_surface_id_callback callback, void* context)
1256-__attribute__((deprecated("use mir_window_request_persistent_id() instead")));
1257+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_request_persistent_id() instead");
1258
1259 MirPersistentId* mir_surface_request_persistent_id_sync(MirSurface *surface)
1260-__attribute__((deprecated("use mir_window_request_persistent_id_sync() instead")));
1261+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_request_persistent_id_sync() instead");
1262
1263 void mir_surface_raise(MirSurface* surface, MirCookie const* cookie)
1264-__attribute__((deprecated("use mir_window_raise() instead")));
1265+MIR_FOR_REMOVAL_IN_VERSION_1("use mir_window_raise() instead");
1266
1267 #pragma GCC diagnostic pop
1268
1269
1270=== modified file 'include/client/mir_toolkit/mir_wait.h'
1271--- include/client/mir_toolkit/mir_wait.h 2017-01-19 23:17:56 +0000
1272+++ include/client/mir_toolkit/mir_wait.h 2017-05-26 16:23:13 +0000
1273@@ -19,6 +19,7 @@
1274 #define MIR_TOOLKIT_MIR_WAIT_H_
1275
1276 #include <mir_toolkit/client_types.h>
1277+#include <mir_toolkit/deprecations.h>
1278
1279 #ifdef __cplusplus
1280 /**
1281@@ -36,7 +37,7 @@
1282 * \param [in] wait_handle Handle returned by an asynchronous request
1283 */
1284 void mir_wait_for(MirWaitHandle *wait_handle)
1285-__attribute__ ((deprecated("No longer supported - use callbacks or wait for state changes")));
1286+MIR_FOR_REMOVAL_IN_VERSION_1("No longer supported - use callbacks or wait for state changes");
1287
1288 /**
1289 * Wait on the supplied handle until one instance of the associated request
1290@@ -47,7 +48,7 @@
1291 * \param [in] wait_handle Handle returned by an asynchronous request
1292 */
1293 void mir_wait_for_one(MirWaitHandle *wait_handle)
1294-__attribute__ ((deprecated("No longer supported - use callbacks or wait for state changes")));
1295+MIR_FOR_REMOVAL_IN_VERSION_1("No longer supported - use callbacks or wait for state changes");
1296
1297
1298 #ifdef __cplusplus
1299
1300=== modified file 'include/client/mir_toolkit/mir_window.h'
1301--- include/client/mir_toolkit/mir_window.h 2017-02-03 20:39:06 +0000
1302+++ include/client/mir_toolkit/mir_window.h 2017-05-26 16:23:13 +0000
1303@@ -22,6 +22,7 @@
1304 #include <mir_toolkit/client_types.h>
1305 #include <mir_toolkit/common.h>
1306 #include <mir_toolkit/mir_cursor_configuration.h>
1307+#include <mir_toolkit/deprecations.h>
1308
1309 #include <stdbool.h>
1310
1311@@ -555,7 +556,7 @@
1312 MirRenderSurface* render_surface,
1313 int logical_width, int logical_height,
1314 int displacement_x, int displacement_y)
1315-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1316+MIR_FOR_REMOVAL_IN_VERSION_1("This function is slated for rename due to MirRenderSurface-->MirSurface transition");
1317 #pragma GCC diagnostic pop
1318
1319 /**
1320@@ -774,7 +775,7 @@
1321 * \param [in,out] context User data passed to completion callback.
1322 */
1323 void mir_window_request_persistent_id(MirWindow* window, MirWindowIdCallback callback, void* context)
1324-__attribute__((deprecated("Use mir_window_request_window_id() instead")));
1325+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_request_window_id() instead");
1326 void mir_window_request_window_id(MirWindow* window, MirWindowIdCallback callback, void* context);
1327
1328 /**
1329@@ -784,7 +785,7 @@
1330 * be freed with a call to mir_persistent_id_release()
1331 */
1332 MirPersistentId* mir_window_request_persistent_id_sync(MirWindow* window)
1333-__attribute__((deprecated("Use mir_window_request_window_id_sync")));
1334+MIR_FOR_REMOVAL_IN_VERSION_1("Use mir_window_request_window_id_sync");
1335 MirWindowId* mir_window_request_window_id_sync(MirWindow* window);
1336 #ifdef __cplusplus
1337 }
1338
1339=== modified file 'include/client/mir_toolkit/rs/mir_render_surface.h'
1340--- include/client/mir_toolkit/rs/mir_render_surface.h 2017-03-16 16:47:21 +0000
1341+++ include/client/mir_toolkit/rs/mir_render_surface.h 2017-05-26 16:23:13 +0000
1342@@ -21,6 +21,18 @@
1343 #define MIR_TOOLKIT_MIR_RENDER_SURFACE_H_
1344
1345 #include <mir_toolkit/client_types.h>
1346+#include <mir_toolkit/deprecations.h>
1347+
1348+#ifndef MIR_DEPRECATE_RENDERSURFACES
1349+ #define MIR_DEPRECATE_RENDERSURFACES 0
1350+#endif
1351+
1352+#if MIR_ENABLE_DEPRECATIONS > 0 && MIR_DEPRECATE_RENDERSURFACES > 0
1353+ #define MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME\
1354+ __attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")))
1355+#else
1356+ #define MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME
1357+#endif
1358
1359 #ifdef __cplusplus
1360 /**
1361@@ -30,6 +42,9 @@
1362 extern "C" {
1363 #endif
1364
1365+typedef void (*MirRenderSurfaceCallback)(MirRenderSurface*, void* context)
1366+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1367+
1368 #pragma GCC diagnostic push
1369 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
1370 /**
1371@@ -49,7 +64,7 @@
1372 int width, int height,
1373 MirRenderSurfaceCallback callback,
1374 void* context)
1375-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1376+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1377
1378 /**
1379 * Create a render surface and wait for the result
1380@@ -64,7 +79,7 @@
1381 MirRenderSurface* mir_connection_create_render_surface_sync(
1382 MirConnection* connection,
1383 int width, int height)
1384-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1385+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1386
1387 /**
1388 * Get the size of the MirRenderSurface
1389@@ -76,7 +91,7 @@
1390 void mir_render_surface_get_size(
1391 MirRenderSurface* render_surface,
1392 int* width, int* height)
1393-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1394+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1395
1396 /**
1397 * Set the size of the MirRenderSurface
1398@@ -88,7 +103,7 @@
1399 void mir_render_surface_set_size(
1400 MirRenderSurface* render_surface,
1401 int width, int height)
1402-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1403+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1404
1405 /**
1406 * Test for a valid render surface
1407@@ -100,8 +115,7 @@
1408 */
1409 bool mir_render_surface_is_valid(
1410 MirRenderSurface* render_surface)
1411-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1412-
1413+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1414 /**
1415 * Retrieve a text description of the error. The returned string is owned by
1416 * the library and remains valid until the render surface or the associated
1417@@ -113,7 +127,7 @@
1418 */
1419 char const *mir_render_surface_get_error_message(
1420 MirRenderSurface* render_surface)
1421-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1422+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1423
1424 /**
1425 * Release the specified render surface
1426@@ -122,7 +136,7 @@
1427 */
1428 void mir_render_surface_release(
1429 MirRenderSurface* render_surface)
1430-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1431+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1432
1433 /**
1434 * Obtain the buffer stream backing a given render surface.
1435@@ -142,7 +156,7 @@
1436 MirRenderSurface* render_surface,
1437 int width, int height,
1438 MirPixelFormat format)
1439-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1440+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1441
1442 /**
1443 * Obtain the presentation chain backing a given render surface.
1444@@ -155,7 +169,7 @@
1445 */
1446 MirPresentationChain* mir_render_surface_get_presentation_chain(
1447 MirRenderSurface* render_surface)
1448-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1449+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1450
1451 /** Query whether the server supports a given presentation mode.
1452 *
1453@@ -189,7 +203,29 @@
1454 MirWindowSpec* spec,
1455 MirRenderSurface* render_surface,
1456 int hotspot_x, int hotspot_y)
1457-__attribute__((deprecated("This function is slated for rename due to MirRenderSurface-->MirSurface transition")));
1458+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1459+
1460+/**
1461+ * Set the MirWindowSpec to display content contained in a render surface
1462+ *
1463+ * \warning: The initial call to mir_window_spec_add_render_surface will set
1464+ * the bottom-most content, and subsequent calls will stack the
1465+ * content on top.
1466+ *
1467+ * \param spec The window_spec to be updated
1468+ * \param render_surface The render surface containing the content to be displayed
1469+ * \param logical_width The width that the content will be displayed at
1470+ * (Ignored for buffer streams)
1471+ * \param logical_height The height that the content will be displayed at
1472+ * (Ignored for buffer streams)
1473+ * \param displacement_x The x displacement from the top-left corner of the MirWindow
1474+ * \param displacement_y The y displacement from the top-left corner of the MirWindow
1475+ */
1476+void mir_window_spec_add_render_surface(MirWindowSpec* spec,
1477+ MirRenderSurface* render_surface,
1478+ int logical_width, int logical_height,
1479+ int displacement_x, int displacement_y)
1480+MIR_DEPRECATE_RENDERSURFACES_FOR_RENAME;
1481
1482 #pragma GCC diagnostic pop
1483
1484
1485=== modified file 'include/core/mir_toolkit/common.h'
1486--- include/core/mir_toolkit/common.h 2017-01-23 22:29:00 +0000
1487+++ include/core/mir_toolkit/common.h 2017-05-26 16:23:13 +0000
1488@@ -21,6 +21,8 @@
1489 #ifndef MIR_COMMON_H_
1490 #define MIR_COMMON_H_
1491
1492+#include <mir_toolkit/deprecations.h>
1493+
1494 //for clang
1495 #ifndef __has_feature
1496 #define __has_feature(x) 0 // Compatibility with non-clang
1497@@ -35,7 +37,7 @@
1498 (__has_extension(attribute_deprecated_with_message) && \
1499 __has_extension(enumerator_attributes))
1500 #define MIR_DEPRECATED_ENUM(ENUM, INSTEAD) \
1501- ENUM __attribute__ ((deprecated("Use " #INSTEAD " instead")))
1502+ ENUM MIR_FOR_REMOVAL_IN_VERSION_1("Use " #INSTEAD " instead")
1503 #else
1504 #define MIR_DEPRECATED_ENUM(ENUM, INSTEAD) \
1505 ENUM
1506@@ -65,7 +67,7 @@
1507 mir_surface_attrib_preferred_orientation,
1508 /* Must be last */
1509 mir_surface_attribs
1510-} MirSurfaceAttrib __attribute__ ((deprecated("use MirWindowAttrib")));
1511+} MirSurfaceAttrib MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowAttrib");
1512
1513 /**
1514 * Attributes of a window that the client and server/shell may wish to
1515@@ -102,7 +104,7 @@
1516 mir_surface_type_satellite, /**< AKA "toolbox"/"toolbar" */
1517 mir_surface_type_tip, /**< AKA "tooltip" */
1518 mir_surface_types
1519-} MirSurfaceType __attribute__ ((deprecated("use MirWindowType")));
1520+} MirSurfaceType MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowType");
1521
1522 typedef enum MirWindowType
1523 {
1524@@ -132,7 +134,7 @@
1525 mir_surface_state_horizmaximized,
1526 mir_surface_state_hidden,
1527 mir_surface_states
1528-} MirSurfaceState __attribute__ ((deprecated("use MirWindowState")));
1529+} MirSurfaceState MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowState");
1530
1531 typedef enum MirWindowState
1532 {
1533@@ -154,7 +156,7 @@
1534 {
1535 mir_surface_unfocused = 0,
1536 mir_surface_focused
1537-} MirSurfaceFocusState __attribute__ ((deprecated("use MirWindowFocusState")));
1538+} MirSurfaceFocusState MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowFocusState");
1539
1540 typedef enum MirWindowFocusState
1541 {
1542@@ -166,7 +168,7 @@
1543 {
1544 mir_surface_visibility_occluded = 0,
1545 mir_surface_visibility_exposed
1546-} MirSurfaceVisibility __attribute__ ((deprecated("use MirWindowFocusState")));
1547+} MirSurfaceVisibility MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowFocusState");
1548
1549 typedef enum MirWindowVisibility
1550 {
1551
1552=== added file 'include/core/mir_toolkit/deprecations.h'
1553--- include/core/mir_toolkit/deprecations.h 1970-01-01 00:00:00 +0000
1554+++ include/core/mir_toolkit/deprecations.h 2017-05-26 16:23:13 +0000
1555@@ -0,0 +1,36 @@
1556+/*
1557+ * Copyright © 2017 Canonical Ltd.
1558+ *
1559+ * This program is free software: you can redistribute it and/or modify it
1560+ * under the terms of the GNU Lesser General Public License version 3,
1561+ * as published by the Free Software Foundation.
1562+ *
1563+ * This program is distributed in the hope that it will be useful,
1564+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1565+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1566+ * GNU Lesser General Public License for more details.
1567+ *
1568+ * You should have received a copy of the GNU Lesser General Public License
1569+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1570+ */
1571+
1572+#ifndef MIR_DEPRECATIONS_H_
1573+#define MIR_DEPRECATIONS_H_
1574+
1575+#ifndef MIR_ENABLE_DEPRECATIONS
1576+ // use g++ version < 6.2 as a proxy for building on Ubunutu 16.04LTS ("Xenial") or 16.10 (Yakkety)
1577+ #if defined(__clang__) || !defined(__GNUC__) || (__GNUC__ > 6) || ((__GNUC__ == 6) && (__GNUC_MINOR__ >= 2))
1578+ #define MIR_ENABLE_DEPRECATIONS 1
1579+ #else
1580+ #define MIR_ENABLE_DEPRECATIONS 0
1581+ #endif
1582+#endif
1583+
1584+#if MIR_ENABLE_DEPRECATIONS > 0
1585+ #define MIR_FOR_REMOVAL_IN_VERSION_1(message)\
1586+ __attribute__((deprecated(message)))
1587+#else
1588+ #define MIR_FOR_REMOVAL_IN_VERSION_1(message)
1589+#endif
1590+
1591+#endif //MIR_DEPRECATIONS_H_
1592
1593=== modified file 'src/common/events/input_configuration_event.cpp'
1594--- src/common/events/input_configuration_event.cpp 2017-01-20 16:27:50 +0000
1595+++ src/common/events/input_configuration_event.cpp 2017-05-26 16:23:13 +0000
1596@@ -18,13 +18,12 @@
1597
1598 #include "mir/events/input_configuration_event.h"
1599
1600+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
1601 MirInputConfigurationEvent::MirInputConfigurationEvent()
1602 {
1603 event.initInputConfiguration();
1604 }
1605
1606-#pragma GCC diagnostic push
1607-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
1608 MirInputConfigurationAction MirInputConfigurationEvent::action() const
1609 {
1610 return static_cast<MirInputConfigurationAction>(event.asReader().getInputConfiguration().getAction());
1611@@ -34,7 +33,6 @@
1612 {
1613 event.getInputConfiguration().setAction(static_cast<mir::capnp::InputConfigurationEvent::Action>(action));
1614 }
1615-#pragma GCC diagnostic pop
1616
1617 std::chrono::nanoseconds MirInputConfigurationEvent::when() const
1618 {
1619
1620=== modified file 'src/include/common/mir/events/input_configuration_event.h'
1621--- src/include/common/mir/events/input_configuration_event.h 2017-01-20 16:27:50 +0000
1622+++ src/include/common/mir/events/input_configuration_event.h 2017-05-26 16:23:13 +0000
1623@@ -37,8 +37,7 @@
1624
1625 MirInputDeviceId id() const;
1626 void set_id(MirInputDeviceId id);
1627-}
1628- __attribute__((deprecated));
1629+};
1630 #pragma GCC diagnostic pop
1631
1632 #endif /* MIR_COMMON_INPUT_CONFIGURATION_EVENT_H_ */
1633
1634=== modified file 'src/platforms/android/utils/CMakeLists.txt'
1635--- src/platforms/android/utils/CMakeLists.txt 2017-01-18 02:29:37 +0000
1636+++ src/platforms/android/utils/CMakeLists.txt 2017-05-26 16:23:13 +0000
1637@@ -36,6 +36,7 @@
1638 )
1639
1640 target_link_libraries(mir_demo_standalone_render_overlays
1641+ mirclient
1642 mircommon
1643 mirplatform
1644 )
1645
1646=== modified file 'src/platforms/mesa/server/kms/kms_page_flipper.cpp'
1647--- src/platforms/mesa/server/kms/kms_page_flipper.cpp 2017-01-18 02:29:37 +0000
1648+++ src/platforms/mesa/server/kms/kms_page_flipper.cpp 2017-05-26 16:23:13 +0000
1649@@ -26,6 +26,7 @@
1650 #include <xf86drm.h>
1651 #include <xf86drmMode.h>
1652 #include <chrono>
1653+#include <cstring>
1654
1655 namespace mg = mir::graphics;
1656 namespace mgm = mir::graphics::mesa;
1657@@ -89,12 +90,11 @@
1658
1659 mg::Frame mgm::KMSPageFlipper::wait_for_flip(uint32_t crtc_id)
1660 {
1661- static drmEventContext evctx =
1662- {
1663- DRM_EVENT_CONTEXT_VERSION, /* .version */
1664- 0, /* .vblank_handler */
1665- page_flip_handler /* .page_flip_handler */
1666- };
1667+ drmEventContext evctx;
1668+ memset(&evctx, 0, sizeof evctx);
1669+ evctx.version = 2; // We only support the old v2 page_flip_handler
1670+ evctx.page_flip_handler = &page_flip_handler;
1671+
1672 static std::thread::id const invalid_tid;
1673
1674 {
1675
1676=== modified file 'src/server/input/default_configuration.cpp'
1677--- src/server/input/default_configuration.cpp 2017-01-18 02:29:37 +0000
1678+++ src/server/input/default_configuration.cpp 2017-05-26 16:23:13 +0000
1679@@ -186,7 +186,9 @@
1680 std::chrono::milliseconds const key_repeat_delay{50};
1681
1682 auto const options = the_options();
1683- auto enable_repeat = options->get<bool>(options::enable_key_repeat_opt);
1684+ // lp:1675357: Disable generation of key repeat events on nested servers
1685+ auto enable_repeat = options->get<bool>(options::enable_key_repeat_opt) &&
1686+ !options->is_set(options::host_socket_opt);
1687
1688 return std::make_shared<mi::KeyRepeatDispatcher>(
1689 the_event_filter_chain_dispatcher(), the_main_loop(), the_cookie_authority(),
1690@@ -365,7 +367,9 @@
1691 the_key_mapper(),
1692 the_server_status_listener());
1693
1694- if (key_repeater && !the_options()->is_set(options::host_socket_opt))
1695+ // lp:1675357: KeyRepeatDispatcher must be informed about removed input devices, otherwise
1696+ // pressed keys get repeated indefinitely
1697+ if (key_repeater)
1698 key_repeater->set_input_device_hub(hub);
1699 return hub;
1700 });
1701
1702=== modified file 'src/server/input/default_device.cpp'
1703--- src/server/input/default_device.cpp 2017-01-18 02:29:37 +0000
1704+++ src/server/input/default_device.cpp 2017-05-26 16:23:13 +0000
1705@@ -30,10 +30,17 @@
1706
1707 namespace mi = mir::input;
1708
1709-mi::DefaultDevice::DefaultDevice(MirInputDeviceId id, std::shared_ptr<dispatch::ActionQueue> const& actions,
1710- InputDevice& device, std::shared_ptr<KeyMapper> const& key_mapper)
1711- : device_id{id}, device{device}, info(device.get_device_info()), pointer{device.get_pointer_settings()},
1712- touchpad{device.get_touchpad_settings()}, actions{actions}, key_mapper{key_mapper}
1713+mi::DefaultDevice::DefaultDevice(MirInputDeviceId id,
1714+ std::shared_ptr<dispatch::ActionQueue> const& actions,
1715+ InputDevice& device,
1716+ std::shared_ptr<KeyMapper> const& key_mapper)
1717+ : device_id{id},
1718+ device{device},
1719+ info(device.get_device_info()),
1720+ pointer{device.get_pointer_settings()},
1721+ touchpad{device.get_touchpad_settings()},
1722+ actions{actions},
1723+ key_mapper{key_mapper}
1724 {
1725 if (contains(info.capabilities, mi::DeviceCapability::keyboard))
1726 {
1727@@ -70,8 +77,8 @@
1728 auto const& settings = pointer.value();
1729
1730 return MirPointerConfig(settings.handedness, settings.acceleration,
1731- settings.cursor_acceleration_bias, settings.horizontal_scroll_scale,
1732- settings.vertical_scroll_scale);
1733+ settings.cursor_acceleration_bias, settings.horizontal_scroll_scale,
1734+ settings.vertical_scroll_scale);
1735 }
1736
1737 mir::optional_value<MirTouchpadConfig> mi::DefaultDevice::touchpad_configuration() const
1738@@ -82,14 +89,17 @@
1739 auto const& settings = touchpad.value();
1740
1741 return MirTouchpadConfig(settings.click_mode, settings.scroll_mode, settings.button_down_scroll_button,
1742- settings.tap_to_click, settings.disable_while_typing, settings.disable_with_mouse,
1743- settings.middle_mouse_button_emulation);
1744+ settings.tap_to_click, settings.disable_while_typing, settings.disable_with_mouse,
1745+ settings.middle_mouse_button_emulation);
1746 }
1747
1748 void mi::DefaultDevice::apply_pointer_configuration(MirPointerConfig const& conf)
1749 {
1750- if (!pointer.is_set())
1751- BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot apply a pointer configuration"));
1752+ {
1753+ std::lock_guard<std::mutex> lock(config_mutex);
1754+ if (!pointer.is_set())
1755+ BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot apply a pointer configuration"));
1756+ }
1757
1758 if (conf.cursor_acceleration_bias() < -1.0 || conf.cursor_acceleration_bias() > 1.0)
1759 BOOST_THROW_EXCEPTION(std::invalid_argument("Cursor acceleration bias out of range"));
1760@@ -101,18 +111,25 @@
1761 settings.vertical_scroll_scale = conf.vertical_scroll_scale();
1762 settings.horizontal_scroll_scale = conf.horizontal_scroll_scale();
1763
1764- pointer = settings;
1765-
1766- actions->enqueue([settings = std::move(settings), dev=&device]
1767- {
1768- dev->apply_settings(settings);
1769- });
1770+ {
1771+ std::lock_guard<std::mutex> lock(config_mutex);
1772+ pointer = settings;
1773+ if (!actions) // device is disabled
1774+ return;
1775+ actions->enqueue([settings = std::move(settings), dev=&device]
1776+ {
1777+ dev->apply_settings(settings);
1778+ });
1779+ }
1780 }
1781
1782 void mi::DefaultDevice::apply_touchpad_configuration(MirTouchpadConfig const& conf)
1783 {
1784- if (!touchpad.is_set())
1785- BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot apply a touchpad configuration"));
1786+ {
1787+ std::lock_guard<std::mutex> lock(config_mutex);
1788+ if (!touchpad.is_set())
1789+ BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot apply a touchpad configuration"));
1790+ }
1791
1792 if (conf.scroll_mode() & mir_touchpad_scroll_mode_button_down_scroll &&
1793 conf.button_down_scroll_button() == mi::no_scroll_button)
1794@@ -127,12 +144,17 @@
1795 settings.tap_to_click = conf.tap_to_click();
1796 settings.middle_mouse_button_emulation = conf.middle_mouse_button_emulation();
1797
1798- touchpad = settings;
1799+ {
1800+ std::lock_guard<std::mutex> lock(config_mutex);
1801+ touchpad = settings;
1802
1803- actions->enqueue([settings = std::move(settings), dev=&device]
1804- {
1805+ if (!actions) // device is disabled
1806+ return;
1807+ actions->enqueue([settings = std::move(settings), dev=&device]
1808+ {
1809 dev->apply_settings(settings);
1810- });
1811+ });
1812+ }
1813 }
1814
1815 mir::optional_value<MirKeyboardConfig> mi::DefaultDevice::keyboard_configuration() const
1816@@ -145,9 +167,18 @@
1817 if (!contains(info.capabilities, mi::DeviceCapability::keyboard))
1818 BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot apply a keyboard configuration"));
1819
1820+ std::lock_guard<std::mutex> lock(config_mutex);
1821+ if (!actions) // device is disabled
1822+ return;
1823 if (keyboard.value().device_keymap() != conf.device_keymap())
1824- {
1825 keyboard = conf;
1826- key_mapper->set_keymap_for_device(device_id, conf.device_keymap());
1827- }
1828+ else
1829+ return;
1830+ key_mapper->set_keymap_for_device(device_id, conf.device_keymap());
1831+}
1832+
1833+void mi::DefaultDevice::disable_queue()
1834+{
1835+ std::lock_guard<std::mutex> lock(config_mutex);
1836+ actions.reset();
1837 }
1838
1839=== modified file 'src/server/input/default_device.h'
1840--- src/server/input/default_device.h 2017-01-18 02:29:37 +0000
1841+++ src/server/input/default_device.h 2017-05-26 16:23:13 +0000
1842@@ -29,6 +29,7 @@
1843 #include "mir/optional_value.h"
1844
1845 #include <memory>
1846+#include <mutex>
1847
1848 namespace mir
1849 {
1850@@ -58,6 +59,7 @@
1851 void apply_touchpad_configuration(MirTouchpadConfig const&) override;
1852 optional_value<MirKeyboardConfig> keyboard_configuration() const override;
1853 void apply_keyboard_configuration(MirKeyboardConfig const&) override;
1854+ void disable_queue();
1855 private:
1856 MirInputDeviceId const device_id;
1857 InputDevice& device;
1858@@ -65,8 +67,9 @@
1859 optional_value<PointerSettings> pointer;
1860 optional_value<TouchpadSettings> touchpad;
1861 optional_value<MirKeyboardConfig> keyboard;
1862- std::shared_ptr<dispatch::ActionQueue> const actions;
1863+ std::shared_ptr<dispatch::ActionQueue> actions;
1864 std::shared_ptr<KeyMapper> const key_mapper;
1865+ std::mutex mutable config_mutex;
1866 };
1867
1868 }
1869
1870=== modified file 'src/server/input/default_input_device_hub.cpp'
1871--- src/server/input/default_input_device_hub.cpp 2017-01-19 09:38:52 +0000
1872+++ src/server/input/default_input_device_hub.cpp 2017-05-26 16:23:13 +0000
1873@@ -99,15 +99,16 @@
1874 if (it == end(devices))
1875 {
1876 auto id = create_new_device_id();
1877- auto handle = std::make_shared<DefaultDevice>(id, device_queue, *device, key_mapper);
1878+ auto queue = std::make_shared<dispatch::ActionQueue>();
1879+ auto handle = std::make_shared<DefaultDevice>(id, queue, *device, key_mapper);
1880 // send input device info to observer loop..
1881 devices.push_back(std::make_unique<RegisteredDevice>(
1882- device, id, input_dispatchable, cookie_authority, handle));
1883+ device, handle->id(), queue, cookie_authority, handle));
1884
1885 auto const& dev = devices.back();
1886
1887 seat->add_device(*handle);
1888- dev->start(seat);
1889+ dev->start(seat, input_dispatchable);
1890
1891 // pass input device handle to observer loop..
1892 observer_queue->enqueue(this,
1893@@ -115,7 +116,6 @@
1894 {
1895 add_device_handle(handle);
1896 });
1897-
1898 }
1899 else
1900 {
1901@@ -140,7 +140,7 @@
1902 if (seat)
1903 {
1904 seat->remove_device(*item->handle);
1905- item->stop();
1906+ item->stop(input_dispatchable);
1907 }
1908 // send input device info to observer queue..
1909 observer_queue->enqueue(
1910@@ -166,14 +166,14 @@
1911 mi::DefaultInputDeviceHub::RegisteredDevice::RegisteredDevice(
1912 std::shared_ptr<InputDevice> const& dev,
1913 MirInputDeviceId device_id,
1914- std::shared_ptr<dispatch::MultiplexingDispatchable> const& multiplexer,
1915+ std::shared_ptr<dispatch::ActionQueue> const& queue,
1916 std::shared_ptr<mir::cookie::Authority> const& cookie_authority,
1917 std::shared_ptr<mi::DefaultDevice> const& handle)
1918 : handle(handle),
1919 device_id(device_id),
1920 cookie_authority(cookie_authority),
1921 device(dev),
1922- multiplexer(multiplexer)
1923+ queue(queue)
1924 {
1925 }
1926
1927@@ -206,17 +206,23 @@
1928 return dev == device;
1929 }
1930
1931-void mi::DefaultInputDeviceHub::RegisteredDevice::start(std::shared_ptr<Seat> const& seat)
1932+void mi::DefaultInputDeviceHub::RegisteredDevice::start(std::shared_ptr<Seat> const& seat, std::shared_ptr<dispatch::MultiplexingDispatchable> const& multiplexer)
1933 {
1934+ multiplexer->add_watch(queue);
1935+
1936 this->seat = seat;
1937 builder = std::make_unique<DefaultEventBuilder>(device_id, cookie_authority, seat);
1938 device->start(this, builder.get());
1939 }
1940
1941-void mi::DefaultInputDeviceHub::RegisteredDevice::stop()
1942+void mi::DefaultInputDeviceHub::RegisteredDevice::stop(std::shared_ptr<dispatch::MultiplexingDispatchable> const& multiplexer)
1943 {
1944+ multiplexer->remove_watch(queue);
1945+ handle->disable_queue();
1946+
1947 device->stop();
1948 seat = nullptr;
1949+ queue.reset();
1950 builder.reset();
1951 }
1952
1953
1954=== modified file 'src/server/input/default_input_device_hub.h'
1955--- src/server/input/default_input_device_hub.h 2017-01-19 09:38:52 +0000
1956+++ src/server/input/default_input_device_hub.h 2017-05-26 16:23:13 +0000
1957@@ -90,6 +90,7 @@
1958 void device_changed(Device* dev);
1959 void emit_changed_devices();
1960 MirInputDeviceId create_new_device_id();
1961+
1962 std::shared_ptr<Seat> const seat;
1963 std::shared_ptr<frontend::EventSink> const sink;
1964 std::shared_ptr<dispatch::MultiplexingDispatchable> const input_dispatchable;
1965@@ -105,14 +106,14 @@
1966 public:
1967 RegisteredDevice(std::shared_ptr<InputDevice> const& dev,
1968 MirInputDeviceId dev_id,
1969- std::shared_ptr<dispatch::MultiplexingDispatchable> const& multiplexer,
1970+ std::shared_ptr<dispatch::ActionQueue> const& multiplexer,
1971 std::shared_ptr<cookie::Authority> const& cookie_authority,
1972 std::shared_ptr<DefaultDevice> const& handle);
1973 void handle_input(MirEvent& event) override;
1974 mir::geometry::Rectangle bounding_rectangle() const override;
1975 bool device_matches(std::shared_ptr<InputDevice> const& dev) const;
1976- void start(std::shared_ptr<Seat> const& seat);
1977- void stop();
1978+ void start(std::shared_ptr<Seat> const& seat, std::shared_ptr<dispatch::MultiplexingDispatchable> const& dispatchable);
1979+ void stop(std::shared_ptr<dispatch::MultiplexingDispatchable> const& dispatchable);
1980 MirInputDeviceId id();
1981 std::shared_ptr<Seat> seat;
1982 const std::shared_ptr<DefaultDevice> handle;
1983@@ -124,7 +125,7 @@
1984 std::unique_ptr<DefaultEventBuilder> builder;
1985 std::shared_ptr<cookie::Authority> cookie_authority;
1986 std::shared_ptr<InputDevice> const device;
1987- std::shared_ptr<dispatch::MultiplexingDispatchable> const multiplexer;
1988+ std::shared_ptr<dispatch::ActionQueue> queue;
1989 };
1990
1991 std::vector<std::shared_ptr<Device>> handles;
1992
1993=== modified file 'tests/unit-tests/input/test_default_device.cpp'
1994--- tests/unit-tests/input/test_default_device.cpp 2017-01-18 02:29:37 +0000
1995+++ tests/unit-tests/input/test_default_device.cpp 2017-05-26 16:23:13 +0000
1996@@ -155,3 +155,26 @@
1997
1998 queue->dispatch(md::FdEvent::readable);
1999 }
2000+
2001+TEST_F(DefaultDevice, disable_queue_ends_config_processing)
2002+{
2003+ mi::DefaultDevice dev(MirInputDeviceId{17}, queue, touchpad, mt::fake_shared(key_mapper));
2004+
2005+ dev.disable_queue();
2006+ MirPointerConfig pointer_conf;
2007+ pointer_conf.cursor_acceleration_bias(1.0);
2008+
2009+ EXPECT_CALL(touchpad, apply_settings(Matcher<mi::TouchpadSettings const&>(_))).Times(0);
2010+ dev.apply_pointer_configuration(pointer_conf);
2011+}
2012+
2013+TEST_F(DefaultDevice, disable_queue_removes_reference_to_queue)
2014+{
2015+ std::weak_ptr<md::ActionQueue> ref = queue;
2016+ mi::DefaultDevice dev(MirInputDeviceId{17}, queue, touchpad, mt::fake_shared(key_mapper));
2017+ queue.reset();
2018+
2019+ EXPECT_THAT(ref.lock(), Ne(nullptr));
2020+ dev.disable_queue();
2021+ EXPECT_THAT(ref.lock(), Eq(nullptr));
2022+}
2023
2024=== modified file 'tests/unit-tests/input/test_default_input_device_hub.cpp'
2025--- tests/unit-tests/input/test_default_input_device_hub.cpp 2017-01-19 09:38:52 +0000
2026+++ tests/unit-tests/input/test_default_input_device_hub.cpp 2017-05-26 16:23:13 +0000
2027@@ -236,3 +236,21 @@
2028 observer_loop.trigger_server_actions();
2029 }
2030
2031+TEST_F(InputDeviceHubTest, no_device_config_action_after_device_removal)
2032+{
2033+ std::shared_ptr<mi::Device> dev_ptr;
2034+ MirPointerConfig ptr_config;
2035+ ptr_config.cursor_acceleration_bias(0.5);
2036+
2037+ ON_CALL(mock_observer, device_added(WithName("mouse"))).WillByDefault(SaveArg<0>(&dev_ptr));
2038+
2039+ hub.add_device(mt::fake_shared(mouse));
2040+ hub.add_observer(mt::fake_shared(mock_observer));
2041+ observer_loop.trigger_server_actions();
2042+
2043+ EXPECT_CALL(mouse, apply_settings(Matcher<mi::PointerSettings const&>(_))).Times(0);
2044+
2045+ dev_ptr->apply_pointer_configuration(ptr_config);
2046+ hub.remove_device(mt::fake_shared(mouse));
2047+ observer_loop.trigger_server_actions();
2048+}

Subscribers

People subscribed via source and target branches

to all changes: