Merge lp:~alan-griffiths/mir/server-support-for-client-initiates-move into lp:mir
- server-support-for-client-initiates-move
- Merge into development-branch
Status: | Merged |
---|---|
Approved by: | Alan Griffiths |
Approved revision: | no longer in the source branch. |
Merged at revision: | 4143 |
Proposed branch: | lp:~alan-griffiths/mir/server-support-for-client-initiates-move |
Merge into: | lp:mir |
Diff against target: |
1792 lines (+444/-630) 34 files modified
examples/CMakeLists.txt (+0/-2) examples/server_example_basic_window_manager.cpp (+8/-0) examples/server_example_basic_window_manager.h (+8/-1) examples/server_example_window_management_info.cpp (+0/-373) examples/server_example_window_management_info.h (+0/-105) include/server/mir/shell/abstract_shell.h (+5/-0) include/server/mir/shell/basic_window_manager.h (+14/-2) include/server/mir/shell/canonical_window_manager.h (+5/-1) include/server/mir/shell/shell.h (+5/-0) include/server/mir/shell/shell_wrapper.h (+5/-0) include/server/mir/shell/system_compositor_window_manager.h (+5/-0) include/server/mir/shell/window_management_info.h (+3/-3) include/server/mir/shell/window_manager.h (+5/-0) include/test/mir/test/doubles/mock_window_manager.h (+1/-0) src/include/server/mir/frontend/shell.h (+9/-7) src/server/CMakeLists.txt (+1/-0) src/server/frontend/CMakeLists.txt (+1/-0) src/server/frontend/session_mediator.cpp (+15/-2) src/server/frontend/shell_wrapper.cpp (+4/-14) src/server/frontend/shell_wrapper.h (+5/-9) src/server/shell/CMakeLists.txt (+3/-3) src/server/shell/abstract_shell.cpp (+8/-0) src/server/shell/basic_window_manager.cpp (+32/-6) src/server/shell/frontend_shell.cpp (+30/-18) src/server/shell/frontend_shell.h (+5/-9) src/server/shell/shell_wrapper.cpp (+8/-0) src/server/shell/system_compositor_window_manager.cpp (+7/-0) src/server/shell/window_management_info.cpp (+72/-0) src/server/symbols.map (+144/-63) tests/acceptance-tests/CMakeLists.txt (+0/-8) tests/acceptance-tests/client_mediated_user_gestures.cpp (+28/-2) tests/acceptance-tests/test_client_cursor_api.cpp (+3/-0) tests/acceptance-tests/test_shell_control_of_surface_configuration.cpp (+3/-0) tests/include/mir/test/doubles/mock_shell.h (+2/-2) |
To merge this branch: | bzr merge lp:~alan-griffiths/mir/server-support-for-client-initiates-move |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mir CI Bot | continuous-integration | Approve | |
Kevin DuBois (community) | Approve | ||
Review via email: mp+321470@code.launchpad.net |
Commit message
Server support for mir_window_
Description of the change
Server support for mir_window_
To test this I had to make some classes public (msh::BasicWind
So these classes are both published and deprecated. Cleanup to follow, hopefully soon.
Mir CI Bot (mir-ci-bot) wrote : | # |
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:4135
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4136
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4137
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Kevin DuBois (kdub) wrote : | # |
'StreamPainter' isn't a useful interface anymore, can probably be removed.
should this be comment out?
963 +// policy-
Alan Griffiths (alan-griffiths) wrote : | # |
> 'StreamPainter' isn't a useful interface anymore, can probably be removed.
Reworking the code to remove it is beyond the scope of *this* MP.
In fact, I think it pointless as this code is superseded by miral, we just haven't quite reached the point where we can integrate that work.
> should this be comment out?
> 963 +// policy-
Replaced with an English version.
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:4139
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Alan Griffiths (alan-griffiths) wrote : | # |
^ Seems like a CI glitch...
10:48:46 error: device offline
10:48:46 error: device offline
10:48:46 error: device offline
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:4139
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Preview Diff
1 | === modified file 'examples/CMakeLists.txt' | |||
2 | --- examples/CMakeLists.txt 2017-02-15 07:38:33 +0000 | |||
3 | +++ examples/CMakeLists.txt 2017-04-04 10:15:32 +0000 | |||
4 | @@ -28,8 +28,6 @@ | |||
5 | 28 | server_example_input_filter.cpp | 28 | server_example_input_filter.cpp |
6 | 29 | server_example_host_lifecycle_event.cpp | 29 | server_example_host_lifecycle_event.cpp |
7 | 30 | server_example_window_management.cpp | 30 | server_example_window_management.cpp |
8 | 31 | server_example_window_management_info.cpp | ||
9 | 32 | server_example_window_management_info.h | ||
10 | 33 | server_example_custom_compositor.cpp | 31 | server_example_custom_compositor.cpp |
11 | 34 | server_example_adorning_compositor.cpp | 32 | server_example_adorning_compositor.cpp |
12 | 35 | server_example_cursor_images.cpp | 33 | server_example_cursor_images.cpp |
13 | 36 | 34 | ||
14 | === modified file 'examples/server_example_basic_window_manager.cpp' | |||
15 | --- examples/server_example_basic_window_manager.cpp 2017-03-08 16:16:44 +0000 | |||
16 | +++ examples/server_example_basic_window_manager.cpp 2017-04-04 10:15:32 +0000 | |||
17 | @@ -144,6 +144,14 @@ | |||
18 | 144 | // Not supported in example servers | 144 | // Not supported in example servers |
19 | 145 | } | 145 | } |
20 | 146 | 146 | ||
21 | 147 | void me::BasicWindowManager::handle_request_move( | ||
22 | 148 | std::shared_ptr<scene::Session> const& /*session*/, | ||
23 | 149 | std::shared_ptr<scene::Surface> const& /*surface*/, | ||
24 | 150 | uint64_t /*timestamp*/) | ||
25 | 151 | { | ||
26 | 152 | // Not supported in example servers | ||
27 | 153 | } | ||
28 | 154 | |||
29 | 147 | int me::BasicWindowManager::set_surface_attribute( | 155 | int me::BasicWindowManager::set_surface_attribute( |
30 | 148 | std::shared_ptr<scene::Session> const& /*session*/, | 156 | std::shared_ptr<scene::Session> const& /*session*/, |
31 | 149 | std::shared_ptr<scene::Surface> const& surface, | 157 | std::shared_ptr<scene::Surface> const& surface, |
32 | 150 | 158 | ||
33 | === modified file 'examples/server_example_basic_window_manager.h' | |||
34 | --- examples/server_example_basic_window_manager.h 2017-03-08 12:59:36 +0000 | |||
35 | +++ examples/server_example_basic_window_manager.h 2017-04-04 10:15:32 +0000 | |||
36 | @@ -19,7 +19,7 @@ | |||
37 | 19 | #ifndef MIR_EXAMPLE_BASIC_WINDOW_MANAGER_H_ | 19 | #ifndef MIR_EXAMPLE_BASIC_WINDOW_MANAGER_H_ |
38 | 20 | #define MIR_EXAMPLE_BASIC_WINDOW_MANAGER_H_ | 20 | #define MIR_EXAMPLE_BASIC_WINDOW_MANAGER_H_ |
39 | 21 | 21 | ||
41 | 22 | #include "server_example_window_management_info.h" | 22 | #include "mir/shell/window_management_info.h" |
42 | 23 | 23 | ||
43 | 24 | #include "mir/geometry/rectangles.h" | 24 | #include "mir/geometry/rectangles.h" |
44 | 25 | #include "mir/shell/abstract_shell.h" | 25 | #include "mir/shell/abstract_shell.h" |
45 | @@ -36,6 +36,8 @@ | |||
46 | 36 | namespace examples | 36 | namespace examples |
47 | 37 | { | 37 | { |
48 | 38 | using shell::SurfaceSet; | 38 | using shell::SurfaceSet; |
49 | 39 | using shell::SurfaceInfo; | ||
50 | 40 | using shell::SessionInfo; | ||
51 | 39 | 41 | ||
52 | 40 | /// The interface through which the policy instructs the controller. | 42 | /// The interface through which the policy instructs the controller. |
53 | 41 | /// These functions assume that the BasicWindowManager data structures can be accessed freely. | 43 | /// These functions assume that the BasicWindowManager data structures can be accessed freely. |
54 | @@ -179,6 +181,11 @@ | |||
55 | 179 | std::shared_ptr<scene::Surface> const& surface, | 181 | std::shared_ptr<scene::Surface> const& surface, |
56 | 180 | uint64_t timestamp) override; | 182 | uint64_t timestamp) override; |
57 | 181 | 183 | ||
58 | 184 | void handle_request_move( | ||
59 | 185 | std::shared_ptr<scene::Session> const& session, | ||
60 | 186 | std::shared_ptr<scene::Surface> const& surface, | ||
61 | 187 | uint64_t timestamp) override; | ||
62 | 188 | |||
63 | 182 | int set_surface_attribute( | 189 | int set_surface_attribute( |
64 | 183 | std::shared_ptr<scene::Session> const& /*session*/, | 190 | std::shared_ptr<scene::Session> const& /*session*/, |
65 | 184 | std::shared_ptr<scene::Surface> const& surface, | 191 | std::shared_ptr<scene::Surface> const& surface, |
66 | 185 | 192 | ||
67 | === removed file 'examples/server_example_window_management_info.cpp' | |||
68 | --- examples/server_example_window_management_info.cpp 2017-01-30 08:13:20 +0000 | |||
69 | +++ examples/server_example_window_management_info.cpp 1970-01-01 00:00:00 +0000 | |||
70 | @@ -1,373 +0,0 @@ | |||
71 | 1 | /* | ||
72 | 2 | * Copyright © 2015 Canonical Ltd. | ||
73 | 3 | * | ||
74 | 4 | * This program is free software: you can redistribute it and/or modify it | ||
75 | 5 | * under the terms of the GNU General Public License version 3, | ||
76 | 6 | * as published by the Free Software Foundation. | ||
77 | 7 | * | ||
78 | 8 | * This program is distributed in the hope that it will be useful, | ||
79 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
80 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
81 | 11 | * GNU General Public License for more details. | ||
82 | 12 | * | ||
83 | 13 | * You should have received a copy of the GNU General Public License | ||
84 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
85 | 15 | * | ||
86 | 16 | * Authored by: Alan Griffiths <alan@octopull.co.uk> | ||
87 | 17 | */ | ||
88 | 18 | |||
89 | 19 | #include "server_example_window_management_info.h" | ||
90 | 20 | |||
91 | 21 | #include "mir/scene/surface.h" | ||
92 | 22 | #include "mir/scene/surface_creation_parameters.h" | ||
93 | 23 | #include "mir/scene/session.h" | ||
94 | 24 | |||
95 | 25 | #include "mir/graphics/buffer.h" | ||
96 | 26 | #include "mir/renderer/sw/pixel_source.h" | ||
97 | 27 | |||
98 | 28 | #include <atomic> | ||
99 | 29 | |||
100 | 30 | namespace me = mir::examples; | ||
101 | 31 | namespace ms = mir::scene; | ||
102 | 32 | namespace mg = mir::graphics; | ||
103 | 33 | namespace mrs = mir::renderer::software; | ||
104 | 34 | using namespace mir::geometry; | ||
105 | 35 | |||
106 | 36 | me::SurfaceInfo::SurfaceInfo( | ||
107 | 37 | std::shared_ptr<scene::Session> const& session, | ||
108 | 38 | std::shared_ptr<scene::Surface> const& surface, | ||
109 | 39 | scene::SurfaceCreationParameters const& params) : | ||
110 | 40 | type{surface->type()}, | ||
111 | 41 | state{surface->state()}, | ||
112 | 42 | restore_rect{surface->top_left(), surface->size()}, | ||
113 | 43 | session{session}, | ||
114 | 44 | parent{params.parent}, | ||
115 | 45 | min_width{params.min_width.is_set() ? params.min_width.value() : Width{}}, | ||
116 | 46 | min_height{params.min_height.is_set() ? params.min_height.value() : Height{}}, | ||
117 | 47 | max_width{params.max_width.is_set() ? params.max_width.value() : Width{std::numeric_limits<int>::max()}}, | ||
118 | 48 | max_height{params.max_height.is_set() ? params.max_height.value() : Height{std::numeric_limits<int>::max()}}, | ||
119 | 49 | width_inc{params.width_inc}, | ||
120 | 50 | height_inc{params.height_inc}, | ||
121 | 51 | min_aspect{params.min_aspect}, | ||
122 | 52 | max_aspect{params.max_aspect} | ||
123 | 53 | { | ||
124 | 54 | if (params.output_id != mir::graphics::DisplayConfigurationOutputId{0}) | ||
125 | 55 | output_id = params.output_id; | ||
126 | 56 | } | ||
127 | 57 | |||
128 | 58 | bool me::SurfaceInfo::can_be_active() const | ||
129 | 59 | { | ||
130 | 60 | switch (type) | ||
131 | 61 | { | ||
132 | 62 | case mir_window_type_normal: /**< AKA "regular" */ | ||
133 | 63 | case mir_window_type_utility: /**< AKA "floating" */ | ||
134 | 64 | case mir_window_type_dialog: | ||
135 | 65 | case mir_window_type_satellite: /**< AKA "toolbox"/"toolbar" */ | ||
136 | 66 | case mir_window_type_freestyle: | ||
137 | 67 | case mir_window_type_menu: | ||
138 | 68 | case mir_window_type_inputmethod: /**< AKA "OSK" or handwriting etc. */ | ||
139 | 69 | return true; | ||
140 | 70 | |||
141 | 71 | case mir_window_type_gloss: | ||
142 | 72 | case mir_window_type_tip: /**< AKA "tooltip" */ | ||
143 | 73 | default: | ||
144 | 74 | // Cannot have input focus | ||
145 | 75 | return false; | ||
146 | 76 | } | ||
147 | 77 | } | ||
148 | 78 | |||
149 | 79 | bool me::SurfaceInfo::must_have_parent() const | ||
150 | 80 | { | ||
151 | 81 | switch (type) | ||
152 | 82 | { | ||
153 | 83 | case mir_window_type_gloss:; | ||
154 | 84 | case mir_window_type_inputmethod: | ||
155 | 85 | case mir_window_type_satellite: | ||
156 | 86 | case mir_window_type_tip: | ||
157 | 87 | return true; | ||
158 | 88 | |||
159 | 89 | default: | ||
160 | 90 | return false; | ||
161 | 91 | } | ||
162 | 92 | } | ||
163 | 93 | |||
164 | 94 | bool me::SurfaceInfo::can_morph_to(MirWindowType new_type) const | ||
165 | 95 | { | ||
166 | 96 | switch (new_type) | ||
167 | 97 | { | ||
168 | 98 | case mir_window_type_normal: | ||
169 | 99 | case mir_window_type_utility: | ||
170 | 100 | case mir_window_type_satellite: | ||
171 | 101 | switch (type) | ||
172 | 102 | { | ||
173 | 103 | case mir_window_type_normal: | ||
174 | 104 | case mir_window_type_utility: | ||
175 | 105 | case mir_window_type_dialog: | ||
176 | 106 | case mir_window_type_satellite: | ||
177 | 107 | return true; | ||
178 | 108 | |||
179 | 109 | default: | ||
180 | 110 | break; | ||
181 | 111 | } | ||
182 | 112 | break; | ||
183 | 113 | |||
184 | 114 | case mir_window_type_dialog: | ||
185 | 115 | switch (type) | ||
186 | 116 | { | ||
187 | 117 | case mir_window_type_normal: | ||
188 | 118 | case mir_window_type_utility: | ||
189 | 119 | case mir_window_type_dialog: | ||
190 | 120 | case mir_window_type_menu: | ||
191 | 121 | case mir_window_type_satellite: | ||
192 | 122 | return true; | ||
193 | 123 | |||
194 | 124 | default: | ||
195 | 125 | break; | ||
196 | 126 | } | ||
197 | 127 | break; | ||
198 | 128 | |||
199 | 129 | default: | ||
200 | 130 | break; | ||
201 | 131 | } | ||
202 | 132 | |||
203 | 133 | return false; | ||
204 | 134 | } | ||
205 | 135 | |||
206 | 136 | bool me::SurfaceInfo::must_not_have_parent() const | ||
207 | 137 | { | ||
208 | 138 | switch (type) | ||
209 | 139 | { | ||
210 | 140 | case mir_window_type_normal: | ||
211 | 141 | case mir_window_type_utility: | ||
212 | 142 | return true; | ||
213 | 143 | |||
214 | 144 | default: | ||
215 | 145 | return false; | ||
216 | 146 | } | ||
217 | 147 | } | ||
218 | 148 | |||
219 | 149 | bool me::SurfaceInfo::is_visible() const | ||
220 | 150 | { | ||
221 | 151 | switch (state) | ||
222 | 152 | { | ||
223 | 153 | case mir_window_state_hidden: | ||
224 | 154 | case mir_window_state_minimized: | ||
225 | 155 | return false; | ||
226 | 156 | default: | ||
227 | 157 | break; | ||
228 | 158 | } | ||
229 | 159 | return true; | ||
230 | 160 | } | ||
231 | 161 | |||
232 | 162 | struct mir::examples::SurfaceInfo::StreamPainter | ||
233 | 163 | { | ||
234 | 164 | virtual void paint(int) = 0; | ||
235 | 165 | virtual ~StreamPainter() = default; | ||
236 | 166 | StreamPainter() = default; | ||
237 | 167 | StreamPainter(StreamPainter const&) = delete; | ||
238 | 168 | StreamPainter& operator=(StreamPainter const&) = delete; | ||
239 | 169 | }; | ||
240 | 170 | |||
241 | 171 | struct mir::examples::SurfaceInfo::AllocatingPainter | ||
242 | 172 | : mir::examples::SurfaceInfo::StreamPainter | ||
243 | 173 | { | ||
244 | 174 | AllocatingPainter( | ||
245 | 175 | std::shared_ptr<frontend::BufferStream> const& buffer_stream, | ||
246 | 176 | std::shared_ptr<scene::Session> const& session, | ||
247 | 177 | Size size) : | ||
248 | 178 | buffer_stream(buffer_stream), | ||
249 | 179 | session(session), | ||
250 | 180 | properties({ | ||
251 | 181 | size, | ||
252 | 182 | buffer_stream->pixel_format(), | ||
253 | 183 | mg::BufferUsage::software | ||
254 | 184 | }), | ||
255 | 185 | front_buffer(session->create_buffer(properties)), | ||
256 | 186 | back_buffer(session->create_buffer(properties)) | ||
257 | 187 | { | ||
258 | 188 | } | ||
259 | 189 | |||
260 | 190 | void paint(int intensity) override | ||
261 | 191 | { | ||
262 | 192 | auto buffer = session->get_buffer(back_buffer); | ||
263 | 193 | |||
264 | 194 | auto const format = buffer->pixel_format(); | ||
265 | 195 | auto const sz = buffer->size().height.as_int() * | ||
266 | 196 | buffer->size().width.as_int() * MIR_BYTES_PER_PIXEL(format); | ||
267 | 197 | std::vector<unsigned char> pixels(sz, intensity); | ||
268 | 198 | if (auto pixel_source = dynamic_cast<mrs::PixelSource*>(buffer->native_buffer_base())) | ||
269 | 199 | pixel_source->write(pixels.data(), sz); | ||
270 | 200 | buffer_stream->submit_buffer(buffer); | ||
271 | 201 | |||
272 | 202 | std::swap(front_buffer, back_buffer); | ||
273 | 203 | } | ||
274 | 204 | |||
275 | 205 | ~AllocatingPainter() | ||
276 | 206 | { | ||
277 | 207 | session->destroy_buffer(front_buffer); | ||
278 | 208 | session->destroy_buffer(back_buffer); | ||
279 | 209 | } | ||
280 | 210 | |||
281 | 211 | std::shared_ptr<frontend::BufferStream> const buffer_stream; | ||
282 | 212 | std::shared_ptr<scene::Session> const session; | ||
283 | 213 | mg::BufferProperties properties; | ||
284 | 214 | mg::BufferID front_buffer; | ||
285 | 215 | mg::BufferID back_buffer; | ||
286 | 216 | }; | ||
287 | 217 | |||
288 | 218 | void mir::examples::SurfaceInfo::init_titlebar( | ||
289 | 219 | std::shared_ptr<scene::Session> const& session, | ||
290 | 220 | std::shared_ptr<scene::Surface> const& surface) | ||
291 | 221 | { | ||
292 | 222 | auto stream = surface->primary_buffer_stream(); | ||
293 | 223 | stream_painter = std::make_shared<AllocatingPainter>(stream, session, surface->size()); | ||
294 | 224 | } | ||
295 | 225 | |||
296 | 226 | void mir::examples::SurfaceInfo::paint_titlebar(int intensity) | ||
297 | 227 | { | ||
298 | 228 | stream_painter->paint(intensity); | ||
299 | 229 | } | ||
300 | 230 | |||
301 | 231 | void me::SurfaceInfo::constrain_resize( | ||
302 | 232 | std::shared_ptr<ms::Surface> const& surface, | ||
303 | 233 | Point& requested_pos, | ||
304 | 234 | Size& requested_size, | ||
305 | 235 | bool const left_resize, | ||
306 | 236 | bool const top_resize, | ||
307 | 237 | Rectangle const& /*bounds*/) const | ||
308 | 238 | { | ||
309 | 239 | Point new_pos = requested_pos; | ||
310 | 240 | Size new_size = requested_size; | ||
311 | 241 | |||
312 | 242 | if (min_aspect.is_set()) | ||
313 | 243 | { | ||
314 | 244 | auto const ar = min_aspect.value(); | ||
315 | 245 | |||
316 | 246 | auto const error = new_size.height.as_int()*long(ar.width) - new_size.width.as_int()*long(ar.height); | ||
317 | 247 | |||
318 | 248 | if (error > 0) | ||
319 | 249 | { | ||
320 | 250 | // Add (denominator-1) to numerator to ensure rounding up | ||
321 | 251 | auto const width_correction = (error+(ar.height-1))/ar.height; | ||
322 | 252 | auto const height_correction = (error+(ar.width-1))/ar.width; | ||
323 | 253 | |||
324 | 254 | if (width_correction < height_correction) | ||
325 | 255 | { | ||
326 | 256 | new_size.width = new_size.width + DeltaX(width_correction); | ||
327 | 257 | } | ||
328 | 258 | else | ||
329 | 259 | { | ||
330 | 260 | new_size.height = new_size.height - DeltaY(height_correction); | ||
331 | 261 | } | ||
332 | 262 | } | ||
333 | 263 | } | ||
334 | 264 | |||
335 | 265 | if (max_aspect.is_set()) | ||
336 | 266 | { | ||
337 | 267 | auto const ar = max_aspect.value(); | ||
338 | 268 | |||
339 | 269 | auto const error = new_size.width.as_int()*long(ar.height) - new_size.height.as_int()*long(ar.width); | ||
340 | 270 | |||
341 | 271 | if (error > 0) | ||
342 | 272 | { | ||
343 | 273 | // Add (denominator-1) to numerator to ensure rounding up | ||
344 | 274 | auto const height_correction = (error+(ar.width-1))/ar.width; | ||
345 | 275 | auto const width_correction = (error+(ar.height-1))/ar.height; | ||
346 | 276 | |||
347 | 277 | if (width_correction < height_correction) | ||
348 | 278 | { | ||
349 | 279 | new_size.width = new_size.width - DeltaX(width_correction); | ||
350 | 280 | } | ||
351 | 281 | else | ||
352 | 282 | { | ||
353 | 283 | new_size.height = new_size.height + DeltaY(height_correction); | ||
354 | 284 | } | ||
355 | 285 | } | ||
356 | 286 | } | ||
357 | 287 | |||
358 | 288 | if (min_width > new_size.width) | ||
359 | 289 | new_size.width = min_width; | ||
360 | 290 | |||
361 | 291 | if (min_height > new_size.height) | ||
362 | 292 | new_size.height = min_height; | ||
363 | 293 | |||
364 | 294 | if (max_width < new_size.width) | ||
365 | 295 | new_size.width = max_width; | ||
366 | 296 | |||
367 | 297 | if (max_height < new_size.height) | ||
368 | 298 | new_size.height = max_height; | ||
369 | 299 | |||
370 | 300 | if (width_inc.is_set()) | ||
371 | 301 | { | ||
372 | 302 | auto const width = new_size.width.as_int() - min_width.as_int(); | ||
373 | 303 | auto inc = width_inc.value().as_int(); | ||
374 | 304 | if (width % inc) | ||
375 | 305 | new_size.width = min_width + DeltaX{inc*(((2L*width + inc)/2)/inc)}; | ||
376 | 306 | } | ||
377 | 307 | |||
378 | 308 | if (height_inc.is_set()) | ||
379 | 309 | { | ||
380 | 310 | auto const height = new_size.height.as_int() - min_height.as_int(); | ||
381 | 311 | auto inc = height_inc.value().as_int(); | ||
382 | 312 | if (height % inc) | ||
383 | 313 | new_size.height = min_height + DeltaY{inc*(((2L*height + inc)/2)/inc)}; | ||
384 | 314 | } | ||
385 | 315 | |||
386 | 316 | if (left_resize) | ||
387 | 317 | new_pos.x += new_size.width - requested_size.width; | ||
388 | 318 | |||
389 | 319 | if (top_resize) | ||
390 | 320 | new_pos.y += new_size.height - requested_size.height; | ||
391 | 321 | |||
392 | 322 | // placeholder - constrain onscreen | ||
393 | 323 | |||
394 | 324 | switch (state) | ||
395 | 325 | { | ||
396 | 326 | case mir_window_state_restored: | ||
397 | 327 | break; | ||
398 | 328 | |||
399 | 329 | // "A vertically maximised surface is anchored to the top and bottom of | ||
400 | 330 | // the available workspace and can have any width." | ||
401 | 331 | case mir_window_state_vertmaximized: | ||
402 | 332 | new_pos.y = surface->top_left().y; | ||
403 | 333 | new_size.height = surface->size().height; | ||
404 | 334 | break; | ||
405 | 335 | |||
406 | 336 | // "A horizontally maximised surface is anchored to the left and right of | ||
407 | 337 | // the available workspace and can have any height" | ||
408 | 338 | case mir_window_state_horizmaximized: | ||
409 | 339 | new_pos.x = surface->top_left().x; | ||
410 | 340 | new_size.width = surface->size().width; | ||
411 | 341 | break; | ||
412 | 342 | |||
413 | 343 | // "A maximised surface is anchored to the top, bottom, left and right of the | ||
414 | 344 | // available workspace. For example, if the launcher is always-visible then | ||
415 | 345 | // the left-edge of the surface is anchored to the right-edge of the launcher." | ||
416 | 346 | case mir_window_state_maximized: | ||
417 | 347 | default: | ||
418 | 348 | new_pos.x = surface->top_left().x; | ||
419 | 349 | new_pos.y = surface->top_left().y; | ||
420 | 350 | new_size.width = surface->size().width; | ||
421 | 351 | new_size.height = surface->size().height; | ||
422 | 352 | break; | ||
423 | 353 | } | ||
424 | 354 | |||
425 | 355 | requested_pos = new_pos; | ||
426 | 356 | requested_size = new_size; | ||
427 | 357 | } | ||
428 | 358 | |||
429 | 359 | bool me::SurfaceInfo::needs_titlebar(MirWindowType type) | ||
430 | 360 | { | ||
431 | 361 | switch (type) | ||
432 | 362 | { | ||
433 | 363 | case mir_window_type_freestyle: | ||
434 | 364 | case mir_window_type_menu: | ||
435 | 365 | case mir_window_type_inputmethod: | ||
436 | 366 | case mir_window_type_gloss: | ||
437 | 367 | case mir_window_type_tip: | ||
438 | 368 | // No decorations for these surface types | ||
439 | 369 | return false; | ||
440 | 370 | default: | ||
441 | 371 | return true; | ||
442 | 372 | } | ||
443 | 373 | } | ||
444 | 374 | 0 | ||
445 | === removed file 'examples/server_example_window_management_info.h' | |||
446 | --- examples/server_example_window_management_info.h 2017-01-18 02:29:37 +0000 | |||
447 | +++ examples/server_example_window_management_info.h 1970-01-01 00:00:00 +0000 | |||
448 | @@ -1,105 +0,0 @@ | |||
449 | 1 | /* | ||
450 | 2 | * Copyright © 2015 Canonical Ltd. | ||
451 | 3 | * | ||
452 | 4 | * This program is free software: you can redistribute it and/or modify it | ||
453 | 5 | * under the terms of the GNU General Public License version 3, | ||
454 | 6 | * as published by the Free Software Foundation. | ||
455 | 7 | * | ||
456 | 8 | * This program is distributed in the hope that it will be useful, | ||
457 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
458 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
459 | 11 | * GNU General Public License for more details. | ||
460 | 12 | * | ||
461 | 13 | * You should have received a copy of the GNU General Public License | ||
462 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
463 | 15 | * | ||
464 | 16 | * Authored by: Alan Griffiths <alan@octopull.co.uk> | ||
465 | 17 | */ | ||
466 | 18 | |||
467 | 19 | #ifndef MIR_SERVER_EXAMPLE_WINDOW_MANAGEMENT_INFO_H | ||
468 | 20 | #define MIR_SERVER_EXAMPLE_WINDOW_MANAGEMENT_INFO_H | ||
469 | 21 | |||
470 | 22 | #include "mir/geometry/rectangles.h" | ||
471 | 23 | #include "mir/optional_value.h" | ||
472 | 24 | #include "mir/shell/surface_specification.h" | ||
473 | 25 | |||
474 | 26 | #include <vector> | ||
475 | 27 | |||
476 | 28 | namespace mir | ||
477 | 29 | { | ||
478 | 30 | namespace scene { class Session; class Surface; class SurfaceCreationParameters; } | ||
479 | 31 | namespace examples | ||
480 | 32 | { | ||
481 | 33 | struct SurfaceInfo | ||
482 | 34 | { | ||
483 | 35 | SurfaceInfo( | ||
484 | 36 | std::shared_ptr <scene::Session> const& session, | ||
485 | 37 | std::shared_ptr <scene::Surface> const& surface, | ||
486 | 38 | scene::SurfaceCreationParameters const& params); | ||
487 | 39 | |||
488 | 40 | bool can_be_active() const; | ||
489 | 41 | |||
490 | 42 | bool can_morph_to(MirWindowType new_type) const; | ||
491 | 43 | |||
492 | 44 | bool must_have_parent() const; | ||
493 | 45 | |||
494 | 46 | bool must_not_have_parent() const; | ||
495 | 47 | |||
496 | 48 | bool is_visible() const; | ||
497 | 49 | |||
498 | 50 | static bool needs_titlebar(MirWindowType type); | ||
499 | 51 | |||
500 | 52 | void constrain_resize( | ||
501 | 53 | std::shared_ptr <scene::Surface> const& surface, | ||
502 | 54 | geometry::Point& requested_pos, | ||
503 | 55 | geometry::Size& requested_size, | ||
504 | 56 | const bool left_resize, | ||
505 | 57 | const bool top_resize, | ||
506 | 58 | geometry::Rectangle const& bounds) const; | ||
507 | 59 | |||
508 | 60 | MirWindowType type; | ||
509 | 61 | MirWindowState state; | ||
510 | 62 | geometry::Rectangle restore_rect; | ||
511 | 63 | std::weak_ptr <scene::Session> session; | ||
512 | 64 | std::weak_ptr <scene::Surface> parent; | ||
513 | 65 | std::vector <std::weak_ptr<scene::Surface>> children; | ||
514 | 66 | std::shared_ptr <scene::Surface> titlebar; | ||
515 | 67 | frontend::SurfaceId titlebar_id; | ||
516 | 68 | frontend::BufferStreamId titlebar_stream_id; | ||
517 | 69 | bool is_titlebar = false; | ||
518 | 70 | geometry::Width min_width; | ||
519 | 71 | geometry::Height min_height; | ||
520 | 72 | geometry::Width max_width; | ||
521 | 73 | geometry::Height max_height; | ||
522 | 74 | mir::optional_value<geometry::DeltaX> width_inc; | ||
523 | 75 | mir::optional_value<geometry::DeltaY> height_inc; | ||
524 | 76 | mir::optional_value<shell::SurfaceAspectRatio> min_aspect; | ||
525 | 77 | mir::optional_value<shell::SurfaceAspectRatio> max_aspect; | ||
526 | 78 | mir::optional_value<graphics::DisplayConfigurationOutputId> output_id; | ||
527 | 79 | |||
528 | 80 | void init_titlebar( | ||
529 | 81 | std::shared_ptr<scene::Session> const& session, | ||
530 | 82 | std::shared_ptr<scene::Surface> const& surface); | ||
531 | 83 | |||
532 | 84 | void paint_titlebar(int intensity); | ||
533 | 85 | |||
534 | 86 | private: | ||
535 | 87 | |||
536 | 88 | struct StreamPainter; | ||
537 | 89 | struct AllocatingPainter; | ||
538 | 90 | |||
539 | 91 | std::shared_ptr <StreamPainter> stream_painter; | ||
540 | 92 | }; | ||
541 | 93 | |||
542 | 94 | struct SessionInfo | ||
543 | 95 | { | ||
544 | 96 | std::vector<std::weak_ptr<scene::Surface>> surfaces; | ||
545 | 97 | |||
546 | 98 | // This is only used by the TilingWindowManagerPolicy, | ||
547 | 99 | // perhaps we need a more extensible mechanism. (std::experimental::any?) | ||
548 | 100 | geometry::Rectangle tile; | ||
549 | 101 | }; | ||
550 | 102 | } | ||
551 | 103 | } | ||
552 | 104 | |||
553 | 105 | #endif //MIR_SERVER_EXAMPLE_WINDOW_MANAGEMENT_INFO_H | ||
554 | 106 | 0 | ||
555 | === modified file 'include/server/mir/shell/abstract_shell.h' | |||
556 | --- include/server/mir/shell/abstract_shell.h 2017-03-09 17:42:58 +0000 | |||
557 | +++ include/server/mir/shell/abstract_shell.h 2017-04-04 10:15:32 +0000 | |||
558 | @@ -87,6 +87,11 @@ | |||
559 | 87 | std::shared_ptr<scene::Surface> const& surface, | 87 | std::shared_ptr<scene::Surface> const& surface, |
560 | 88 | uint64_t timestamp) override; | 88 | uint64_t timestamp) override; |
561 | 89 | 89 | ||
562 | 90 | void request_move( | ||
563 | 91 | std::shared_ptr<scene::Session> const& session, | ||
564 | 92 | std::shared_ptr<scene::Surface> const& surface, | ||
565 | 93 | uint64_t timestamp) override; | ||
566 | 94 | |||
567 | 90 | std::shared_ptr<scene::PromptSession> start_prompt_session_for( | 95 | std::shared_ptr<scene::PromptSession> start_prompt_session_for( |
568 | 91 | std::shared_ptr<scene::Session> const& session, | 96 | std::shared_ptr<scene::Session> const& session, |
569 | 92 | scene::PromptSessionCreationParameters const& params) override; | 97 | scene::PromptSessionCreationParameters const& params) override; |
570 | 93 | 98 | ||
571 | === renamed file 'src/include/server/mir/shell/basic_window_manager.h' => 'include/server/mir/shell/basic_window_manager.h' | |||
572 | --- src/include/server/mir/shell/basic_window_manager.h 2017-03-09 17:49:01 +0000 | |||
573 | +++ include/server/mir/shell/basic_window_manager.h 2017-04-04 10:15:32 +0000 | |||
574 | @@ -130,6 +130,8 @@ | |||
575 | 130 | shell::FocusController* focus_controller, | 130 | shell::FocusController* focus_controller, |
576 | 131 | std::unique_ptr<WindowManagementPolicy> policy); | 131 | std::unique_ptr<WindowManagementPolicy> policy); |
577 | 132 | 132 | ||
578 | 133 | ~BasicWindowManager(); | ||
579 | 134 | |||
580 | 133 | public: | 135 | public: |
581 | 134 | using typename WindowManagerTools::SurfaceInfoMap; | 136 | using typename WindowManagerTools::SurfaceInfoMap; |
582 | 135 | using typename WindowManagerTools::SessionInfoMap; | 137 | using typename WindowManagerTools::SessionInfoMap; |
583 | @@ -175,6 +177,11 @@ | |||
584 | 175 | std::shared_ptr<scene::Surface> const& surface, | 177 | std::shared_ptr<scene::Surface> const& surface, |
585 | 176 | uint64_t timestamp) override; | 178 | uint64_t timestamp) override; |
586 | 177 | 179 | ||
587 | 180 | void handle_request_move( | ||
588 | 181 | std::shared_ptr<scene::Session> const& session, | ||
589 | 182 | std::shared_ptr<scene::Surface> const& surface, | ||
590 | 183 | uint64_t timestamp) override; | ||
591 | 184 | |||
592 | 178 | int set_surface_attribute( | 185 | int set_surface_attribute( |
593 | 179 | std::shared_ptr<scene::Session> const& /*session*/, | 186 | std::shared_ptr<scene::Session> const& /*session*/, |
594 | 180 | std::shared_ptr<scene::Surface> const& surface, | 187 | std::shared_ptr<scene::Surface> const& surface, |
595 | @@ -217,12 +224,16 @@ | |||
596 | 217 | geometry::Rectangles displays; | 224 | geometry::Rectangles displays; |
597 | 218 | geometry::Point cursor; | 225 | geometry::Point cursor; |
598 | 219 | uint64_t last_input_event_timestamp{0}; | 226 | uint64_t last_input_event_timestamp{0}; |
599 | 227 | MirEvent const* last_input_event{nullptr}; | ||
600 | 220 | 228 | ||
601 | 221 | void update_event_timestamp(MirKeyboardEvent const* kev); | 229 | void update_event_timestamp(MirKeyboardEvent const* kev); |
602 | 222 | void update_event_timestamp(MirPointerEvent const* pev); | 230 | void update_event_timestamp(MirPointerEvent const* pev); |
603 | 223 | void update_event_timestamp(MirTouchEvent const* tev); | 231 | void update_event_timestamp(MirTouchEvent const* tev); |
605 | 224 | }; | 232 | void update_event_timestamp(MirInputEvent const* iev); |
606 | 233 | } __attribute__((deprecated("Use libmiral instead"))); | ||
607 | 225 | 234 | ||
608 | 235 | #pragma GCC diagnostic push | ||
609 | 236 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||
610 | 226 | /// A policy based window manager. This exists to initialize BasicWindowManager and | 237 | /// A policy based window manager. This exists to initialize BasicWindowManager and |
611 | 227 | /// the WMPolicy (in an awkward manner). | 238 | /// the WMPolicy (in an awkward manner). |
612 | 228 | /// TODO revisit this initialization sequence. | 239 | /// TODO revisit this initialization sequence. |
613 | @@ -249,7 +260,8 @@ | |||
614 | 249 | return std::unique_ptr<WMPolicy>( | 260 | return std::unique_ptr<WMPolicy>( |
615 | 250 | new WMPolicy(this, std::forward<PolicyArgs>(policy_args)...)); | 261 | new WMPolicy(this, std::forward<PolicyArgs>(policy_args)...)); |
616 | 251 | } | 262 | } |
618 | 252 | }; | 263 | } __attribute__((deprecated("Use libmiral instead"))); |
619 | 264 | #pragma GCC diagnostic pop | ||
620 | 253 | } | 265 | } |
621 | 254 | } | 266 | } |
622 | 255 | 267 | ||
623 | 256 | 268 | ||
624 | === renamed file 'src/include/server/mir/shell/canonical_window_manager.h' => 'include/server/mir/shell/canonical_window_manager.h' | |||
625 | --- src/include/server/mir/shell/canonical_window_manager.h 2017-03-08 16:16:44 +0000 | |||
626 | +++ include/server/mir/shell/canonical_window_manager.h 2017-04-04 10:15:32 +0000 | |||
627 | @@ -19,7 +19,7 @@ | |||
628 | 19 | #ifndef MIR_SHELL_CANONICAL_WINDOW_MANAGER_H_ | 19 | #ifndef MIR_SHELL_CANONICAL_WINDOW_MANAGER_H_ |
629 | 20 | #define MIR_SHELL_CANONICAL_WINDOW_MANAGER_H_ | 20 | #define MIR_SHELL_CANONICAL_WINDOW_MANAGER_H_ |
630 | 21 | 21 | ||
632 | 22 | #include "basic_window_manager.h" | 22 | #include "mir/shell/basic_window_manager.h" |
633 | 23 | 23 | ||
634 | 24 | #include "mir/geometry/displacement.h" | 24 | #include "mir/geometry/displacement.h" |
635 | 25 | 25 | ||
636 | @@ -122,7 +122,11 @@ | |||
637 | 122 | std::weak_ptr<scene::Surface> active_surface_; | 122 | std::weak_ptr<scene::Surface> active_surface_; |
638 | 123 | }; | 123 | }; |
639 | 124 | 124 | ||
640 | 125 | |||
641 | 126 | #pragma GCC diagnostic push | ||
642 | 127 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||
643 | 125 | using CanonicalWindowManager = WindowManagerConstructor<CanonicalWindowManagerPolicy>; | 128 | using CanonicalWindowManager = WindowManagerConstructor<CanonicalWindowManagerPolicy>; |
644 | 129 | #pragma GCC diagnostic pop | ||
645 | 126 | } | 130 | } |
646 | 127 | } | 131 | } |
647 | 128 | 132 | ||
648 | 129 | 133 | ||
649 | === modified file 'include/server/mir/shell/shell.h' | |||
650 | --- include/server/mir/shell/shell.h 2017-03-08 12:34:11 +0000 | |||
651 | +++ include/server/mir/shell/shell.h 2017-04-04 10:15:32 +0000 | |||
652 | @@ -104,6 +104,11 @@ | |||
653 | 104 | std::shared_ptr<scene::Session> const& session, | 104 | std::shared_ptr<scene::Session> const& session, |
654 | 105 | std::shared_ptr<scene::Surface> const& surface, | 105 | std::shared_ptr<scene::Surface> const& surface, |
655 | 106 | uint64_t timestamp) = 0; | 106 | uint64_t timestamp) = 0; |
656 | 107 | |||
657 | 108 | virtual void request_move( | ||
658 | 109 | std::shared_ptr<scene::Session> const& session, | ||
659 | 110 | std::shared_ptr<scene::Surface> const& surface, | ||
660 | 111 | uint64_t timestamp) = 0; | ||
661 | 107 | /** @} */ | 112 | /** @} */ |
662 | 108 | }; | 113 | }; |
663 | 109 | } | 114 | } |
664 | 110 | 115 | ||
665 | === modified file 'include/server/mir/shell/shell_wrapper.h' | |||
666 | --- include/server/mir/shell/shell_wrapper.h 2017-03-09 17:42:58 +0000 | |||
667 | +++ include/server/mir/shell/shell_wrapper.h 2017-04-04 10:15:32 +0000 | |||
668 | @@ -90,6 +90,11 @@ | |||
669 | 90 | std::shared_ptr<scene::Surface> const& surface, | 90 | std::shared_ptr<scene::Surface> const& surface, |
670 | 91 | uint64_t timestamp) override; | 91 | uint64_t timestamp) override; |
671 | 92 | 92 | ||
672 | 93 | void request_move( | ||
673 | 94 | std::shared_ptr<scene::Session> const& session, | ||
674 | 95 | std::shared_ptr<scene::Surface> const& surface, | ||
675 | 96 | uint64_t timestamp) override; | ||
676 | 97 | |||
677 | 93 | void add_display(geometry::Rectangle const& area) override; | 98 | void add_display(geometry::Rectangle const& area) override; |
678 | 94 | void remove_display(geometry::Rectangle const& area) override; | 99 | void remove_display(geometry::Rectangle const& area) override; |
679 | 95 | 100 | ||
680 | 96 | 101 | ||
681 | === modified file 'include/server/mir/shell/system_compositor_window_manager.h' | |||
682 | --- include/server/mir/shell/system_compositor_window_manager.h 2017-03-08 12:59:36 +0000 | |||
683 | +++ include/server/mir/shell/system_compositor_window_manager.h 2017-04-04 10:15:32 +0000 | |||
684 | @@ -100,6 +100,11 @@ | |||
685 | 100 | std::shared_ptr<scene::Surface> const& surface, | 100 | std::shared_ptr<scene::Surface> const& surface, |
686 | 101 | uint64_t timestamp) override; | 101 | uint64_t timestamp) override; |
687 | 102 | 102 | ||
688 | 103 | void handle_request_move( | ||
689 | 104 | std::shared_ptr<scene::Session> const& session, | ||
690 | 105 | std::shared_ptr<scene::Surface> const& surface, | ||
691 | 106 | uint64_t timestamp) override; | ||
692 | 107 | |||
693 | 103 | int set_surface_attribute( | 108 | int set_surface_attribute( |
694 | 104 | std::shared_ptr<scene::Session> const& session, | 109 | std::shared_ptr<scene::Session> const& session, |
695 | 105 | std::shared_ptr<scene::Surface> const& surface, | 110 | std::shared_ptr<scene::Surface> const& surface, |
696 | 106 | 111 | ||
697 | === renamed file 'src/include/server/mir/shell/window_management_info.h' => 'include/server/mir/shell/window_management_info.h' | |||
698 | --- src/include/server/mir/shell/window_management_info.h 2017-01-18 02:29:37 +0000 | |||
699 | +++ include/server/mir/shell/window_management_info.h 2017-04-04 10:15:32 +0000 | |||
700 | @@ -27,7 +27,7 @@ | |||
701 | 27 | 27 | ||
702 | 28 | namespace mir | 28 | namespace mir |
703 | 29 | { | 29 | { |
705 | 30 | namespace scene { class Session; class Surface; class SurfaceCreationParameters; } | 30 | namespace scene { class Session; class Surface; struct SurfaceCreationParameters; } |
706 | 31 | namespace shell | 31 | namespace shell |
707 | 32 | { | 32 | { |
708 | 33 | struct SurfaceInfo | 33 | struct SurfaceInfo |
709 | @@ -65,6 +65,7 @@ | |||
710 | 65 | std::vector <std::weak_ptr<scene::Surface>> children; | 65 | std::vector <std::weak_ptr<scene::Surface>> children; |
711 | 66 | std::shared_ptr <scene::Surface> titlebar; | 66 | std::shared_ptr <scene::Surface> titlebar; |
712 | 67 | frontend::SurfaceId titlebar_id; | 67 | frontend::SurfaceId titlebar_id; |
713 | 68 | frontend::BufferStreamId titlebar_stream_id; | ||
714 | 68 | bool is_titlebar = false; | 69 | bool is_titlebar = false; |
715 | 69 | geometry::Width min_width; | 70 | geometry::Width min_width; |
716 | 70 | geometry::Height min_height; | 71 | geometry::Height min_height; |
717 | @@ -77,8 +78,7 @@ | |||
718 | 77 | mir::optional_value<graphics::DisplayConfigurationOutputId> output_id; | 78 | mir::optional_value<graphics::DisplayConfigurationOutputId> output_id; |
719 | 78 | mir::optional_value<MirPointerConfinementState> confine_pointer; | 79 | mir::optional_value<MirPointerConfinementState> confine_pointer; |
720 | 79 | 80 | ||
723 | 80 | void init_titlebar(std::shared_ptr <scene::Surface> const& surface); | 81 | void init_titlebar(std::shared_ptr<scene::Session> const& session, std::shared_ptr<scene::Surface> const& surface); |
722 | 81 | |||
724 | 82 | void paint_titlebar(int intensity); | 82 | void paint_titlebar(int intensity); |
725 | 83 | 83 | ||
726 | 84 | private: | 84 | private: |
727 | 85 | 85 | ||
728 | === modified file 'include/server/mir/shell/window_manager.h' | |||
729 | --- include/server/mir/shell/window_manager.h 2017-03-08 12:59:36 +0000 | |||
730 | +++ include/server/mir/shell/window_manager.h 2017-04-04 10:15:32 +0000 | |||
731 | @@ -81,6 +81,11 @@ | |||
732 | 81 | std::shared_ptr<scene::Surface> const& surface, | 81 | std::shared_ptr<scene::Surface> const& surface, |
733 | 82 | uint64_t timestamp) = 0; | 82 | uint64_t timestamp) = 0; |
734 | 83 | 83 | ||
735 | 84 | virtual void handle_request_move( | ||
736 | 85 | std::shared_ptr<scene::Session> const& session, | ||
737 | 86 | std::shared_ptr<scene::Surface> const& surface, | ||
738 | 87 | uint64_t timestamp) = 0; | ||
739 | 88 | |||
740 | 84 | virtual ~WindowManager() = default; | 89 | virtual ~WindowManager() = default; |
741 | 85 | WindowManager() = default; | 90 | WindowManager() = default; |
742 | 86 | WindowManager(WindowManager const&) = delete; | 91 | WindowManager(WindowManager const&) = delete; |
743 | 87 | 92 | ||
744 | === modified file 'include/test/mir/test/doubles/mock_window_manager.h' | |||
745 | --- include/test/mir/test/doubles/mock_window_manager.h 2017-03-08 12:59:36 +0000 | |||
746 | +++ include/test/mir/test/doubles/mock_window_manager.h 2017-04-04 10:15:32 +0000 | |||
747 | @@ -59,6 +59,7 @@ | |||
748 | 59 | 59 | ||
749 | 60 | MOCK_METHOD3(handle_raise_surface, void(std::shared_ptr<scene::Session> const&, std::shared_ptr<scene::Surface> const&, uint64_t)); | 60 | MOCK_METHOD3(handle_raise_surface, void(std::shared_ptr<scene::Session> const&, std::shared_ptr<scene::Surface> const&, uint64_t)); |
750 | 61 | MOCK_METHOD3(handle_request_drag_and_drop, void(std::shared_ptr<scene::Session> const&, std::shared_ptr<scene::Surface> const&, uint64_t)); | 61 | MOCK_METHOD3(handle_request_drag_and_drop, void(std::shared_ptr<scene::Session> const&, std::shared_ptr<scene::Surface> const&, uint64_t)); |
751 | 62 | MOCK_METHOD3(handle_request_move, void(std::shared_ptr<scene::Session> const&, std::shared_ptr<scene::Surface> const&, uint64_t)); | ||
752 | 62 | 63 | ||
753 | 63 | MOCK_METHOD4(set_surface_attribute, | 64 | MOCK_METHOD4(set_surface_attribute, |
754 | 64 | int(std::shared_ptr<scene::Session> const& session, | 65 | int(std::shared_ptr<scene::Session> const& session, |
755 | 65 | 66 | ||
756 | === modified file 'src/include/server/mir/frontend/shell.h' | |||
757 | --- src/include/server/mir/frontend/shell.h 2017-03-08 12:34:11 +0000 | |||
758 | +++ src/include/server/mir/frontend/shell.h 2017-04-04 10:15:32 +0000 | |||
759 | @@ -82,15 +82,17 @@ | |||
760 | 82 | SurfaceId surface_id, | 82 | SurfaceId surface_id, |
761 | 83 | MirWindowAttrib attrib) = 0; | 83 | MirWindowAttrib attrib) = 0; |
762 | 84 | 84 | ||
767 | 85 | virtual void raise_surface( | 85 | enum class UserRequest |
768 | 86 | std::shared_ptr<Session> const& session, | 86 | { |
769 | 87 | SurfaceId surface_id, | 87 | drag_and_drop, |
770 | 88 | uint64_t timestamp) = 0; | 88 | move, |
771 | 89 | activate, | ||
772 | 90 | }; | ||
773 | 89 | 91 | ||
775 | 90 | virtual void request_drag_and_drop( | 92 | virtual void request_operation( |
776 | 91 | std::shared_ptr<Session> const& session, | 93 | std::shared_ptr<Session> const& session, |
779 | 92 | SurfaceId surface_id, | 94 | SurfaceId surface_id, uint64_t timestamp, |
780 | 93 | uint64_t timestamp) = 0; | 95 | UserRequest request) = 0; |
781 | 94 | 96 | ||
782 | 95 | protected: | 97 | protected: |
783 | 96 | Shell() = default; | 98 | Shell() = default; |
784 | 97 | 99 | ||
785 | === modified file 'src/server/CMakeLists.txt' | |||
786 | --- src/server/CMakeLists.txt 2017-03-14 05:30:56 +0000 | |||
787 | +++ src/server/CMakeLists.txt 2017-04-04 10:15:32 +0000 | |||
788 | @@ -11,6 +11,7 @@ | |||
789 | 11 | ${PROJECT_SOURCE_DIR}/include/server | 11 | ${PROJECT_SOURCE_DIR}/include/server |
790 | 12 | ${PROJECT_SOURCE_DIR}/include/renderer | 12 | ${PROJECT_SOURCE_DIR}/include/renderer |
791 | 13 | ${PROJECT_SOURCE_DIR}/include/renderers/gl | 13 | ${PROJECT_SOURCE_DIR}/include/renderers/gl |
792 | 14 | ${PROJECT_SOURCE_DIR}/include/renderers/sw | ||
793 | 14 | ${PROJECT_SOURCE_DIR}/src/include/platform | 15 | ${PROJECT_SOURCE_DIR}/src/include/platform |
794 | 15 | ${PROJECT_SOURCE_DIR}/src/include/client | 16 | ${PROJECT_SOURCE_DIR}/src/include/client |
795 | 16 | ${PROJECT_SOURCE_DIR}/src/include/server | 17 | ${PROJECT_SOURCE_DIR}/src/include/server |
796 | 17 | 18 | ||
797 | === modified file 'src/server/frontend/CMakeLists.txt' | |||
798 | --- src/server/frontend/CMakeLists.txt 2017-02-15 07:38:33 +0000 | |||
799 | +++ src/server/frontend/CMakeLists.txt 2017-04-04 10:15:32 +0000 | |||
800 | @@ -33,6 +33,7 @@ | |||
801 | 33 | screencast_buffer_tracker.cpp | 33 | screencast_buffer_tracker.cpp |
802 | 34 | session_mediator_observer_multiplexer.cpp | 34 | session_mediator_observer_multiplexer.cpp |
803 | 35 | session_mediator_observer_multiplexer.h | 35 | session_mediator_observer_multiplexer.h |
804 | 36 | ${PROJECT_SOURCE_DIR}/src/include/server/mir/frontend/shell.h | ||
805 | 36 | ) | 37 | ) |
806 | 37 | 38 | ||
807 | 38 | add_library( | 39 | add_library( |
808 | 39 | 40 | ||
809 | === modified file 'src/server/frontend/session_mediator.cpp' | |||
810 | --- src/server/frontend/session_mediator.cpp 2017-04-04 07:04:57 +0000 | |||
811 | +++ src/server/frontend/session_mediator.cpp 2017-04-04 10:15:32 +0000 | |||
812 | @@ -1180,11 +1180,24 @@ | |||
813 | 1180 | switch (request->operation()) | 1180 | switch (request->operation()) |
814 | 1181 | { | 1181 | { |
815 | 1182 | case mir::protobuf::RequestOperation::START_DRAG_AND_DROP: | 1182 | case mir::protobuf::RequestOperation::START_DRAG_AND_DROP: |
817 | 1183 | shell->request_drag_and_drop(session, mf::SurfaceId{surface_id.value()}, cookie_ptr->timestamp()); | 1183 | shell->request_operation( |
818 | 1184 | session, mf::SurfaceId{surface_id.value()}, | ||
819 | 1185 | cookie_ptr->timestamp(), | ||
820 | 1186 | Shell::UserRequest::drag_and_drop); | ||
821 | 1184 | break; | 1187 | break; |
822 | 1185 | 1188 | ||
823 | 1186 | case mir::protobuf::RequestOperation::MAKE_ACTIVE: | 1189 | case mir::protobuf::RequestOperation::MAKE_ACTIVE: |
825 | 1187 | shell->raise_surface(session, mf::SurfaceId{surface_id.value()}, cookie_ptr->timestamp()); | 1190 | shell->request_operation( |
826 | 1191 | session, mf::SurfaceId{surface_id.value()}, | ||
827 | 1192 | cookie_ptr->timestamp(), | ||
828 | 1193 | Shell::UserRequest::activate); | ||
829 | 1194 | break; | ||
830 | 1195 | |||
831 | 1196 | case mir::protobuf::RequestOperation::USER_MOVE: | ||
832 | 1197 | shell->request_operation( | ||
833 | 1198 | session, mf::SurfaceId{surface_id.value()}, | ||
834 | 1199 | cookie_ptr->timestamp(), | ||
835 | 1200 | Shell::UserRequest::move); | ||
836 | 1188 | break; | 1201 | break; |
837 | 1189 | 1202 | ||
838 | 1190 | default: | 1203 | default: |
839 | 1191 | 1204 | ||
840 | === modified file 'src/server/frontend/shell_wrapper.cpp' | |||
841 | --- src/server/frontend/shell_wrapper.cpp 2017-03-08 12:34:11 +0000 | |||
842 | +++ src/server/frontend/shell_wrapper.cpp 2017-04-04 10:15:32 +0000 | |||
843 | @@ -99,18 +99,8 @@ | |||
844 | 99 | return wrapped->get_surface_attribute(session, surface_id, attrib); | 99 | return wrapped->get_surface_attribute(session, surface_id, attrib); |
845 | 100 | } | 100 | } |
846 | 101 | 101 | ||
861 | 102 | void mf::ShellWrapper::raise_surface( | 102 | void mf::ShellWrapper::request_operation( |
862 | 103 | std::shared_ptr<Session> const& session, | 103 | std::shared_ptr<Session> const& session, SurfaceId surface_id, uint64_t timestamp, UserRequest request) |
863 | 104 | SurfaceId surface_id, | 104 | { |
864 | 105 | uint64_t timestamp) | 105 | wrapped->request_operation(session, surface_id, timestamp, request); |
851 | 106 | { | ||
852 | 107 | wrapped->raise_surface(session, surface_id, timestamp); | ||
853 | 108 | } | ||
854 | 109 | |||
855 | 110 | void mf::ShellWrapper::request_drag_and_drop( | ||
856 | 111 | std::shared_ptr<Session> const& session, | ||
857 | 112 | SurfaceId surface_id, | ||
858 | 113 | uint64_t timestamp) | ||
859 | 114 | { | ||
860 | 115 | wrapped->request_drag_and_drop(session, surface_id, timestamp); | ||
865 | 116 | } | 106 | } |
866 | 117 | 107 | ||
867 | === modified file 'src/server/frontend/shell_wrapper.h' | |||
868 | --- src/server/frontend/shell_wrapper.h 2017-03-08 12:34:11 +0000 | |||
869 | +++ src/server/frontend/shell_wrapper.h 2017-04-04 10:15:32 +0000 | |||
870 | @@ -75,15 +75,11 @@ | |||
871 | 75 | SurfaceId surface_id, | 75 | SurfaceId surface_id, |
872 | 76 | MirWindowAttrib attrib) override; | 76 | MirWindowAttrib attrib) override; |
873 | 77 | 77 | ||
883 | 78 | void raise_surface( | 78 | void request_operation( |
884 | 79 | std::shared_ptr<Session> const& session, | 79 | std::shared_ptr<Session> const& session, |
885 | 80 | SurfaceId surface_id, | 80 | SurfaceId surface_id, |
886 | 81 | uint64_t timestamp) override; | 81 | uint64_t timestamp, |
887 | 82 | 82 | UserRequest request) override; | |
879 | 83 | void request_drag_and_drop( | ||
880 | 84 | std::shared_ptr<Session> const& session, | ||
881 | 85 | SurfaceId surface_id, | ||
882 | 86 | uint64_t timestamp) override; | ||
888 | 87 | 83 | ||
889 | 88 | protected: | 84 | protected: |
890 | 89 | std::shared_ptr<Shell> const wrapped; | 85 | std::shared_ptr<Shell> const wrapped; |
891 | 90 | 86 | ||
892 | === modified file 'src/server/shell/CMakeLists.txt' | |||
893 | --- src/server/shell/CMakeLists.txt 2017-01-18 02:29:37 +0000 | |||
894 | +++ src/server/shell/CMakeLists.txt 2017-04-04 10:15:32 +0000 | |||
895 | @@ -2,8 +2,8 @@ | |||
896 | 2 | SHELL_SOURCES | 2 | SHELL_SOURCES |
897 | 3 | 3 | ||
898 | 4 | abstract_shell.cpp | 4 | abstract_shell.cpp |
901 | 5 | basic_window_manager.cpp ${CMAKE_SOURCE_DIR}/src/include/server/mir/shell/basic_window_manager.h | 5 | basic_window_manager.cpp ${CMAKE_SOURCE_DIR}/include/server/mir/shell/basic_window_manager.h |
902 | 6 | canonical_window_manager.cpp ${CMAKE_SOURCE_DIR}/src/include/server/mir/shell/canonical_window_manager.h | 6 | canonical_window_manager.cpp ${CMAKE_SOURCE_DIR}/include/server/mir/shell/canonical_window_manager.h |
903 | 7 | frontend_shell.cpp | 7 | frontend_shell.cpp |
904 | 8 | graphics_display_layout.cpp | 8 | graphics_display_layout.cpp |
905 | 9 | graphics_display_layout.h | 9 | graphics_display_layout.h |
906 | @@ -17,7 +17,7 @@ | |||
907 | 17 | ${CMAKE_SOURCE_DIR}/include/server/mir/shell/display_configuration_controller.h | 17 | ${CMAKE_SOURCE_DIR}/include/server/mir/shell/display_configuration_controller.h |
908 | 18 | surface_specification.cpp | 18 | surface_specification.cpp |
909 | 19 | surface_stack_wrapper.cpp ${CMAKE_SOURCE_DIR}/include/server/mir/shell/surface_stack_wrapper.h | 19 | surface_stack_wrapper.cpp ${CMAKE_SOURCE_DIR}/include/server/mir/shell/surface_stack_wrapper.h |
911 | 20 | window_management_info.cpp ${CMAKE_SOURCE_DIR}/src/include/server/mir/shell/window_management_info.h | 20 | window_management_info.cpp ${CMAKE_SOURCE_DIR}/include/server/mir/shell/window_management_info.h |
912 | 21 | ) | 21 | ) |
913 | 22 | 22 | ||
914 | 23 | add_library( | 23 | add_library( |
915 | 24 | 24 | ||
916 | === modified file 'src/server/shell/abstract_shell.cpp' | |||
917 | --- src/server/shell/abstract_shell.cpp 2017-03-28 18:02:49 +0000 | |||
918 | +++ src/server/shell/abstract_shell.cpp 2017-04-04 10:15:32 +0000 | |||
919 | @@ -266,6 +266,14 @@ | |||
920 | 266 | window_manager->handle_request_drag_and_drop(session, surface, timestamp); | 266 | window_manager->handle_request_drag_and_drop(session, surface, timestamp); |
921 | 267 | } | 267 | } |
922 | 268 | 268 | ||
923 | 269 | void msh::AbstractShell::request_move( | ||
924 | 270 | std::shared_ptr<scene::Session> const& session, | ||
925 | 271 | std::shared_ptr<scene::Surface> const& surface, | ||
926 | 272 | uint64_t timestamp) | ||
927 | 273 | { | ||
928 | 274 | window_manager->handle_request_move(session, surface, timestamp); | ||
929 | 275 | } | ||
930 | 276 | |||
931 | 269 | void msh::AbstractShell::focus_next_session() | 277 | void msh::AbstractShell::focus_next_session() |
932 | 270 | { | 278 | { |
933 | 271 | std::unique_lock<std::mutex> lock(focus_mutex); | 279 | std::unique_lock<std::mutex> lock(focus_mutex); |
934 | 272 | 280 | ||
935 | === modified file 'src/server/shell/basic_window_manager.cpp' | |||
936 | --- src/server/shell/basic_window_manager.cpp 2017-03-09 17:49:01 +0000 | |||
937 | +++ src/server/shell/basic_window_manager.cpp 2017-04-04 10:15:32 +0000 | |||
938 | @@ -32,6 +32,12 @@ | |||
939 | 32 | { | 32 | { |
940 | 33 | } | 33 | } |
941 | 34 | 34 | ||
942 | 35 | msh::BasicWindowManager::~BasicWindowManager() | ||
943 | 36 | { | ||
944 | 37 | if (last_input_event) | ||
945 | 38 | mir_event_unref(last_input_event); | ||
946 | 39 | } | ||
947 | 40 | |||
948 | 35 | void msh::BasicWindowManager::add_session(std::shared_ptr<scene::Session> const& session) | 41 | void msh::BasicWindowManager::add_session(std::shared_ptr<scene::Session> const& session) |
949 | 36 | { | 42 | { |
950 | 37 | std::lock_guard<decltype(mutex)> lock(mutex); | 43 | std::lock_guard<decltype(mutex)> lock(mutex); |
951 | @@ -145,6 +151,21 @@ | |||
952 | 145 | policy->handle_request_drag_and_drop(session, surface); | 151 | policy->handle_request_drag_and_drop(session, surface); |
953 | 146 | } | 152 | } |
954 | 147 | 153 | ||
955 | 154 | void msh::BasicWindowManager::handle_request_move( | ||
956 | 155 | std::shared_ptr<scene::Session> const& session, | ||
957 | 156 | std::shared_ptr<scene::Surface> const& surface, | ||
958 | 157 | uint64_t timestamp) | ||
959 | 158 | { | ||
960 | 159 | std::lock_guard<decltype(mutex)> lock(mutex); | ||
961 | 160 | if (timestamp >= last_input_event_timestamp) | ||
962 | 161 | { | ||
963 | 162 | // When we reintegrate with miral::BasicWindowManager this is where we | ||
964 | 163 | // will ask the policy to to handle the move. | ||
965 | 164 | (void)session; | ||
966 | 165 | (void)surface; | ||
967 | 166 | } | ||
968 | 167 | } | ||
969 | 168 | |||
970 | 148 | int msh::BasicWindowManager::set_surface_attribute( | 169 | int msh::BasicWindowManager::set_surface_attribute( |
971 | 149 | std::shared_ptr<scene::Session> const& /*session*/, | 170 | std::shared_ptr<scene::Session> const& /*session*/, |
972 | 150 | std::shared_ptr<scene::Surface> const& surface, | 171 | std::shared_ptr<scene::Surface> const& surface, |
973 | @@ -288,25 +309,22 @@ | |||
974 | 288 | 309 | ||
975 | 289 | void msh::BasicWindowManager::update_event_timestamp(MirKeyboardEvent const* kev) | 310 | void msh::BasicWindowManager::update_event_timestamp(MirKeyboardEvent const* kev) |
976 | 290 | { | 311 | { |
979 | 291 | auto iev = mir_keyboard_event_input_event(kev); | 312 | update_event_timestamp(mir_keyboard_event_input_event(kev)); |
978 | 292 | last_input_event_timestamp = mir_input_event_get_event_time(iev); | ||
980 | 293 | } | 313 | } |
981 | 294 | 314 | ||
982 | 295 | void msh::BasicWindowManager::update_event_timestamp(MirPointerEvent const* pev) | 315 | void msh::BasicWindowManager::update_event_timestamp(MirPointerEvent const* pev) |
983 | 296 | { | 316 | { |
984 | 297 | auto iev = mir_pointer_event_input_event(pev); | ||
985 | 298 | auto pointer_action = mir_pointer_event_action(pev); | 317 | auto pointer_action = mir_pointer_event_action(pev); |
986 | 299 | 318 | ||
987 | 300 | if (pointer_action == mir_pointer_action_button_up || | 319 | if (pointer_action == mir_pointer_action_button_up || |
988 | 301 | pointer_action == mir_pointer_action_button_down) | 320 | pointer_action == mir_pointer_action_button_down) |
989 | 302 | { | 321 | { |
991 | 303 | last_input_event_timestamp = mir_input_event_get_event_time(iev); | 322 | update_event_timestamp(mir_pointer_event_input_event(pev)); |
992 | 304 | } | 323 | } |
993 | 305 | } | 324 | } |
994 | 306 | 325 | ||
995 | 307 | void msh::BasicWindowManager::update_event_timestamp(MirTouchEvent const* tev) | 326 | void msh::BasicWindowManager::update_event_timestamp(MirTouchEvent const* tev) |
996 | 308 | { | 327 | { |
997 | 309 | auto iev = mir_touch_event_input_event(tev); | ||
998 | 310 | auto touch_count = mir_touch_event_point_count(tev); | 328 | auto touch_count = mir_touch_event_point_count(tev); |
999 | 311 | for (unsigned i = 0; i < touch_count; i++) | 329 | for (unsigned i = 0; i < touch_count; i++) |
1000 | 312 | { | 330 | { |
1001 | @@ -314,12 +332,20 @@ | |||
1002 | 314 | if (touch_action == mir_touch_action_up || | 332 | if (touch_action == mir_touch_action_up || |
1003 | 315 | touch_action == mir_touch_action_down) | 333 | touch_action == mir_touch_action_down) |
1004 | 316 | { | 334 | { |
1006 | 317 | last_input_event_timestamp = mir_input_event_get_event_time(iev); | 335 | update_event_timestamp(mir_touch_event_input_event(tev)); |
1007 | 318 | break; | 336 | break; |
1008 | 319 | } | 337 | } |
1009 | 320 | } | 338 | } |
1010 | 321 | } | 339 | } |
1011 | 322 | 340 | ||
1012 | 341 | void msh::BasicWindowManager::update_event_timestamp(MirInputEvent const* iev) | ||
1013 | 342 | { | ||
1014 | 343 | last_input_event_timestamp = mir_input_event_get_event_time(iev); | ||
1015 | 344 | if (last_input_event) | ||
1016 | 345 | mir_event_unref(last_input_event); | ||
1017 | 346 | last_input_event = mir_event_ref(mir_input_event_get_event(iev)); | ||
1018 | 347 | } | ||
1019 | 348 | |||
1020 | 323 | void mir::shell::BasicWindowManager::set_drag_and_drop_handle(std::vector<uint8_t> const& handle) | 349 | void mir::shell::BasicWindowManager::set_drag_and_drop_handle(std::vector<uint8_t> const& handle) |
1021 | 324 | { | 350 | { |
1022 | 325 | focus_controller->set_drag_and_drop_handle(handle); | 351 | focus_controller->set_drag_and_drop_handle(handle); |
1023 | 326 | 352 | ||
1024 | === modified file 'src/server/shell/frontend_shell.cpp' | |||
1025 | --- src/server/shell/frontend_shell.cpp 2017-03-08 12:34:11 +0000 | |||
1026 | +++ src/server/shell/frontend_shell.cpp 2017-04-04 10:15:32 +0000 | |||
1027 | @@ -148,22 +148,34 @@ | |||
1028 | 148 | return wrapped->get_surface_attribute(surface, attrib); | 148 | return wrapped->get_surface_attribute(surface, attrib); |
1029 | 149 | } | 149 | } |
1030 | 150 | 150 | ||
1049 | 151 | void msh::FrontendShell::raise_surface( | 151 | void msh::FrontendShell::request_operation( |
1050 | 152 | std::shared_ptr<mf::Session> const& session, | 152 | std::shared_ptr<mf::Session> const& session, |
1051 | 153 | mf::SurfaceId surface_id, | 153 | mf::SurfaceId surface_id, |
1052 | 154 | uint64_t timestamp) | 154 | uint64_t timestamp, |
1053 | 155 | { | 155 | UserRequest request) |
1054 | 156 | auto const scene_session = std::dynamic_pointer_cast<ms::Session>(session); | 156 | { |
1055 | 157 | auto const surface = scene_session->surface(surface_id); | 157 | auto const scene_session = std::dynamic_pointer_cast<ms::Session>(session); |
1056 | 158 | wrapped->raise_surface(scene_session, surface, timestamp); | 158 | auto const surface = scene_session->surface(surface_id); |
1057 | 159 | } | 159 | |
1058 | 160 | 160 | switch (request) | |
1059 | 161 | void msh::FrontendShell::request_drag_and_drop( | 161 | { |
1060 | 162 | std::shared_ptr<mf::Session> const& session, | 162 | case UserRequest::activate: |
1061 | 163 | mf::SurfaceId surface_id, | 163 | { |
1062 | 164 | uint64_t timestamp) | 164 | auto const scene_session = std::dynamic_pointer_cast<ms::Session>(session); |
1063 | 165 | { | 165 | auto const surface = scene_session->surface(surface_id); |
1064 | 166 | auto const scene_session = std::dynamic_pointer_cast<ms::Session>(session); | 166 | wrapped->raise_surface(scene_session, surface, timestamp); |
1065 | 167 | auto const surface = scene_session->surface(surface_id); | 167 | break; |
1066 | 168 | wrapped->request_drag_and_drop(scene_session, surface, timestamp); | 168 | } |
1067 | 169 | |||
1068 | 170 | case UserRequest::drag_and_drop: | ||
1069 | 171 | wrapped->request_drag_and_drop(scene_session, surface, timestamp); | ||
1070 | 172 | break; | ||
1071 | 173 | |||
1072 | 174 | case UserRequest::move: | ||
1073 | 175 | wrapped->request_move(scene_session, surface, timestamp); | ||
1074 | 176 | break; | ||
1075 | 177 | |||
1076 | 178 | default: | ||
1077 | 179 | break; | ||
1078 | 180 | } | ||
1079 | 169 | } | 181 | } |
1080 | 170 | 182 | ||
1081 | === modified file 'src/server/shell/frontend_shell.h' | |||
1082 | --- src/server/shell/frontend_shell.h 2017-03-08 12:34:11 +0000 | |||
1083 | +++ src/server/shell/frontend_shell.h 2017-04-04 10:15:32 +0000 | |||
1084 | @@ -87,15 +87,11 @@ | |||
1085 | 87 | mf::SurfaceId surface_id, | 87 | mf::SurfaceId surface_id, |
1086 | 88 | MirWindowAttrib attrib) override; | 88 | MirWindowAttrib attrib) override; |
1087 | 89 | 89 | ||
1097 | 90 | void raise_surface( | 90 | void request_operation( |
1098 | 91 | std::shared_ptr<mf::Session> const& session, | 91 | std::shared_ptr<mf::Session> const& session, |
1099 | 92 | mf::SurfaceId surface_id, | 92 | mf::SurfaceId surface_id, |
1100 | 93 | uint64_t timestamp) override; | 93 | uint64_t timestamp, |
1101 | 94 | 94 | UserRequest request) override; | |
1093 | 95 | void request_drag_and_drop( | ||
1094 | 96 | std::shared_ptr<mf::Session> const& session, | ||
1095 | 97 | mf::SurfaceId surface_id, | ||
1096 | 98 | uint64_t timestamp) override; | ||
1102 | 99 | }; | 95 | }; |
1103 | 100 | } | 96 | } |
1104 | 101 | } | 97 | } |
1105 | 102 | 98 | ||
1106 | === modified file 'src/server/shell/shell_wrapper.cpp' | |||
1107 | --- src/server/shell/shell_wrapper.cpp 2017-03-10 14:27:50 +0000 | |||
1108 | +++ src/server/shell/shell_wrapper.cpp 2017-04-04 10:15:32 +0000 | |||
1109 | @@ -128,6 +128,14 @@ | |||
1110 | 128 | wrapped->request_drag_and_drop(session, surface, timestamp); | 128 | wrapped->request_drag_and_drop(session, surface, timestamp); |
1111 | 129 | } | 129 | } |
1112 | 130 | 130 | ||
1113 | 131 | void msh::ShellWrapper::request_move( | ||
1114 | 132 | std::shared_ptr<ms::Session> const& session, | ||
1115 | 133 | std::shared_ptr<ms::Surface> const& surface, | ||
1116 | 134 | uint64_t timestamp) | ||
1117 | 135 | { | ||
1118 | 136 | wrapped->request_move(session, surface, timestamp); | ||
1119 | 137 | } | ||
1120 | 138 | |||
1121 | 131 | void msh::ShellWrapper::add_display(geometry::Rectangle const& area) | 139 | void msh::ShellWrapper::add_display(geometry::Rectangle const& area) |
1122 | 132 | { | 140 | { |
1123 | 133 | wrapped->add_display(area); | 141 | wrapped->add_display(area); |
1124 | 134 | 142 | ||
1125 | === modified file 'src/server/shell/system_compositor_window_manager.cpp' | |||
1126 | --- src/server/shell/system_compositor_window_manager.cpp 2017-03-08 12:59:36 +0000 | |||
1127 | +++ src/server/shell/system_compositor_window_manager.cpp 2017-04-04 10:15:32 +0000 | |||
1128 | @@ -208,3 +208,10 @@ | |||
1129 | 208 | uint64_t /*timestamp*/) | 208 | uint64_t /*timestamp*/) |
1130 | 209 | { | 209 | { |
1131 | 210 | } | 210 | } |
1132 | 211 | |||
1133 | 212 | void msh::SystemCompositorWindowManager::handle_request_move( | ||
1134 | 213 | std::shared_ptr<ms::Session> const& /*session*/, | ||
1135 | 214 | std::shared_ptr<ms::Surface> const& /*surface*/, | ||
1136 | 215 | uint64_t /*timestamp*/) | ||
1137 | 216 | { | ||
1138 | 217 | } | ||
1139 | 211 | 218 | ||
1140 | === modified file 'src/server/shell/window_management_info.cpp' | |||
1141 | --- src/server/shell/window_management_info.cpp 2017-01-18 02:29:37 +0000 | |||
1142 | +++ src/server/shell/window_management_info.cpp 2017-04-04 10:15:32 +0000 | |||
1143 | @@ -18,13 +18,16 @@ | |||
1144 | 18 | 18 | ||
1145 | 19 | #include "mir/shell/window_management_info.h" | 19 | #include "mir/shell/window_management_info.h" |
1146 | 20 | 20 | ||
1147 | 21 | #include "mir/scene/session.h" | ||
1148 | 21 | #include "mir/scene/surface.h" | 22 | #include "mir/scene/surface.h" |
1149 | 22 | #include "mir/scene/surface_creation_parameters.h" | 23 | #include "mir/scene/surface_creation_parameters.h" |
1150 | 23 | 24 | ||
1151 | 24 | #include "mir/graphics/buffer.h" | 25 | #include "mir/graphics/buffer.h" |
1152 | 26 | #include "mir/renderer/sw/pixel_source.h" | ||
1153 | 25 | 27 | ||
1154 | 26 | #include <atomic> | 28 | #include <atomic> |
1155 | 27 | 29 | ||
1156 | 30 | namespace mrs = mir::renderer::software; | ||
1157 | 28 | namespace msh = mir::shell; | 31 | namespace msh = mir::shell; |
1158 | 29 | namespace ms = mir::scene; | 32 | namespace ms = mir::scene; |
1159 | 30 | namespace mg = mir::graphics; | 33 | namespace mg = mir::graphics; |
1160 | @@ -156,6 +159,75 @@ | |||
1161 | 156 | return true; | 159 | return true; |
1162 | 157 | } | 160 | } |
1163 | 158 | 161 | ||
1164 | 162 | struct msh::SurfaceInfo::StreamPainter | ||
1165 | 163 | { | ||
1166 | 164 | virtual void paint(int) = 0; | ||
1167 | 165 | virtual ~StreamPainter() = default; | ||
1168 | 166 | StreamPainter() = default; | ||
1169 | 167 | StreamPainter(StreamPainter const&) = delete; | ||
1170 | 168 | StreamPainter& operator=(StreamPainter const&) = delete; | ||
1171 | 169 | }; | ||
1172 | 170 | |||
1173 | 171 | struct msh::SurfaceInfo::AllocatingPainter | ||
1174 | 172 | : msh::SurfaceInfo::StreamPainter | ||
1175 | 173 | { | ||
1176 | 174 | AllocatingPainter( | ||
1177 | 175 | std::shared_ptr<frontend::BufferStream> const& buffer_stream, | ||
1178 | 176 | std::shared_ptr<scene::Session> const& session, | ||
1179 | 177 | Size size) : | ||
1180 | 178 | buffer_stream(buffer_stream), | ||
1181 | 179 | session(session), | ||
1182 | 180 | properties({ | ||
1183 | 181 | size, | ||
1184 | 182 | buffer_stream->pixel_format(), | ||
1185 | 183 | mg::BufferUsage::software | ||
1186 | 184 | }), | ||
1187 | 185 | front_buffer(session->create_buffer(properties)), | ||
1188 | 186 | back_buffer(session->create_buffer(properties)) | ||
1189 | 187 | { | ||
1190 | 188 | } | ||
1191 | 189 | |||
1192 | 190 | void paint(int intensity) override | ||
1193 | 191 | { | ||
1194 | 192 | auto buffer = session->get_buffer(back_buffer); | ||
1195 | 193 | |||
1196 | 194 | auto const format = buffer->pixel_format(); | ||
1197 | 195 | auto const sz = buffer->size().height.as_int() * | ||
1198 | 196 | buffer->size().width.as_int() * MIR_BYTES_PER_PIXEL(format); | ||
1199 | 197 | std::vector<unsigned char> pixels(sz, intensity); | ||
1200 | 198 | if (auto pixel_source = dynamic_cast<mrs::PixelSource*>(buffer->native_buffer_base())) | ||
1201 | 199 | pixel_source->write(pixels.data(), sz); | ||
1202 | 200 | buffer_stream->submit_buffer(buffer); | ||
1203 | 201 | |||
1204 | 202 | std::swap(front_buffer, back_buffer); | ||
1205 | 203 | } | ||
1206 | 204 | |||
1207 | 205 | ~AllocatingPainter() | ||
1208 | 206 | { | ||
1209 | 207 | session->destroy_buffer(front_buffer); | ||
1210 | 208 | session->destroy_buffer(back_buffer); | ||
1211 | 209 | } | ||
1212 | 210 | |||
1213 | 211 | std::shared_ptr<frontend::BufferStream> const buffer_stream; | ||
1214 | 212 | std::shared_ptr<scene::Session> const session; | ||
1215 | 213 | mg::BufferProperties properties; | ||
1216 | 214 | mg::BufferID front_buffer; | ||
1217 | 215 | mg::BufferID back_buffer; | ||
1218 | 216 | }; | ||
1219 | 217 | |||
1220 | 218 | void msh::SurfaceInfo::init_titlebar( | ||
1221 | 219 | std::shared_ptr<scene::Session> const& session, | ||
1222 | 220 | std::shared_ptr<scene::Surface> const& surface) | ||
1223 | 221 | { | ||
1224 | 222 | auto stream = surface->primary_buffer_stream(); | ||
1225 | 223 | stream_painter = std::make_shared<AllocatingPainter>(stream, session, surface->size()); | ||
1226 | 224 | } | ||
1227 | 225 | |||
1228 | 226 | void msh::SurfaceInfo::paint_titlebar(int intensity) | ||
1229 | 227 | { | ||
1230 | 228 | stream_painter->paint(intensity); | ||
1231 | 229 | } | ||
1232 | 230 | |||
1233 | 159 | void msh::SurfaceInfo::constrain_resize( | 231 | void msh::SurfaceInfo::constrain_resize( |
1234 | 160 | std::shared_ptr<ms::Surface> const& surface, | 232 | std::shared_ptr<ms::Surface> const& surface, |
1235 | 161 | Point& requested_pos, | 233 | Point& requested_pos, |
1236 | 162 | 234 | ||
1237 | === modified file 'src/server/symbols.map' | |||
1238 | --- src/server/symbols.map 2017-03-21 07:57:17 +0000 | |||
1239 | +++ src/server/symbols.map 2017-04-04 10:15:32 +0000 | |||
1240 | @@ -37,6 +37,7 @@ | |||
1241 | 37 | mir::frontend::BufferStream::operator*; | 37 | mir::frontend::BufferStream::operator*; |
1242 | 38 | mir::frontend::ClientBuffers::?ClientBuffers*; | 38 | mir::frontend::ClientBuffers::?ClientBuffers*; |
1243 | 39 | mir::frontend::ClientBuffers::ClientBuffers*; | 39 | mir::frontend::ClientBuffers::ClientBuffers*; |
1244 | 40 | mir::frontend::ClientBuffers::operator*; | ||
1245 | 40 | mir::frontend::PromptSession::operator*; | 41 | mir::frontend::PromptSession::operator*; |
1246 | 41 | mir::frontend::PromptSession::?PromptSession*; | 42 | mir::frontend::PromptSession::?PromptSession*; |
1247 | 42 | mir::frontend::PromptSession::PromptSession*; | 43 | mir::frontend::PromptSession::PromptSession*; |
1248 | @@ -251,6 +252,7 @@ | |||
1249 | 251 | mir::shell::AbstractShell::AbstractShell*; | 252 | mir::shell::AbstractShell::AbstractShell*; |
1250 | 252 | mir::shell::AbstractShell::add_display*; | 253 | mir::shell::AbstractShell::add_display*; |
1251 | 253 | mir::shell::AbstractShell::add_prompt_provider_for*; | 254 | mir::shell::AbstractShell::add_prompt_provider_for*; |
1252 | 255 | mir::shell::AbstractShell::clear_drag_and_drop_handle*; | ||
1253 | 254 | mir::shell::AbstractShell::close_session*; | 256 | mir::shell::AbstractShell::close_session*; |
1254 | 255 | mir::shell::AbstractShell::create_surface*; | 257 | mir::shell::AbstractShell::create_surface*; |
1255 | 256 | mir::shell::AbstractShell::destroy_surface*; | 258 | mir::shell::AbstractShell::destroy_surface*; |
1256 | @@ -264,12 +266,56 @@ | |||
1257 | 264 | mir::shell::AbstractShell::raise*; | 266 | mir::shell::AbstractShell::raise*; |
1258 | 265 | mir::shell::AbstractShell::raise_surface*; | 267 | mir::shell::AbstractShell::raise_surface*; |
1259 | 266 | mir::shell::AbstractShell::remove_display*; | 268 | mir::shell::AbstractShell::remove_display*; |
1260 | 269 | mir::shell::AbstractShell::request_drag_and_drop*; | ||
1261 | 270 | mir::shell::AbstractShell::request_move*; | ||
1262 | 271 | mir::shell::AbstractShell::set_drag_and_drop_handle*; | ||
1263 | 267 | mir::shell::AbstractShell::set_focus_to*; | 272 | mir::shell::AbstractShell::set_focus_to*; |
1264 | 268 | mir::shell::AbstractShell::set_surface_attribute*; | 273 | mir::shell::AbstractShell::set_surface_attribute*; |
1265 | 269 | mir::shell::AbstractShell::start_prompt_session_for*; | 274 | mir::shell::AbstractShell::start_prompt_session_for*; |
1266 | 270 | mir::shell::AbstractShell::stop_prompt_session*; | 275 | mir::shell::AbstractShell::stop_prompt_session*; |
1267 | 271 | mir::shell::AbstractShell::surface_at*; | 276 | mir::shell::AbstractShell::surface_at*; |
1268 | 272 | mir::shell::AbstractShell::update_focused_surface_confined_region*; | 277 | mir::shell::AbstractShell::update_focused_surface_confined_region*; |
1269 | 278 | mir::shell::BasicWindowManager::active_display*; | ||
1270 | 279 | mir::shell::BasicWindowManager::add_display*; | ||
1271 | 280 | mir::shell::BasicWindowManager::add_session*; | ||
1272 | 281 | mir::shell::BasicWindowManager::add_surface*; | ||
1273 | 282 | mir::shell::BasicWindowManager::?BasicWindowManager*; | ||
1274 | 283 | mir::shell::BasicWindowManager::BasicWindowManager*; | ||
1275 | 284 | mir::shell::BasicWindowManager::clear_drag_and_drop_handle*; | ||
1276 | 285 | mir::shell::BasicWindowManager::find_session*; | ||
1277 | 286 | mir::shell::BasicWindowManager::focused_session*; | ||
1278 | 287 | mir::shell::BasicWindowManager::focused_surface*; | ||
1279 | 288 | mir::shell::BasicWindowManager::focus_next_session*; | ||
1280 | 289 | mir::shell::BasicWindowManager::forget*; | ||
1281 | 290 | mir::shell::BasicWindowManager::handle_keyboard_event*; | ||
1282 | 291 | mir::shell::BasicWindowManager::handle_pointer_event*; | ||
1283 | 292 | mir::shell::BasicWindowManager::handle_raise_surface*; | ||
1284 | 293 | mir::shell::BasicWindowManager::handle_request_drag_and_drop*; | ||
1285 | 294 | mir::shell::BasicWindowManager::handle_request_move*; | ||
1286 | 295 | mir::shell::BasicWindowManager::handle_touch_event*; | ||
1287 | 296 | mir::shell::BasicWindowManager::info_for*; | ||
1288 | 297 | mir::shell::BasicWindowManager::modify_surface*; | ||
1289 | 298 | mir::shell::BasicWindowManager::raise_tree*; | ||
1290 | 299 | mir::shell::BasicWindowManager::remove_display*; | ||
1291 | 300 | mir::shell::BasicWindowManager::remove_session*; | ||
1292 | 301 | mir::shell::BasicWindowManager::remove_surface*; | ||
1293 | 302 | mir::shell::BasicWindowManager::set_drag_and_drop_handle*; | ||
1294 | 303 | mir::shell::BasicWindowManager::set_focus_to*; | ||
1295 | 304 | mir::shell::BasicWindowManager::set_surface_attribute*; | ||
1296 | 305 | mir::shell::BasicWindowManager::surface_at*; | ||
1297 | 306 | mir::shell::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy*; | ||
1298 | 307 | mir::shell::CanonicalWindowManagerPolicy::handle_delete_surface*; | ||
1299 | 308 | mir::shell::CanonicalWindowManagerPolicy::handle_displays_updated*; | ||
1300 | 309 | mir::shell::CanonicalWindowManagerPolicy::handle_keyboard_event*; | ||
1301 | 310 | mir::shell::CanonicalWindowManagerPolicy::handle_modify_surface*; | ||
1302 | 311 | mir::shell::CanonicalWindowManagerPolicy::handle_new_surface*; | ||
1303 | 312 | mir::shell::CanonicalWindowManagerPolicy::handle_place_new_surface*; | ||
1304 | 313 | mir::shell::CanonicalWindowManagerPolicy::handle_pointer_event*; | ||
1305 | 314 | mir::shell::CanonicalWindowManagerPolicy::handle_raise_surface*; | ||
1306 | 315 | mir::shell::CanonicalWindowManagerPolicy::handle_request_drag_and_drop*; | ||
1307 | 316 | mir::shell::CanonicalWindowManagerPolicy::handle_session_info_updated*; | ||
1308 | 317 | mir::shell::CanonicalWindowManagerPolicy::handle_set_state*; | ||
1309 | 318 | mir::shell::CanonicalWindowManagerPolicy::handle_touch_event*; | ||
1310 | 273 | mir::shell::DisplayConfigurationController::?DisplayConfigurationController*; | 319 | mir::shell::DisplayConfigurationController::?DisplayConfigurationController*; |
1311 | 274 | mir::shell::DisplayConfigurationController::DisplayConfigurationController*; | 320 | mir::shell::DisplayConfigurationController::DisplayConfigurationController*; |
1312 | 275 | mir::shell::DisplayConfigurationController::operator*; | 321 | mir::shell::DisplayConfigurationController::operator*; |
1313 | @@ -309,13 +355,24 @@ | |||
1314 | 309 | mir::shell::ShellWrapper::raise_surface*; | 355 | mir::shell::ShellWrapper::raise_surface*; |
1315 | 310 | mir::shell::ShellWrapper::remove_display*; | 356 | mir::shell::ShellWrapper::remove_display*; |
1316 | 311 | mir::shell::ShellWrapper::request_drag_and_drop*; | 357 | mir::shell::ShellWrapper::request_drag_and_drop*; |
1317 | 358 | mir::shell::ShellWrapper::request_move*; | ||
1318 | 359 | mir::shell::ShellWrapper::set_drag_and_drop_handle*; | ||
1319 | 312 | mir::shell::ShellWrapper::set_focus_to*; | 360 | mir::shell::ShellWrapper::set_focus_to*; |
1320 | 313 | mir::shell::ShellWrapper::set_surface_attribute*; | 361 | mir::shell::ShellWrapper::set_surface_attribute*; |
1321 | 314 | mir::shell::ShellWrapper::ShellWrapper*; | 362 | mir::shell::ShellWrapper::ShellWrapper*; |
1322 | 315 | mir::shell::ShellWrapper::set_drag_and_drop_handle*; | ||
1323 | 316 | mir::shell::ShellWrapper::start_prompt_session_for*; | 363 | mir::shell::ShellWrapper::start_prompt_session_for*; |
1324 | 317 | mir::shell::ShellWrapper::stop_prompt_session*; | 364 | mir::shell::ShellWrapper::stop_prompt_session*; |
1325 | 318 | mir::shell::ShellWrapper::surface_at*; | 365 | mir::shell::ShellWrapper::surface_at*; |
1326 | 366 | mir::shell::SurfaceInfo::can_be_active*; | ||
1327 | 367 | mir::shell::SurfaceInfo::can_morph_to*; | ||
1328 | 368 | mir::shell::SurfaceInfo::constrain_resize*; | ||
1329 | 369 | mir::shell::SurfaceInfo::init_titlebar*; | ||
1330 | 370 | mir::shell::SurfaceInfo::is_visible*; | ||
1331 | 371 | mir::shell::SurfaceInfo::must_have_parent*; | ||
1332 | 372 | mir::shell::SurfaceInfo::must_not_have_parent*; | ||
1333 | 373 | mir::shell::SurfaceInfo::needs_titlebar*; | ||
1334 | 374 | mir::shell::SurfaceInfo::paint_titlebar*; | ||
1335 | 375 | mir::shell::SurfaceInfo::SurfaceInfo*; | ||
1336 | 319 | mir::shell::SurfaceReadyObserver::frame_posted*; | 376 | mir::shell::SurfaceReadyObserver::frame_posted*; |
1337 | 320 | mir::shell::SurfaceReadyObserver::?SurfaceReadyObserver*; | 377 | mir::shell::SurfaceReadyObserver::?SurfaceReadyObserver*; |
1338 | 321 | mir::shell::SurfaceReadyObserver::SurfaceReadyObserver*; | 378 | mir::shell::SurfaceReadyObserver::SurfaceReadyObserver*; |
1339 | @@ -334,6 +391,8 @@ | |||
1340 | 334 | mir::shell::SystemCompositorWindowManager::handle_keyboard_event*; | 391 | mir::shell::SystemCompositorWindowManager::handle_keyboard_event*; |
1341 | 335 | mir::shell::SystemCompositorWindowManager::handle_pointer_event*; | 392 | mir::shell::SystemCompositorWindowManager::handle_pointer_event*; |
1342 | 336 | mir::shell::SystemCompositorWindowManager::handle_raise_surface*; | 393 | mir::shell::SystemCompositorWindowManager::handle_raise_surface*; |
1343 | 394 | mir::shell::SystemCompositorWindowManager::handle_request_drag_and_drop*; | ||
1344 | 395 | mir::shell::SystemCompositorWindowManager::handle_request_move*; | ||
1345 | 337 | mir::shell::SystemCompositorWindowManager::handle_touch_event*; | 396 | mir::shell::SystemCompositorWindowManager::handle_touch_event*; |
1346 | 338 | mir::shell::SystemCompositorWindowManager::modify_surface*; | 397 | mir::shell::SystemCompositorWindowManager::modify_surface*; |
1347 | 339 | mir::shell::SystemCompositorWindowManager::on_session_added*; | 398 | mir::shell::SystemCompositorWindowManager::on_session_added*; |
1348 | @@ -342,10 +401,15 @@ | |||
1349 | 342 | mir::shell::SystemCompositorWindowManager::remove_display*; | 401 | mir::shell::SystemCompositorWindowManager::remove_display*; |
1350 | 343 | mir::shell::SystemCompositorWindowManager::remove_session*; | 402 | mir::shell::SystemCompositorWindowManager::remove_session*; |
1351 | 344 | mir::shell::SystemCompositorWindowManager::remove_surface*; | 403 | mir::shell::SystemCompositorWindowManager::remove_surface*; |
1352 | 345 | mir::shell::SystemCompositorWindowManager::handle_request_drag_and_drop*; | ||
1353 | 346 | mir::shell::SystemCompositorWindowManager::set_surface_attribute*; | 404 | mir::shell::SystemCompositorWindowManager::set_surface_attribute*; |
1354 | 347 | mir::shell::SystemCompositorWindowManager::SystemCompositorWindowManager*; | 405 | mir::shell::SystemCompositorWindowManager::SystemCompositorWindowManager*; |
1355 | 406 | mir::shell::WindowManagementPolicy::operator*; | ||
1356 | 407 | mir::shell::WindowManagementPolicy::?WindowManagementPolicy*; | ||
1357 | 408 | mir::shell::WindowManagementPolicy::WindowManagementPolicy*; | ||
1358 | 348 | mir::shell::WindowManager::operator*; | 409 | mir::shell::WindowManager::operator*; |
1359 | 410 | mir::shell::WindowManagerTools::operator*; | ||
1360 | 411 | mir::shell::WindowManagerTools::?WindowManagerTools*; | ||
1361 | 412 | mir::shell::WindowManagerTools::WindowManagerTools*; | ||
1362 | 349 | mir::shell::WindowManager::?WindowManager*; | 413 | mir::shell::WindowManager::?WindowManager*; |
1363 | 350 | mir::shell::WindowManager::WindowManager*; | 414 | mir::shell::WindowManager::WindowManager*; |
1364 | 351 | mir::terminate_with_current_exception*; | 415 | mir::terminate_with_current_exception*; |
1365 | @@ -410,6 +474,7 @@ | |||
1366 | 410 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::reception_mode_set_to*; | 474 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::reception_mode_set_to*; |
1367 | 411 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::renamed*; | 475 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::renamed*; |
1368 | 412 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::resized_to*; | 476 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::resized_to*; |
1369 | 477 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::start_drag_and_drop*; | ||
1370 | 413 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::transformation_set_to*; | 478 | non-virtual?thunk?to?mir::scene::NullSurfaceObserver::transformation_set_to*; |
1371 | 414 | non-virtual?thunk?to?mir::scene::Observer::?Observer*; | 479 | non-virtual?thunk?to?mir::scene::Observer::?Observer*; |
1372 | 415 | non-virtual?thunk?to?mir::scene::PromptSessionListener::?PromptSessionListener*; | 480 | non-virtual?thunk?to?mir::scene::PromptSessionListener::?PromptSessionListener*; |
1373 | @@ -422,6 +487,7 @@ | |||
1374 | 422 | non-virtual?thunk?to?mir::ServerStatusListener::?ServerStatusListener*; | 487 | non-virtual?thunk?to?mir::ServerStatusListener::?ServerStatusListener*; |
1375 | 423 | non-virtual?thunk?to?mir::shell::AbstractShell::add_display*; | 488 | non-virtual?thunk?to?mir::shell::AbstractShell::add_display*; |
1376 | 424 | non-virtual?thunk?to?mir::shell::AbstractShell::add_prompt_provider_for*; | 489 | non-virtual?thunk?to?mir::shell::AbstractShell::add_prompt_provider_for*; |
1377 | 490 | non-virtual?thunk?to?mir::shell::AbstractShell::clear_drag_and_drop_handle*; | ||
1378 | 425 | non-virtual?thunk?to?mir::shell::AbstractShell::close_session*; | 491 | non-virtual?thunk?to?mir::shell::AbstractShell::close_session*; |
1379 | 426 | non-virtual?thunk?to?mir::shell::AbstractShell::create_surface*; | 492 | non-virtual?thunk?to?mir::shell::AbstractShell::create_surface*; |
1380 | 427 | non-virtual?thunk?to?mir::shell::AbstractShell::destroy_surface*; | 493 | non-virtual?thunk?to?mir::shell::AbstractShell::destroy_surface*; |
1381 | @@ -435,11 +501,52 @@ | |||
1382 | 435 | non-virtual?thunk?to?mir::shell::AbstractShell::raise*; | 501 | non-virtual?thunk?to?mir::shell::AbstractShell::raise*; |
1383 | 436 | non-virtual?thunk?to?mir::shell::AbstractShell::raise_surface*; | 502 | non-virtual?thunk?to?mir::shell::AbstractShell::raise_surface*; |
1384 | 437 | non-virtual?thunk?to?mir::shell::AbstractShell::remove_display*; | 503 | non-virtual?thunk?to?mir::shell::AbstractShell::remove_display*; |
1385 | 504 | non-virtual?thunk?to?mir::shell::AbstractShell::request_drag_and_drop*; | ||
1386 | 505 | non-virtual?thunk?to?mir::shell::AbstractShell::request_move*; | ||
1387 | 506 | non-virtual?thunk?to?mir::shell::AbstractShell::set_drag_and_drop_handle*; | ||
1388 | 438 | non-virtual?thunk?to?mir::shell::AbstractShell::set_focus_to*; | 507 | non-virtual?thunk?to?mir::shell::AbstractShell::set_focus_to*; |
1389 | 439 | non-virtual?thunk?to?mir::shell::AbstractShell::set_surface_attribute*; | 508 | non-virtual?thunk?to?mir::shell::AbstractShell::set_surface_attribute*; |
1390 | 440 | non-virtual?thunk?to?mir::shell::AbstractShell::start_prompt_session_for*; | 509 | non-virtual?thunk?to?mir::shell::AbstractShell::start_prompt_session_for*; |
1391 | 441 | non-virtual?thunk?to?mir::shell::AbstractShell::stop_prompt_session*; | 510 | non-virtual?thunk?to?mir::shell::AbstractShell::stop_prompt_session*; |
1392 | 442 | non-virtual?thunk?to?mir::shell::AbstractShell::surface_at*; | 511 | non-virtual?thunk?to?mir::shell::AbstractShell::surface_at*; |
1393 | 512 | non-virtual?thunk?to?mir::shell::BasicWindowManager::active_display*; | ||
1394 | 513 | non-virtual?thunk?to?mir::shell::BasicWindowManager::add_display*; | ||
1395 | 514 | non-virtual?thunk?to?mir::shell::BasicWindowManager::add_session*; | ||
1396 | 515 | non-virtual?thunk?to?mir::shell::BasicWindowManager::add_surface*; | ||
1397 | 516 | non-virtual?thunk?to?mir::shell::BasicWindowManager::clear_drag_and_drop_handle*; | ||
1398 | 517 | non-virtual?thunk?to?mir::shell::BasicWindowManager::find_session*; | ||
1399 | 518 | non-virtual?thunk?to?mir::shell::BasicWindowManager::focused_session*; | ||
1400 | 519 | non-virtual?thunk?to?mir::shell::BasicWindowManager::focused_surface*; | ||
1401 | 520 | non-virtual?thunk?to?mir::shell::BasicWindowManager::focus_next_session*; | ||
1402 | 521 | non-virtual?thunk?to?mir::shell::BasicWindowManager::forget*; | ||
1403 | 522 | non-virtual?thunk?to?mir::shell::BasicWindowManager::handle_keyboard_event*; | ||
1404 | 523 | non-virtual?thunk?to?mir::shell::BasicWindowManager::handle_pointer_event*; | ||
1405 | 524 | non-virtual?thunk?to?mir::shell::BasicWindowManager::handle_raise_surface*; | ||
1406 | 525 | non-virtual?thunk?to?mir::shell::BasicWindowManager::handle_request_drag_and_drop*; | ||
1407 | 526 | non-virtual?thunk?to?mir::shell::BasicWindowManager::handle_request_move*; | ||
1408 | 527 | non-virtual?thunk?to?mir::shell::BasicWindowManager::handle_touch_event*; | ||
1409 | 528 | non-virtual?thunk?to?mir::shell::BasicWindowManager::info_for*; | ||
1410 | 529 | non-virtual?thunk?to?mir::shell::BasicWindowManager::modify_surface*; | ||
1411 | 530 | non-virtual?thunk?to?mir::shell::BasicWindowManager::raise_tree*; | ||
1412 | 531 | non-virtual?thunk?to?mir::shell::BasicWindowManager::remove_display*; | ||
1413 | 532 | non-virtual?thunk?to?mir::shell::BasicWindowManager::remove_session*; | ||
1414 | 533 | non-virtual?thunk?to?mir::shell::BasicWindowManager::remove_surface*; | ||
1415 | 534 | non-virtual?thunk?to?mir::shell::BasicWindowManager::set_drag_and_drop_handle*; | ||
1416 | 535 | non-virtual?thunk?to?mir::shell::BasicWindowManager::set_focus_to*; | ||
1417 | 536 | non-virtual?thunk?to?mir::shell::BasicWindowManager::set_surface_attribute*; | ||
1418 | 537 | non-virtual?thunk?to?mir::shell::BasicWindowManager::surface_at*; | ||
1419 | 538 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_delete_surface*; | ||
1420 | 539 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_displays_updated*; | ||
1421 | 540 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_keyboard_event*; | ||
1422 | 541 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_modify_surface*; | ||
1423 | 542 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_new_surface*; | ||
1424 | 543 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_place_new_surface*; | ||
1425 | 544 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_pointer_event*; | ||
1426 | 545 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_raise_surface*; | ||
1427 | 546 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_request_drag_and_drop*; | ||
1428 | 547 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_session_info_updated*; | ||
1429 | 548 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_set_state*; | ||
1430 | 549 | non-virtual?thunk?to?mir::shell::CanonicalWindowManagerPolicy::handle_touch_event*; | ||
1431 | 443 | non-virtual?thunk?to?mir::shell::DisplayConfigurationController::?DisplayConfigurationController*; | 550 | non-virtual?thunk?to?mir::shell::DisplayConfigurationController::?DisplayConfigurationController*; |
1432 | 444 | non-virtual?thunk?to?mir::shell::DisplayLayout::?DisplayLayout*; | 551 | non-virtual?thunk?to?mir::shell::DisplayLayout::?DisplayLayout*; |
1433 | 445 | non-virtual?thunk?to?mir::shell::FocusController::?FocusController*; | 552 | non-virtual?thunk?to?mir::shell::FocusController::?FocusController*; |
1434 | @@ -449,6 +556,7 @@ | |||
1435 | 449 | non-virtual?thunk?to?mir::shell::ShellReport::?ShellReport*; | 556 | non-virtual?thunk?to?mir::shell::ShellReport::?ShellReport*; |
1436 | 450 | non-virtual?thunk?to?mir::shell::ShellWrapper::add_display*; | 557 | non-virtual?thunk?to?mir::shell::ShellWrapper::add_display*; |
1437 | 451 | non-virtual?thunk?to?mir::shell::ShellWrapper::add_prompt_provider_for*; | 558 | non-virtual?thunk?to?mir::shell::ShellWrapper::add_prompt_provider_for*; |
1438 | 559 | non-virtual?thunk?to?mir::shell::ShellWrapper::clear_drag_and_drop_handle*; | ||
1439 | 452 | non-virtual?thunk?to?mir::shell::ShellWrapper::close_session*; | 560 | non-virtual?thunk?to?mir::shell::ShellWrapper::close_session*; |
1440 | 453 | non-virtual?thunk?to?mir::shell::ShellWrapper::create_surface*; | 561 | non-virtual?thunk?to?mir::shell::ShellWrapper::create_surface*; |
1441 | 454 | non-virtual?thunk?to?mir::shell::ShellWrapper::destroy_surface*; | 562 | non-virtual?thunk?to?mir::shell::ShellWrapper::destroy_surface*; |
1442 | @@ -462,6 +570,9 @@ | |||
1443 | 462 | non-virtual?thunk?to?mir::shell::ShellWrapper::raise*; | 570 | non-virtual?thunk?to?mir::shell::ShellWrapper::raise*; |
1444 | 463 | non-virtual?thunk?to?mir::shell::ShellWrapper::raise_surface*; | 571 | non-virtual?thunk?to?mir::shell::ShellWrapper::raise_surface*; |
1445 | 464 | non-virtual?thunk?to?mir::shell::ShellWrapper::remove_display*; | 572 | non-virtual?thunk?to?mir::shell::ShellWrapper::remove_display*; |
1446 | 573 | non-virtual?thunk?to?mir::shell::ShellWrapper::request_drag_and_drop*; | ||
1447 | 574 | non-virtual?thunk?to?mir::shell::ShellWrapper::request_move*; | ||
1448 | 575 | non-virtual?thunk?to?mir::shell::ShellWrapper::set_drag_and_drop_handle*; | ||
1449 | 465 | non-virtual?thunk?to?mir::shell::ShellWrapper::set_focus_to*; | 576 | non-virtual?thunk?to?mir::shell::ShellWrapper::set_focus_to*; |
1450 | 466 | non-virtual?thunk?to?mir::shell::ShellWrapper::set_surface_attribute*; | 577 | non-virtual?thunk?to?mir::shell::ShellWrapper::set_surface_attribute*; |
1451 | 467 | non-virtual?thunk?to?mir::shell::ShellWrapper::start_prompt_session_for*; | 578 | non-virtual?thunk?to?mir::shell::ShellWrapper::start_prompt_session_for*; |
1452 | @@ -479,6 +590,8 @@ | |||
1453 | 479 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_keyboard_event*; | 590 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_keyboard_event*; |
1454 | 480 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_pointer_event*; | 591 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_pointer_event*; |
1455 | 481 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_raise_surface*; | 592 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_raise_surface*; |
1456 | 593 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_request_drag_and_drop*; | ||
1457 | 594 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_request_move*; | ||
1458 | 482 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_touch_event*; | 595 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::handle_touch_event*; |
1459 | 483 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::modify_surface*; | 596 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::modify_surface*; |
1460 | 484 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::on_session_added*; | 597 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::on_session_added*; |
1461 | @@ -488,6 +601,8 @@ | |||
1462 | 488 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::remove_session*; | 601 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::remove_session*; |
1463 | 489 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::remove_surface*; | 602 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::remove_surface*; |
1464 | 490 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::set_surface_attribute*; | 603 | non-virtual?thunk?to?mir::shell::SystemCompositorWindowManager::set_surface_attribute*; |
1465 | 604 | non-virtual?thunk?to?mir::shell::WindowManagementPolicy::?WindowManagementPolicy*; | ||
1466 | 605 | non-virtual?thunk?to?mir::shell::WindowManagerTools::?WindowManagerTools*; | ||
1467 | 491 | non-virtual?thunk?to?mir::shell::WindowManager::?WindowManager*; | 606 | non-virtual?thunk?to?mir::shell::WindowManager::?WindowManager*; |
1468 | 492 | non-virtual?thunk?to?mir::time::Alarm::?Alarm*; | 607 | non-virtual?thunk?to?mir::time::Alarm::?Alarm*; |
1469 | 493 | non-virtual?thunk?to?mir::time::AlarmFactory::?AlarmFactory*; | 608 | non-virtual?thunk?to?mir::time::AlarmFactory::?AlarmFactory*; |
1470 | @@ -552,6 +667,8 @@ | |||
1471 | 552 | typeinfo?for?mir::ServerActionQueue; | 667 | typeinfo?for?mir::ServerActionQueue; |
1472 | 553 | typeinfo?for?mir::ServerStatusListener; | 668 | typeinfo?for?mir::ServerStatusListener; |
1473 | 554 | typeinfo?for?mir::shell::AbstractShell; | 669 | typeinfo?for?mir::shell::AbstractShell; |
1474 | 670 | typeinfo?for?mir::shell::BasicWindowManager; | ||
1475 | 671 | typeinfo?for?mir::shell::CanonicalWindowManagerPolicy; | ||
1476 | 555 | typeinfo?for?mir::shell::DisplayConfigurationController; | 672 | typeinfo?for?mir::shell::DisplayConfigurationController; |
1477 | 556 | typeinfo?for?mir::shell::DisplayLayout; | 673 | typeinfo?for?mir::shell::DisplayLayout; |
1478 | 557 | typeinfo?for?mir::shell::FocusController; | 674 | typeinfo?for?mir::shell::FocusController; |
1479 | @@ -559,18 +676,22 @@ | |||
1480 | 559 | typeinfo?for?mir::shell::InputTargeter; | 676 | typeinfo?for?mir::shell::InputTargeter; |
1481 | 560 | typeinfo?for?mir::shell::PersistentSurfaceStore; | 677 | typeinfo?for?mir::shell::PersistentSurfaceStore; |
1482 | 561 | typeinfo?for?mir::shell::PersistentSurfaceStore::Id; | 678 | typeinfo?for?mir::shell::PersistentSurfaceStore::Id; |
1483 | 679 | typeinfo?for?mir::shell::SessionInfo; | ||
1484 | 562 | typeinfo?for?mir::shell::Shell; | 680 | typeinfo?for?mir::shell::Shell; |
1485 | 563 | typeinfo?for?mir::shell::ShellReport; | 681 | typeinfo?for?mir::shell::ShellReport; |
1486 | 564 | typeinfo?for?mir::shell::ShellWrapper; | 682 | typeinfo?for?mir::shell::ShellWrapper; |
1487 | 565 | typeinfo?for?mir::shell::StreamCursor; | 683 | typeinfo?for?mir::shell::StreamCursor; |
1488 | 566 | typeinfo?for?mir::shell::StreamSpecification; | 684 | typeinfo?for?mir::shell::StreamSpecification; |
1489 | 567 | typeinfo?for?mir::shell::SurfaceAspectRatio; | 685 | typeinfo?for?mir::shell::SurfaceAspectRatio; |
1490 | 686 | typeinfo?for?mir::shell::SurfaceInfo; | ||
1491 | 568 | typeinfo?for?mir::shell::SurfaceReadyObserver; | 687 | typeinfo?for?mir::shell::SurfaceReadyObserver; |
1492 | 569 | typeinfo?for?mir::shell::SurfaceSpecification; | 688 | typeinfo?for?mir::shell::SurfaceSpecification; |
1493 | 570 | typeinfo?for?mir::shell::SurfaceStack; | 689 | typeinfo?for?mir::shell::SurfaceStack; |
1494 | 571 | typeinfo?for?mir::shell::SurfaceStackWrapper; | 690 | typeinfo?for?mir::shell::SurfaceStackWrapper; |
1495 | 572 | typeinfo?for?mir::shell::SystemCompositorWindowManager; | 691 | typeinfo?for?mir::shell::SystemCompositorWindowManager; |
1496 | 692 | typeinfo?for?mir::shell::WindowManagementPolicy; | ||
1497 | 573 | typeinfo?for?mir::shell::WindowManager; | 693 | typeinfo?for?mir::shell::WindowManager; |
1498 | 694 | typeinfo?for?mir::shell::WindowManagerTools; | ||
1499 | 574 | typeinfo?for?mir::time::Alarm; | 695 | typeinfo?for?mir::time::Alarm; |
1500 | 575 | typeinfo?for?mir::time::AlarmFactory; | 696 | typeinfo?for?mir::time::AlarmFactory; |
1501 | 576 | vtable?for?mir::compositor::Compositor; | 697 | vtable?for?mir::compositor::Compositor; |
1502 | @@ -634,6 +755,8 @@ | |||
1503 | 634 | vtable?for?mir::ServerActionQueue; | 755 | vtable?for?mir::ServerActionQueue; |
1504 | 635 | vtable?for?mir::ServerStatusListener; | 756 | vtable?for?mir::ServerStatusListener; |
1505 | 636 | vtable?for?mir::shell::AbstractShell; | 757 | vtable?for?mir::shell::AbstractShell; |
1506 | 758 | vtable?for?mir::shell::BasicWindowManager; | ||
1507 | 759 | vtable?for?mir::shell::CanonicalWindowManagerPolicy; | ||
1508 | 637 | vtable?for?mir::shell::DisplayConfigurationController; | 760 | vtable?for?mir::shell::DisplayConfigurationController; |
1509 | 638 | vtable?for?mir::shell::DisplayLayout; | 761 | vtable?for?mir::shell::DisplayLayout; |
1510 | 639 | vtable?for?mir::shell::FocusController; | 762 | vtable?for?mir::shell::FocusController; |
1511 | @@ -641,18 +764,22 @@ | |||
1512 | 641 | vtable?for?mir::shell::InputTargeter; | 764 | vtable?for?mir::shell::InputTargeter; |
1513 | 642 | vtable?for?mir::shell::PersistentSurfaceStore; | 765 | vtable?for?mir::shell::PersistentSurfaceStore; |
1514 | 643 | vtable?for?mir::shell::PersistentSurfaceStore::Id; | 766 | vtable?for?mir::shell::PersistentSurfaceStore::Id; |
1515 | 767 | vtable?for?mir::shell::SessionInfo; | ||
1516 | 644 | vtable?for?mir::shell::Shell; | 768 | vtable?for?mir::shell::Shell; |
1517 | 645 | vtable?for?mir::shell::ShellReport; | 769 | vtable?for?mir::shell::ShellReport; |
1518 | 646 | vtable?for?mir::shell::ShellWrapper; | 770 | vtable?for?mir::shell::ShellWrapper; |
1519 | 647 | vtable?for?mir::shell::StreamCursor; | 771 | vtable?for?mir::shell::StreamCursor; |
1520 | 648 | vtable?for?mir::shell::StreamSpecification; | 772 | vtable?for?mir::shell::StreamSpecification; |
1521 | 649 | vtable?for?mir::shell::SurfaceAspectRatio; | 773 | vtable?for?mir::shell::SurfaceAspectRatio; |
1522 | 774 | vtable?for?mir::shell::SurfaceInfo; | ||
1523 | 650 | vtable?for?mir::shell::SurfaceReadyObserver; | 775 | vtable?for?mir::shell::SurfaceReadyObserver; |
1524 | 651 | vtable?for?mir::shell::SurfaceSpecification; | 776 | vtable?for?mir::shell::SurfaceSpecification; |
1525 | 652 | vtable?for?mir::shell::SurfaceStack; | 777 | vtable?for?mir::shell::SurfaceStack; |
1526 | 653 | vtable?for?mir::shell::SurfaceStackWrapper; | 778 | vtable?for?mir::shell::SurfaceStackWrapper; |
1527 | 654 | vtable?for?mir::shell::SystemCompositorWindowManager; | 779 | vtable?for?mir::shell::SystemCompositorWindowManager; |
1528 | 780 | vtable?for?mir::shell::WindowManagementPolicy; | ||
1529 | 655 | vtable?for?mir::shell::WindowManager; | 781 | vtable?for?mir::shell::WindowManager; |
1530 | 782 | vtable?for?mir::shell::WindowManagerTools; | ||
1531 | 656 | vtable?for?mir::time::Alarm; | 783 | vtable?for?mir::time::Alarm; |
1532 | 657 | vtable?for?mir::time::AlarmFactory; | 784 | vtable?for?mir::time::AlarmFactory; |
1533 | 658 | 785 | ||
1534 | @@ -675,6 +802,21 @@ | |||
1535 | 675 | virtual?thunk?to?mir::shell::AbstractShell::setting_focus_to*; | 802 | virtual?thunk?to?mir::shell::AbstractShell::setting_focus_to*; |
1536 | 676 | virtual?thunk?to?mir::shell::AbstractShell::start_prompt_session_for*; | 803 | virtual?thunk?to?mir::shell::AbstractShell::start_prompt_session_for*; |
1537 | 677 | virtual?thunk?to?mir::shell::AbstractShell::stop_prompt_session*; | 804 | virtual?thunk?to?mir::shell::AbstractShell::stop_prompt_session*; |
1538 | 805 | virtual?thunk?to?mir::shell::BasicWindowManager::?BasicWindowManager*; | ||
1539 | 806 | virtual?thunk?to?mir::shell::BasicWindowManager::add_display*; | ||
1540 | 807 | virtual?thunk?to?mir::shell::BasicWindowManager::add_session*; | ||
1541 | 808 | virtual?thunk?to?mir::shell::BasicWindowManager::add_surface*; | ||
1542 | 809 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_keyboard_event*; | ||
1543 | 810 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_pointer_event*; | ||
1544 | 811 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_raise_surface*; | ||
1545 | 812 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_request_drag_and_drop*; | ||
1546 | 813 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_request_move*; | ||
1547 | 814 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_touch_event*; | ||
1548 | 815 | virtual?thunk?to?mir::shell::BasicWindowManager::modify_surface*; | ||
1549 | 816 | virtual?thunk?to?mir::shell::BasicWindowManager::remove_display*; | ||
1550 | 817 | virtual?thunk?to?mir::shell::BasicWindowManager::remove_session*; | ||
1551 | 818 | virtual?thunk?to?mir::shell::BasicWindowManager::remove_surface*; | ||
1552 | 819 | virtual?thunk?to?mir::shell::BasicWindowManager::set_surface_attribute*; | ||
1553 | 678 | virtual?thunk?to?mir::shell::ShellWrapper::add_display*; | 820 | virtual?thunk?to?mir::shell::ShellWrapper::add_display*; |
1554 | 679 | virtual?thunk?to?mir::shell::ShellWrapper::handle*; | 821 | virtual?thunk?to?mir::shell::ShellWrapper::handle*; |
1555 | 680 | virtual?thunk?to?mir::shell::ShellWrapper::remove_display*; | 822 | virtual?thunk?to?mir::shell::ShellWrapper::remove_display*; |
1556 | @@ -686,25 +828,6 @@ | |||
1557 | 686 | MIR_SERVER_DETAIL_FOR_TESTING_0.27 { | 828 | MIR_SERVER_DETAIL_FOR_TESTING_0.27 { |
1558 | 687 | global: | 829 | global: |
1559 | 688 | extern "C++" { | 830 | extern "C++" { |
1560 | 689 | mir::shell::CanonicalWindowManagerPolicy::handle_set_state*; | ||
1561 | 690 | mir::shell::CanonicalWindowManagerPolicy::CanonicalWindowManagerPolicy*; | ||
1562 | 691 | mir::shell::CanonicalWindowManagerPolicy::handle_session_info_updated*; | ||
1563 | 692 | mir::shell::CanonicalWindowManagerPolicy::handle_session_info_updated*; | ||
1564 | 693 | mir::shell::CanonicalWindowManagerPolicy::handle_place_new_surface*; | ||
1565 | 694 | mir::shell::CanonicalWindowManagerPolicy::handle_modify_surface*; | ||
1566 | 695 | mir::shell::CanonicalWindowManagerPolicy::handle_new_surface*; | ||
1567 | 696 | mir::shell::CanonicalWindowManagerPolicy::handle_delete_surface*; | ||
1568 | 697 | mir::shell::CanonicalWindowManagerPolicy::handle_displays_updated*; | ||
1569 | 698 | mir::shell::CanonicalWindowManagerPolicy::handle_displays_updated*; | ||
1570 | 699 | mir::shell::CanonicalWindowManagerPolicy::handle_keyboard_event*; | ||
1571 | 700 | mir::shell::CanonicalWindowManagerPolicy::handle_touch_event*; | ||
1572 | 701 | mir::shell::CanonicalWindowManagerPolicy::handle_pointer_event*; | ||
1573 | 702 | mir::shell::CanonicalWindowManagerPolicy::handle_raise_surface*; | ||
1574 | 703 | mir::shell::CanonicalWindowManagerPolicy::handle_request_drag_and_drop*; | ||
1575 | 704 | typeinfo?for?mir::shell::CanonicalWindowManagerPolicy; | ||
1576 | 705 | vtable?for?mir::shell::CanonicalWindowManagerPolicy; | ||
1577 | 706 | VTT?for?mir::shell::CanonicalWindowManagerPolicy; | ||
1578 | 707 | |||
1579 | 708 | mir::DefaultServerConfiguration::clock*; | 831 | mir::DefaultServerConfiguration::clock*; |
1580 | 709 | mir::DefaultServerConfiguration::DefaultServerConfiguration*; | 832 | mir::DefaultServerConfiguration::DefaultServerConfiguration*; |
1581 | 710 | mir::DefaultServerConfiguration::new_ipc_factory*; | 833 | mir::DefaultServerConfiguration::new_ipc_factory*; |
1582 | @@ -831,47 +954,5 @@ | |||
1583 | 831 | mir::renderer::gl::Renderer::vshader; | 954 | mir::renderer::gl::Renderer::vshader; |
1584 | 832 | typeinfo?for?mir::renderer::gl::Renderer; | 955 | typeinfo?for?mir::renderer::gl::Renderer; |
1585 | 833 | vtable?for?mir::renderer::gl::Renderer; | 956 | vtable?for?mir::renderer::gl::Renderer; |
1586 | 834 | |||
1587 | 835 | mir::shell::BasicWindowManager::active_display*; | ||
1588 | 836 | mir::shell::BasicWindowManager::add_display*; | ||
1589 | 837 | mir::shell::BasicWindowManager::add_session*; | ||
1590 | 838 | mir::shell::BasicWindowManager::add_surface*; | ||
1591 | 839 | mir::shell::BasicWindowManager::BasicWindowManager*; | ||
1592 | 840 | mir::shell::BasicWindowManager::clear_drag_and_drop_handle*; | ||
1593 | 841 | mir::shell::BasicWindowManager::find_session*; | ||
1594 | 842 | mir::shell::BasicWindowManager::focused_session*; | ||
1595 | 843 | mir::shell::BasicWindowManager::focused_surface*; | ||
1596 | 844 | mir::shell::BasicWindowManager::focus_next_session*; | ||
1597 | 845 | mir::shell::BasicWindowManager::forget*; | ||
1598 | 846 | mir::shell::BasicWindowManager::handle_keyboard_event*; | ||
1599 | 847 | mir::shell::BasicWindowManager::handle_pointer_event*; | ||
1600 | 848 | mir::shell::BasicWindowManager::handle_raise_surface*; | ||
1601 | 849 | mir::shell::BasicWindowManager::handle_request_drag_and_drop*; | ||
1602 | 850 | mir::shell::BasicWindowManager::handle_touch_event*; | ||
1603 | 851 | mir::shell::BasicWindowManager::info_for*; | ||
1604 | 852 | mir::shell::BasicWindowManager::modify_surface*; | ||
1605 | 853 | mir::shell::BasicWindowManager::raise_tree*; | ||
1606 | 854 | mir::shell::BasicWindowManager::remove_display*; | ||
1607 | 855 | mir::shell::BasicWindowManager::remove_session*; | ||
1608 | 856 | mir::shell::BasicWindowManager::remove_surface*; | ||
1609 | 857 | mir::shell::BasicWindowManager::set_drag_and_drop_handle*; | ||
1610 | 858 | mir::shell::BasicWindowManager::set_focus_to*; | ||
1611 | 859 | mir::shell::BasicWindowManager::set_surface_attribute*; | ||
1612 | 860 | mir::shell::BasicWindowManager::surface_at*; | ||
1613 | 861 | typeinfo?for?mir::shell::BasicWindowManager; | ||
1614 | 862 | virtual?thunk?to?mir::shell::BasicWindowManager::add_display*; | ||
1615 | 863 | virtual?thunk?to?mir::shell::BasicWindowManager::add_session*; | ||
1616 | 864 | virtual?thunk?to?mir::shell::BasicWindowManager::add_surface*; | ||
1617 | 865 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_keyboard_event*; | ||
1618 | 866 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_pointer_event*; | ||
1619 | 867 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_raise_surface*; | ||
1620 | 868 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_request_drag_and_drop*; | ||
1621 | 869 | virtual?thunk?to?mir::shell::BasicWindowManager::handle_touch_event*; | ||
1622 | 870 | virtual?thunk?to?mir::shell::BasicWindowManager::modify_surface*; | ||
1623 | 871 | virtual?thunk?to?mir::shell::BasicWindowManager::remove_display*; | ||
1624 | 872 | virtual?thunk?to?mir::shell::BasicWindowManager::remove_session*; | ||
1625 | 873 | virtual?thunk?to?mir::shell::BasicWindowManager::remove_surface*; | ||
1626 | 874 | virtual?thunk?to?mir::shell::BasicWindowManager::set_surface_attribute*; | ||
1627 | 875 | VTT?for?mir::shell::BasicWindowManager; | ||
1628 | 876 | }; | 957 | }; |
1629 | 877 | } MIR_SERVER_DETAIL_FOR_TESTING_0.27; | 958 | } MIR_SERVER_DETAIL_FOR_TESTING_0.27; |
1630 | 878 | 959 | ||
1631 | === modified file 'tests/acceptance-tests/CMakeLists.txt' | |||
1632 | --- tests/acceptance-tests/CMakeLists.txt 2017-03-24 10:16:59 +0000 | |||
1633 | +++ tests/acceptance-tests/CMakeLists.txt 2017-04-04 10:15:32 +0000 | |||
1634 | @@ -77,18 +77,10 @@ | |||
1635 | 77 | # The following tests use still files we have chosen not to support in the public API | 77 | # The following tests use still files we have chosen not to support in the public API |
1636 | 78 | # TODO update these "throwback" tests to rely only on the public APIs | 78 | # TODO update these "throwback" tests to rely only on the public APIs |
1637 | 79 | 79 | ||
1638 | 80 | # uses BasicWindowManager<> | ||
1639 | 81 | set_source_files_properties(test_client_cursor_api.cpp PROPERTIES COMPILE_FLAGS | ||
1640 | 82 | "${CMAKE_CXXFLAGS} -I ${PROJECT_SOURCE_DIR}/src/include/server") | ||
1641 | 83 | |||
1642 | 84 | # uses UsingClientPlatform | 80 | # uses UsingClientPlatform |
1643 | 85 | set_source_files_properties(test_client_library_errors.cpp PROPERTIES COMPILE_FLAGS | 81 | set_source_files_properties(test_client_library_errors.cpp PROPERTIES COMPILE_FLAGS |
1644 | 86 | "${CMAKE_CXXFLAGS} -I ${CMAKE_SOURCE_DIR}") | 82 | "${CMAKE_CXXFLAGS} -I ${CMAKE_SOURCE_DIR}") |
1645 | 87 | 83 | ||
1646 | 88 | # uses CanonicalWindowManager | ||
1647 | 89 | set_source_files_properties(test_shell_control_of_surface_configuration.cpp PROPERTIES COMPILE_FLAGS | ||
1648 | 90 | "${CMAKE_CXXFLAGS} -I ${PROJECT_SOURCE_DIR}/src/include/server") | ||
1649 | 91 | |||
1650 | 92 | # uses src/include/common/mir/protobuf/protocol_version.h | 84 | # uses src/include/common/mir/protobuf/protocol_version.h |
1651 | 93 | set_source_files_properties(test_client_library.cpp PROPERTIES COMPILE_FLAGS | 85 | set_source_files_properties(test_client_library.cpp PROPERTIES COMPILE_FLAGS |
1652 | 94 | "${CMAKE_CXXFLAGS} -I ${CMAKE_SOURCE_DIR}") | 86 | "${CMAKE_CXXFLAGS} -I ${CMAKE_SOURCE_DIR}") |
1653 | 95 | 87 | ||
1654 | === modified file 'tests/acceptance-tests/client_mediated_user_gestures.cpp' | |||
1655 | --- tests/acceptance-tests/client_mediated_user_gestures.cpp 2017-03-27 16:13:56 +0000 | |||
1656 | +++ tests/acceptance-tests/client_mediated_user_gestures.cpp 2017-04-04 10:15:32 +0000 | |||
1657 | @@ -22,12 +22,14 @@ | |||
1658 | 22 | #include <mir/geometry/displacement.h> | 22 | #include <mir/geometry/displacement.h> |
1659 | 23 | #include <mir/input/input_device_info.h> | 23 | #include <mir/input/input_device_info.h> |
1660 | 24 | #include <mir/input/device_capability.h> | 24 | #include <mir/input/device_capability.h> |
1661 | 25 | #include <mir/shell/canonical_window_manager.h> | ||
1662 | 25 | #include <mir/shell/shell.h> | 26 | #include <mir/shell/shell.h> |
1663 | 26 | 27 | ||
1664 | 27 | #include <mir_test_framework/connected_client_with_a_window.h> | 28 | #include <mir_test_framework/connected_client_with_a_window.h> |
1665 | 28 | #include <mir_test_framework/fake_input_device.h> | 29 | #include <mir_test_framework/fake_input_device.h> |
1666 | 29 | #include <mir_test_framework/stub_server_platform_factory.h> | 30 | #include <mir_test_framework/stub_server_platform_factory.h> |
1667 | 30 | #include <mir/test/event_factory.h> | 31 | #include <mir/test/event_factory.h> |
1668 | 32 | #include <mir/test/fake_shared.h> | ||
1669 | 31 | #include <mir/test/signal.h> | 33 | #include <mir/test/signal.h> |
1670 | 32 | 34 | ||
1671 | 33 | #include <gmock/gmock.h> | 35 | #include <gmock/gmock.h> |
1672 | @@ -40,6 +42,7 @@ | |||
1673 | 40 | using namespace std::chrono_literals; | 42 | using namespace std::chrono_literals; |
1674 | 41 | using namespace mir::geometry; | 43 | using namespace mir::geometry; |
1675 | 42 | using namespace testing; | 44 | using namespace testing; |
1676 | 45 | using mir::test::fake_shared; | ||
1677 | 43 | using mir::test::Signal; | 46 | using mir::test::Signal; |
1678 | 44 | 47 | ||
1679 | 45 | namespace | 48 | namespace |
1680 | @@ -67,6 +70,17 @@ | |||
1681 | 67 | 70 | ||
1682 | 68 | void mir_cookie_release(Cookie const&) = delete; | 71 | void mir_cookie_release(Cookie const&) = delete; |
1683 | 69 | 72 | ||
1684 | 73 | #pragma GCC diagnostic push | ||
1685 | 74 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||
1686 | 75 | struct MockWindowManager : mir::shell::CanonicalWindowManager | ||
1687 | 76 | { | ||
1688 | 77 | using mir::shell::CanonicalWindowManager::CanonicalWindowManager; | ||
1689 | 78 | |||
1690 | 79 | MOCK_METHOD3(handle_request_move, | ||
1691 | 80 | void(std::shared_ptr<mir::scene::Session> const&, std::shared_ptr<mir::scene::Surface> const&, uint64_t)); | ||
1692 | 81 | }; | ||
1693 | 82 | #pragma GCC diagnostic pop | ||
1694 | 83 | |||
1695 | 70 | struct MouseMoverAndFaker | 84 | struct MouseMoverAndFaker |
1696 | 71 | { | 85 | { |
1697 | 72 | void start_dragging_mouse() | 86 | void start_dragging_mouse() |
1698 | @@ -103,6 +117,12 @@ | |||
1699 | 103 | void SetUp() override | 117 | void SetUp() override |
1700 | 104 | { | 118 | { |
1701 | 105 | initial_display_layout({screen_geometry}); | 119 | initial_display_layout({screen_geometry}); |
1702 | 120 | server.override_the_window_manager_builder([this](mir::shell::FocusController* focus_controller) | ||
1703 | 121 | { | ||
1704 | 122 | return window_manager = | ||
1705 | 123 | std::make_shared<MockWindowManager>(focus_controller, server.the_shell_display_layout()); | ||
1706 | 124 | }); | ||
1707 | 125 | |||
1708 | 106 | mir_test_framework::ConnectedClientWithAWindow::SetUp(); | 126 | mir_test_framework::ConnectedClientWithAWindow::SetUp(); |
1709 | 107 | mir_window_set_event_handler(window, &window_event_handler, this); | 127 | mir_window_set_event_handler(window, &window_event_handler, this); |
1710 | 108 | 128 | ||
1711 | @@ -114,11 +134,14 @@ | |||
1712 | 114 | void TearDown() override | 134 | void TearDown() override |
1713 | 115 | { | 135 | { |
1714 | 116 | reset_window_event_handler(); | 136 | reset_window_event_handler(); |
1715 | 137 | window_manager.reset(); | ||
1716 | 117 | mir_test_framework::ConnectedClientWithAWindow::TearDown(); | 138 | mir_test_framework::ConnectedClientWithAWindow::TearDown(); |
1717 | 118 | } | 139 | } |
1718 | 119 | 140 | ||
1719 | 120 | auto user_initiates_gesture() -> Cookie; | 141 | auto user_initiates_gesture() -> Cookie; |
1720 | 121 | 142 | ||
1721 | 143 | std::shared_ptr<MockWindowManager> window_manager; | ||
1722 | 144 | |||
1723 | 122 | private: | 145 | private: |
1724 | 123 | void center_mouse(); | 146 | void center_mouse(); |
1725 | 124 | void paint_window(); | 147 | void paint_window(); |
1726 | @@ -250,10 +273,13 @@ | |||
1727 | 250 | EXPECT_THAT(cookie.get(), NotNull()); | 273 | EXPECT_THAT(cookie.get(), NotNull()); |
1728 | 251 | } | 274 | } |
1729 | 252 | 275 | ||
1732 | 253 | // TODO extend this test when server side implemented | 276 | TEST_F(ClientMediatedUserGestures, when_client_initiates_move_window_manager_handles_request) |
1731 | 254 | TEST_F(ClientMediatedUserGestures, when_client_initiates_move_nothing_bad_happens) | ||
1733 | 255 | { | 277 | { |
1734 | 256 | auto const cookie = user_initiates_gesture(); | 278 | auto const cookie = user_initiates_gesture(); |
1735 | 279 | Signal have_request; | ||
1736 | 280 | EXPECT_CALL(*window_manager, handle_request_move(_, _, _)).WillOnce(InvokeWithoutArgs([&]{ have_request.raise(); })); | ||
1737 | 257 | 281 | ||
1738 | 258 | mir_window_request_user_move(window, cookie); | 282 | mir_window_request_user_move(window, cookie); |
1739 | 283 | |||
1740 | 284 | EXPECT_THAT(have_request.wait_for(receive_event_timeout), Eq(true)); | ||
1741 | 259 | } | 285 | } |
1742 | 260 | 286 | ||
1743 | === modified file 'tests/acceptance-tests/test_client_cursor_api.cpp' | |||
1744 | --- tests/acceptance-tests/test_client_cursor_api.cpp 2017-03-15 09:30:18 +0000 | |||
1745 | +++ tests/acceptance-tests/test_client_cursor_api.cpp 2017-04-04 10:15:32 +0000 | |||
1746 | @@ -275,7 +275,10 @@ | |||
1747 | 275 | 275 | ||
1748 | 276 | server.override_the_window_manager_builder([this](msh::FocusController* focus_controller) | 276 | server.override_the_window_manager_builder([this](msh::FocusController* focus_controller) |
1749 | 277 | { | 277 | { |
1750 | 278 | #pragma GCC diagnostic push | ||
1751 | 279 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||
1752 | 278 | using PlacementWindowManager = msh::WindowManagerConstructor<mtf::DeclarativePlacementWindowManagerPolicy>; | 280 | using PlacementWindowManager = msh::WindowManagerConstructor<mtf::DeclarativePlacementWindowManagerPolicy>; |
1753 | 281 | #pragma GCC diagnostic pop | ||
1754 | 279 | return std::make_shared<PlacementWindowManager>( | 282 | return std::make_shared<PlacementWindowManager>( |
1755 | 280 | focus_controller, | 283 | focus_controller, |
1756 | 281 | client_geometries, | 284 | client_geometries, |
1757 | 282 | 285 | ||
1758 | === modified file 'tests/acceptance-tests/test_shell_control_of_surface_configuration.cpp' | |||
1759 | --- tests/acceptance-tests/test_shell_control_of_surface_configuration.cpp 2017-03-14 02:26:28 +0000 | |||
1760 | +++ tests/acceptance-tests/test_shell_control_of_surface_configuration.cpp 2017-04-04 10:15:32 +0000 | |||
1761 | @@ -39,6 +39,8 @@ | |||
1762 | 39 | 39 | ||
1763 | 40 | namespace | 40 | namespace |
1764 | 41 | { | 41 | { |
1765 | 42 | #pragma GCC diagnostic push | ||
1766 | 43 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||
1767 | 42 | struct MockWindowManager : msh::CanonicalWindowManager | 44 | struct MockWindowManager : msh::CanonicalWindowManager |
1768 | 43 | { | 45 | { |
1769 | 44 | using msh::CanonicalWindowManager::CanonicalWindowManager; | 46 | using msh::CanonicalWindowManager::CanonicalWindowManager; |
1770 | @@ -57,6 +59,7 @@ | |||
1771 | 57 | return msh::CanonicalWindowManager::set_surface_attribute(session, surface, attrib, value); | 59 | return msh::CanonicalWindowManager::set_surface_attribute(session, surface, attrib, value); |
1772 | 58 | } | 60 | } |
1773 | 59 | }; | 61 | }; |
1774 | 62 | #pragma GCC diagnostic pop | ||
1775 | 60 | 63 | ||
1776 | 61 | void signal_state_change(MirWindow*, MirEvent const* event, void* context) | 64 | void signal_state_change(MirWindow*, MirEvent const* event, void* context) |
1777 | 62 | { | 65 | { |
1778 | 63 | 66 | ||
1779 | === modified file 'tests/include/mir/test/doubles/mock_shell.h' | |||
1780 | --- tests/include/mir/test/doubles/mock_shell.h 2017-03-08 12:34:11 +0000 | |||
1781 | +++ tests/include/mir/test/doubles/mock_shell.h 2017-04-04 10:15:32 +0000 | |||
1782 | @@ -73,8 +73,8 @@ | |||
1783 | 73 | MOCK_METHOD3(raise_surface, void(std::shared_ptr<frontend::Session> const& session, | 73 | MOCK_METHOD3(raise_surface, void(std::shared_ptr<frontend::Session> const& session, |
1784 | 74 | frontend::SurfaceId surface_id, uint64_t timestamp)); | 74 | frontend::SurfaceId surface_id, uint64_t timestamp)); |
1785 | 75 | 75 | ||
1788 | 76 | MOCK_METHOD3(request_drag_and_drop, void(std::shared_ptr<frontend::Session> const& session, | 76 | MOCK_METHOD4(request_operation, void(std::shared_ptr<frontend::Session> const &session, |
1789 | 77 | frontend::SurfaceId surface_id, uint64_t timestamp)); | 77 | frontend::SurfaceId surface_id, uint64_t timestamp, UserRequest request)); |
1790 | 78 | }; | 78 | }; |
1791 | 79 | 79 | ||
1792 | 80 | } | 80 | } |
FAILED: Continuous integration, rev:4133 /mir-jenkins. ubuntu. com/job/ mir-ci/ 3284/ /mir-jenkins. ubuntu. com/job/ build-mir/ 4433/console /mir-jenkins. ubuntu. com/job/ build-0- fetch/4525 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 4515 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial+ overlay/ 4515 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= zesty/4515 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= zesty/4465/ console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4465 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4465/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4465 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= zesty/4465/ artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 4465 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 4465/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 4465 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 4465/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4465 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial+ overlay/ 4465/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild: /mir-jenkins. ubuntu. com/job/ mir-ci/ 3284/rebuild
https:/