Mir

Merge lp:~andreas-pokorny/mir/mediate-nested-cursor-configuration-on-construction into lp:mir

Proposed by Andreas Pokorny
Status: Merged
Approved by: Andreas Pokorny
Approved revision: no longer in the source branch.
Merged at revision: 3514
Proposed branch: lp:~andreas-pokorny/mir/mediate-nested-cursor-configuration-on-construction
Merge into: lp:mir
Diff against target: 168 lines (+67/-8)
3 files modified
src/server/graphics/nested/mir_client_host_connection.cpp (+40/-3)
src/server/graphics/nested/mir_client_host_connection.h (+19/-0)
tests/acceptance-tests/test_nested_mir.cpp (+8/-5)
To merge this branch: bzr merge lp:~andreas-pokorny/mir/mediate-nested-cursor-configuration-on-construction
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Kevin DuBois (community) Approve
Alan Griffiths Approve
Chris Halse Rogers Approve
Cemil Azizoglu (community) Approve
Review via email: mp+293254@code.launchpad.net

Commit message

Store the cursor image configured in MirClientHostConnection

Due to rather accidental construction orders the initial configuration of the nested surface cursor images is lost.
It is done by mir::graphics::nested::Cursor::Cusor but in the current setup it is constructed ahead of mir::graphics::nested::Display and
any attached DisplayBuffers. With this change the construction order is no longer relevant.

A change of the construction order will happen due to the changes in the nested input platform.

Description of the change

This is a split out from the nested input platform work. On lp:mir the nested cursor attempts to set the default cursor image to the hostconnection which then turns to all available surfaces and applies the cursor image. But since the display buffers need the cursor listener interface and since the display buffers are created on construction that immediate cursor image setting fails.

It fails, but at the same time it also fulfills one of our acceptance tests which require no buffer submission on startup of the nested server.

The nested input platform MP makes small changes to the dependencies and thus changes the order in which Cursor and Display constructors are executed. Thus setting the cursor images succeeds so we get one buffer submission on the buffer stream of the cursor images on nested server construction.

This MP stores the CursorImage inside the MirHostClientConnection and makes the cursor configuration succeed during construction time.

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

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

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

ok

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

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

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Related to bug 1447839 at all?

Revision history for this message
Kevin DuBois (kdub) wrote :

+ buffer.resize(size_.width.as_int() * size_.height.as_int() * 4);
would be nicer to use MIR_BYTES_PER_PIXEL macro

+ NestedCursorImage& operator=(graphics::CursorImage const& other);
assign without a copy-constructor?

+ if (stored_cursor_image.size().width.as_int() * stored_cursor_image.size().width.as_int())
should the 2nd term be width (seems to be checking for non-zero width and non-zero height)

review: Needs Fixing
Revision history for this message
Chris Halse Rogers (raof) wrote :

Ok, modulo Kevin's needs-fixings.

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

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

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

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

OK

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

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

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

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

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

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

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

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

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Kevin DuBois (kdub) wrote :

lgtm, sorry for the delay in reviewing.

review: Approve
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

CI failure looks like lp:1523621

Rebuilding...

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

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/271/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/1086/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/293/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/1134
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/1125
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/1125
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/1096/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/1096
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/1096/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/1096
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/1096/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/1096
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/1096/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/1096
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/1096/artifact/output/*zip*/output.zip

review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Just bug 1576690. Try again.

Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :

hm something is different in the vivid vms .. the logs about the display configuration take a lot longer than the normal execution time .. so i changed the initial sleep-hack.

Revision history for this message
Mir CI Bot (mir-ci-bot) :
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/graphics/nested/mir_client_host_connection.cpp'
2--- src/server/graphics/nested/mir_client_host_connection.cpp 2016-03-29 07:30:50 +0000
3+++ src/server/graphics/nested/mir_client_host_connection.cpp 2016-05-20 08:08:26 +0000
4@@ -36,7 +36,7 @@
5 #include <algorithm>
6 #include <stdexcept>
7
8-#include <string.h>
9+#include <cstring>
10
11 namespace mg = mir::graphics;
12 namespace mgn = mir::graphics::nested;
13@@ -150,7 +150,7 @@
14
15 for (int row = 0; row != image_height; ++row)
16 {
17- memcpy(dest, src, image_stride);
18+ std::memcpy(dest, src, image_stride);
19 dest += g.stride;
20 src += image_stride;
21 }
22@@ -256,6 +256,39 @@
23
24 }
25
26+void const* mgn::MirClientHostConnection::NestedCursorImage::as_argb_8888() const
27+{
28+ return buffer.data();
29+}
30+
31+mir::geometry::Size mgn::MirClientHostConnection::NestedCursorImage::size() const
32+{
33+ return size_;
34+}
35+
36+mir::geometry::Displacement mgn::MirClientHostConnection::NestedCursorImage::hotspot() const
37+{
38+ return hotspot_;
39+}
40+
41+mgn::MirClientHostConnection::NestedCursorImage::NestedCursorImage(mg::CursorImage const& other)
42+ : hotspot_(other.hotspot()),
43+ size_(other.size()),
44+ buffer(size_.width.as_int() * size_.height.as_int() * MIR_BYTES_PER_PIXEL(mir_pixel_format_argb_8888))
45+{
46+ std::memcpy(buffer.data(), other.as_argb_8888(), buffer.size());
47+}
48+
49+mgn::MirClientHostConnection::NestedCursorImage& mgn::MirClientHostConnection::NestedCursorImage::operator=(mg::CursorImage const& other)
50+{
51+ hotspot_ = other.hotspot();
52+ size_ = other.size();
53+ buffer.resize(size_.width.as_int() * size_.height.as_int() * MIR_BYTES_PER_PIXEL(mir_pixel_format_argb_8888));
54+ std::memcpy(buffer.data(), other.as_argb_8888(), buffer.size());
55+
56+ return *this;
57+}
58+
59 mgn::MirClientHostConnection::MirClientHostConnection(
60 std::string const& host_socket,
61 std::string const& name,
62@@ -362,6 +395,9 @@
63 delete surf;
64 });
65
66+ if (stored_cursor_image.size().width.as_int() * stored_cursor_image.size().height.as_int())
67+ surf->set_cursor_image(stored_cursor_image);
68+
69 surfaces.push_back(surf.get());
70 return surf;
71 }
72@@ -398,10 +434,11 @@
73 void mgn::MirClientHostConnection::set_cursor_image(mg::CursorImage const& image)
74 {
75 std::lock_guard<std::mutex> lg(surfaces_mutex);
76+ stored_cursor_image = image;
77 for (auto s : surfaces)
78 {
79 auto surface = static_cast<MirClientHostSurface*>(s);
80- surface->set_cursor_image(image);
81+ surface->set_cursor_image(stored_cursor_image);
82 }
83 }
84
85
86=== modified file 'src/server/graphics/nested/mir_client_host_connection.h'
87--- src/server/graphics/nested/mir_client_host_connection.h 2016-03-29 07:30:50 +0000
88+++ src/server/graphics/nested/mir_client_host_connection.h 2016-05-20 08:08:26 +0000
89@@ -22,8 +22,12 @@
90 #include "host_connection.h"
91 #include "mir/shell/host_lifecycle_event_listener.h"
92 #include "mir/input/input_device_hub.h"
93+#include "mir/geometry/size.h"
94+#include "mir/geometry/displacement.h"
95+#include "mir/graphics/cursor_image.h"
96
97 #include <string>
98+#include <vector>
99 #include <mutex>
100
101 struct MirConnection;
102@@ -97,6 +101,21 @@
103 std::vector<std::shared_ptr<input::Device>> devices;
104 UniqueInputConfig config;
105
106+ struct NestedCursorImage : graphics::CursorImage
107+ {
108+ NestedCursorImage() = default;
109+ NestedCursorImage(graphics::CursorImage const& other);
110+ NestedCursorImage& operator=(graphics::CursorImage const& other);
111+
112+ void const* as_argb_8888() const override;
113+ geometry::Size size() const override;
114+ geometry::Displacement hotspot() const override;
115+ private:
116+ geometry::Displacement hotspot_;
117+ geometry::Size size_;
118+ std::vector<uint8_t> buffer;
119+ };
120+ NestedCursorImage stored_cursor_image;
121 };
122
123 }
124
125=== modified file 'tests/acceptance-tests/test_nested_mir.cpp'
126--- tests/acceptance-tests/test_nested_mir.cpp 2016-05-03 04:36:33 +0000
127+++ tests/acceptance-tests/test_nested_mir.cpp 2016-05-20 08:08:26 +0000
128@@ -620,8 +620,10 @@
129
130 TEST_F(NestedServer, posts_when_scene_has_visible_changes)
131 {
132- // No post on surface creation
133- EXPECT_CALL(*mock_session_mediator_report, session_submit_buffer_called(_)).Times(0);
134+ auto const number_of_nested_surfaces = 2;
135+ auto const number_of_cursor_streams = number_of_nested_surfaces;
136+ // No post on surface creation for the display surfaces - but preparing the cursor is fine
137+ EXPECT_CALL(*mock_session_mediator_report, session_submit_buffer_called(_)).Times(number_of_cursor_streams);
138 NestedMirRunner nested_mir{new_connection()};
139
140 auto const connection = mir_connect_sync(nested_mir.new_connection().c_str(), __PRETTY_FUNCTION__);
141@@ -636,7 +638,7 @@
142 {
143 mt::Signal wait;
144
145- EXPECT_CALL(*mock_session_mediator_report, session_submit_buffer_called(_)).Times(2)
146+ EXPECT_CALL(*mock_session_mediator_report, session_submit_buffer_called(_)).Times(number_of_nested_surfaces)
147 .WillOnce(InvokeWithoutArgs([]{}))
148 .WillOnce(InvokeWithoutArgs([&] { wait.raise(); }));
149
150@@ -650,7 +652,7 @@
151 {
152 mt::Signal wait;
153
154- EXPECT_CALL(*mock_session_mediator_report, session_submit_buffer_called(_)).Times(2)
155+ EXPECT_CALL(*mock_session_mediator_report, session_submit_buffer_called(_)).Times(number_of_nested_surfaces)
156 .WillOnce(InvokeWithoutArgs([]{}))
157 .WillOnce(InvokeWithoutArgs([&] { wait.raise(); }));
158
159@@ -770,7 +772,8 @@
160
161 // TODO workaround for lp:1523621
162 // (I don't see a way to detect that the host has placed focus on "Mir nested display for output #1")
163- std::this_thread::sleep_for(10ms);
164+ std::this_thread::sleep_for(1s);
165+ Mock::VerifyAndClearExpectations(mock_cursor.get());
166
167 for (auto const name : cursor_names)
168 {

Subscribers

People subscribed via source and target branches