Mir

Merge lp:~albaguirre/mir/fix-1679836 into lp:mir

Proposed by Alberto Aguirre
Status: Merged
Approved by: Brandon Schaefer
Approved revision: no longer in the source branch.
Merged at revision: 4145
Proposed branch: lp:~albaguirre/mir/fix-1679836
Merge into: lp:mir
Prerequisite: lp:~albaguirre/mir/tidy-up-client-cursor-tests
Diff against target: 83 lines (+36/-8)
3 files modified
src/server/frontend/session_mediator.cpp (+3/-8)
tests/acceptance-tests/test_client_cursor_api.cpp (+31/-0)
tests/include/mir/test/doubles/mock_buffer_stream.h (+2/-0)
To merge this branch: bzr merge lp:~albaguirre/mir/fix-1679836
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Brandon Schaefer (community) Approve
Review via email: mp+322156@code.launchpad.net

Commit message

Use BufferStream::suitable_for_cursor instead of checking pixel format directly.

To post a comment you must log in.
Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

Nice, lgtm. Ill let the auto lander check if it passes :)

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

FAILED: Continuous integration, rev:4145
https://mir-jenkins.ubuntu.com/job/mir-ci/3343/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4515/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4633
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4622
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4622
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4622
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4622
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4546
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4546/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/4546
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4546/artifact/output/*zip*/output.zip
    ABORTED: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4546/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4546
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4546/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4546
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4546/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/4546
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4546/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Alberto Aguirre (albaguirre) wrote :

Hung in NestedInput.nested_clients_can_change_host_device_configurations, seems unrelated.

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

PASSED: Continuous integration, rev:4145
https://mir-jenkins.ubuntu.com/job/mir-ci/3346/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4519
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4637
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4626
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/4626
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4626
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4626
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4550
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4550/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/4550
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4550/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4550
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4550/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4550
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4550/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4550
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4550/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/4550
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4550/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3346/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 'src/server/frontend/session_mediator.cpp'
2--- src/server/frontend/session_mediator.cpp 2017-04-06 17:38:30 +0000
3+++ src/server/frontend/session_mediator.cpp 2017-04-06 21:18:28 +0000
4@@ -86,13 +86,6 @@
5
6 namespace
7 {
8-//TODO: accept other pixel format types
9-void throw_if_unsuitable_for_cursor(mf::BufferStream& stream)
10-{
11- if (stream.pixel_format() != mir_pixel_format_argb_8888)
12- BOOST_THROW_EXCEPTION(std::logic_error("Only argb8888 buffer streams may currently be attached to the cursor"));
13-}
14-
15 mg::GammaCurve convert_string_to_gamma_curve(std::string const& str_bytes)
16 {
17 mg::GammaCurve out(str_bytes.size() / (sizeof(mg::GammaCurve::value_type) / sizeof(char)));
18@@ -668,7 +661,9 @@
19 surface_specification.has_hotspot_y())
20 {
21 mf::BufferStreamId id{surface_specification.cursor_id().value()};
22- throw_if_unsuitable_for_cursor(*session->get_buffer_stream(id));
23+ auto stream = session->get_buffer_stream(id);
24+ if (!stream->suitable_for_cursor())
25+ BOOST_THROW_EXCEPTION(std::logic_error("Cursor buffer streams must have mir_pixel_format_argb_8888 format"));
26 mods.stream_cursor = msh::StreamCursor{
27 id, geom::Displacement{surface_specification.hotspot_x(), surface_specification.hotspot_y()} };
28 }
29
30=== modified file 'tests/acceptance-tests/test_client_cursor_api.cpp'
31--- tests/acceptance-tests/test_client_cursor_api.cpp 2017-04-06 21:18:28 +0000
32+++ tests/acceptance-tests/test_client_cursor_api.cpp 2017-04-06 21:18:28 +0000
33@@ -721,6 +721,37 @@
34 expect_client_shutdown();
35 }
36
37+TEST_F(ClientCursor, from_a_surface_is_applied)
38+{
39+ client_geometries[client_name_1] =
40+ geom::Rectangle{{0, 0}, {1, 1}};
41+
42+ SurfaceCursorClient client{new_connection(), client_name_1};
43+
44+ {
45+ InSequence seq;
46+ EXPECT_CALL(cursor, show(_)).Times(2);
47+ EXPECT_CALL(cursor, show(_)).Times(1)
48+ .WillOnce(mt::WakeUp(&expectations_satisfied));
49+ }
50+
51+ mt::Signal cursor_image_set;
52+
53+ {
54+ InSequence seq;
55+ EXPECT_CALL(*mock_surface_observer, cursor_image_set_to(_)).Times(2);
56+ EXPECT_CALL(*mock_surface_observer, cursor_image_set_to(_))
57+ .WillOnce(mt::WakeUp(&cursor_image_set));
58+ }
59+
60+ client.configure_cursor();
61+
62+ EXPECT_TRUE(cursor_image_set.wait_for(timeout));
63+
64+ expectations_satisfied.wait_for(60s);
65+ expect_client_shutdown();
66+}
67+
68 namespace
69 {
70 // The nested server fixture we use is using the 'CanonicalWindowManager' which will place
71
72=== modified file 'tests/include/mir/test/doubles/mock_buffer_stream.h'
73--- tests/include/mir/test/doubles/mock_buffer_stream.h 2017-02-28 08:53:57 +0000
74+++ tests/include/mir/test/doubles/mock_buffer_stream.h 2017-04-06 21:18:28 +0000
75@@ -53,6 +53,8 @@
76 .WillByDefault(testing::Return(mir_pixel_format_abgr_8888));
77 ON_CALL(*this, stream_size())
78 .WillByDefault(testing::Return(geometry::Size{0,0}));
79+ ON_CALL(*this, suitable_for_cursor())
80+ .WillByDefault(testing::Return(true));
81 }
82 std::shared_ptr<StubBuffer> buffer { std::make_shared<StubBuffer>() };
83 MOCK_METHOD1(acquire_client_buffer, void(std::function<void(graphics::Buffer* buffer)>));

Subscribers

People subscribed via source and target branches