Merge lp:~raof/mir/fixish-wayland-keyboard into lp:mir
- fixish-wayland-keyboard
- Merge into development-branch
Status: | Merged |
---|---|
Merged at revision: | 4280 |
Proposed branch: | lp:~raof/mir/fixish-wayland-keyboard |
Merge into: | lp:mir |
Diff against target: |
942 lines (+249/-123) 26 files modified
examples/miral-shell/decoration_provider.cpp (+2/-2) include/core/mir/anonymous_shm_file.h (+8/-26) include/core/mir/shm_file.h (+3/-9) src/common/fd/CMakeLists.txt (+0/-1) src/common/symbols.map (+0/-5) src/core/CMakeLists.txt (+11/-0) src/core/anonymous_shm_file.cpp (+42/-34) src/core/symbols.map (+25/-1) src/miral/application_authorizer.cpp (+1/-1) src/platforms/common/server/CMakeLists.txt (+0/-2) src/platforms/common/server/shm_buffer.cpp (+1/-1) src/platforms/common/server/shm_buffer.h (+2/-1) src/platforms/eglstream-kms/server/buffer_allocator.cpp (+2/-2) src/platforms/eglstream-kms/server/software_buffer.cpp (+2/-2) src/platforms/eglstream-kms/server/software_buffer.h (+3/-5) src/platforms/mesa/server/buffer_allocator.cpp (+2/-2) src/platforms/mesa/server/software_buffer.cpp (+2/-2) src/platforms/mesa/server/software_buffer.h (+3/-5) src/server/frontend/wayland/wayland_connector.cpp (+120/-3) src/server/scene/basic_surface.cpp (+1/-1) tests/mir_test_framework/stubbed_server_configuration.cpp (+3/-0) tests/miral/window_properties.cpp (+4/-4) tests/miral/workspaces.cpp (+3/-3) tests/unit-tests/graphics/test_anonymous_shm_file.cpp (+4/-6) tests/unit-tests/graphics/test_shm_buffer.cpp (+3/-3) tests/unit-tests/platforms/mesa/kms/test_software_buffer.cpp (+2/-2) |
To merge this branch: | bzr merge lp:~raof/mir/fixish-wayland-keyboard |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mir CI Bot | continuous-integration | Needs Fixing | |
Alan Griffiths | Approve | ||
Review via email: mp+331520@code.launchpad.net |
Commit message
WlKeyboard: Reconstruct xkbcommon state in the frontend.
This is a hack which should be replaced by exposing the information we need in the MirKeyEvent and in mf::Surface and…
This works for now by reconstructing xkbcommon state to serialise to the Wayland client. Wayland clients will *not* have the correct keymap, however, because we don't receive the MirKeymapEvent at an appropriate time.
Description of the change
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:4286
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: 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 : | # |
FAILED: Continuous integration, rev:4287
https:/
Executed test runs:
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:4287
https:/
Executed test runs:
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
Alan Griffiths (alan-griffiths) wrote : | # |
Unneccessary, conflicting change:
<<<<<<< TREE
struct MockWindowManag
=======
#if defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-
#endif
struct MockWindowManager : mir::shell:
>>>>>>> MERGE-SOURCE
{
<<<<<<< TREE
MockWindowM
{
self = this;
}
=======
using mir::shell:
#if defined(__clang__)
#pragma GCC diagnostic pop
#endif
>>>>>>> MERGE-SOURCE
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:4288
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
Alan Griffiths (alan-griffiths) wrote : | # |
Failures seem unrelated
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
Brandon Schaefer (brandontschaefer) : | # |
Preview Diff
1 | === modified file 'examples/miral-shell/decoration_provider.cpp' |
2 | --- examples/miral-shell/decoration_provider.cpp 2017-08-21 15:58:34 +0000 |
3 | +++ examples/miral-shell/decoration_provider.cpp 2017-09-29 15:32:28 +0000 |
4 | @@ -421,7 +421,7 @@ |
5 | |
6 | auto const title = info.name(); |
7 | |
8 | - enqueue_work([this, stream=data->stream, title, intensity]{ paint_surface(stream, title, intensity); }); |
9 | + enqueue_work([stream=data->stream, title, intensity]{ paint_surface(stream, title, intensity); }); |
10 | } |
11 | } |
12 | |
13 | @@ -534,7 +534,7 @@ |
14 | { |
15 | auto const title = window_info.name(); |
16 | |
17 | - enqueue_work([this, stream=data->stream, title, intensity=data->intensity.load()] |
18 | + enqueue_work([stream=data->stream, title, intensity=data->intensity.load()] |
19 | { paint_surface(stream, title, intensity); }); |
20 | } |
21 | } |
22 | |
23 | === renamed file 'src/platforms/common/server/anonymous_shm_file.h' => 'include/core/mir/anonymous_shm_file.h' |
24 | --- src/platforms/common/server/anonymous_shm_file.h 2017-07-28 17:00:43 +0000 |
25 | +++ include/core/mir/anonymous_shm_file.h 2017-09-29 15:32:28 +0000 |
26 | @@ -17,52 +17,34 @@ |
27 | * Alexandros Frantzis <alexandros.frantzis@canonical.com> |
28 | */ |
29 | |
30 | -#ifndef MIR_GRAPHICS_MESA_ANONYMOUS_SHM_FILE_H_ |
31 | -#define MIR_GRAPHICS_MESA_ANONYMOUS_SHM_FILE_H_ |
32 | +#ifndef MIR_CORE_ANONYMOUS_SHM_FILE_H_ |
33 | +#define MIR_CORE_ANONYMOUS_SHM_FILE_H_ |
34 | |
35 | #include "shm_file.h" |
36 | #include "mir/fd.h" |
37 | |
38 | namespace mir |
39 | { |
40 | -namespace graphics |
41 | -{ |
42 | -namespace common |
43 | -{ |
44 | |
45 | namespace detail |
46 | { |
47 | -class MapHandle |
48 | -{ |
49 | -public: |
50 | - MapHandle(int fd, size_t size); |
51 | - ~MapHandle() noexcept; |
52 | - |
53 | - operator void*() const; |
54 | - |
55 | -private: |
56 | - MapHandle(MapHandle const&) = delete; |
57 | - MapHandle& operator=(MapHandle const&) = delete; |
58 | - size_t const size; |
59 | - void* const mapping; |
60 | -}; |
61 | } |
62 | |
63 | class AnonymousShmFile : public ShmFile |
64 | { |
65 | public: |
66 | AnonymousShmFile(size_t size); |
67 | + ~AnonymousShmFile() noexcept; |
68 | |
69 | - void* base_ptr() const; |
70 | - int fd() const; |
71 | + void* base_ptr() const override; |
72 | + int fd() const override; |
73 | |
74 | private: |
75 | Fd const fd_; |
76 | - detail::MapHandle const mapping; |
77 | + class MapHandle; |
78 | + std::unique_ptr<MapHandle> const mapping; |
79 | }; |
80 | |
81 | } |
82 | -} |
83 | -} |
84 | |
85 | -#endif /* MIR_GRAPHICS_MESA_ANONYMOUS_SHM_FILE_H_ */ |
86 | +#endif /* MIR_CORE_ANONYMOUS_SHM_FILE_H_ */ |
87 | |
88 | === renamed file 'include/common/mir/fd.h' => 'include/core/mir/fd.h' |
89 | === renamed file 'src/platforms/common/server/shm_file.h' => 'include/core/mir/shm_file.h' |
90 | --- src/platforms/common/server/shm_file.h 2017-07-28 17:00:43 +0000 |
91 | +++ include/core/mir/shm_file.h 2017-09-29 15:32:28 +0000 |
92 | @@ -17,17 +17,13 @@ |
93 | * Alexandros Frantzis <alexandros.frantzis@canonical.com> |
94 | */ |
95 | |
96 | -#ifndef MIR_GRAPHICS_MESA_SHM_FILE_H_ |
97 | -#define MIR_GRAPHICS_MESA_SHM_FILE_H_ |
98 | +#ifndef MIR_CORE_SHM_FILE_H_ |
99 | +#define MIR_CORE_SHM_FILE_H_ |
100 | |
101 | #include <cstddef> |
102 | |
103 | namespace mir |
104 | { |
105 | -namespace graphics |
106 | -{ |
107 | -namespace common |
108 | -{ |
109 | |
110 | class ShmFile |
111 | { |
112 | @@ -44,7 +40,5 @@ |
113 | }; |
114 | |
115 | } |
116 | -} |
117 | -} |
118 | |
119 | -#endif /* MIR_GRAPHICS_MESA_SHM_FILE_H_ */ |
120 | +#endif /* MIR_CORE_SHM_FILE_H_ */ |
121 | |
122 | === modified file 'src/common/fd/CMakeLists.txt' |
123 | --- src/common/fd/CMakeLists.txt 2017-07-28 17:00:43 +0000 |
124 | +++ src/common/fd/CMakeLists.txt 2017-09-29 15:32:28 +0000 |
125 | @@ -15,7 +15,6 @@ |
126 | # Authored by: Kevin DuBois <kevin.dubois@canonical.com> |
127 | |
128 | add_library(mirsharedfd OBJECT |
129 | - fd.cpp |
130 | fd_socket_transmission.cpp |
131 | ) |
132 | |
133 | |
134 | === modified file 'src/common/symbols.map' |
135 | --- src/common/symbols.map 2017-05-08 03:04:26 +0000 |
136 | +++ src/common/symbols.map 2017-09-29 15:32:28 +0000 |
137 | @@ -31,9 +31,6 @@ |
138 | mir::dispatch::ThreadedDispatcher::remove_thread*; |
139 | mir::dispatch::ThreadedDispatcher::?ThreadedDispatcher*; |
140 | mir::dispatch::ThreadedDispatcher::ThreadedDispatcher*; |
141 | - mir::Fd::Fd*; |
142 | - mir::Fd::invalid*; |
143 | - mir::Fd::operator*; |
144 | mir::graphics::NativeBuffer::?NativeBuffer*; |
145 | mir::graphics::NativeBuffer::NativeBuffer*; |
146 | mir::graphics::NativeBuffer::operator*; |
147 | @@ -88,7 +85,6 @@ |
148 | typeinfo?for?mir::dispatch::ThreadedDispatcher; |
149 | typeinfo?for?mir::events::ContactState; |
150 | typeinfo?for?mir::events::InputDeviceState; |
151 | - typeinfo?for?mir::Fd; |
152 | typeinfo?for?mir::graphics::NativeBuffer; |
153 | typeinfo?for?mir::input::Keymap; |
154 | typeinfo?for?mir::IntOwnedFd; |
155 | @@ -107,7 +103,6 @@ |
156 | vtable?for?mir::dispatch::ThreadedDispatcher; |
157 | vtable?for?mir::events::ContactState; |
158 | vtable?for?mir::events::InputDeviceState; |
159 | - vtable?for?mir::Fd; |
160 | vtable?for?mir::graphics::NativeBuffer; |
161 | vtable?for?mir::input::Keymap; |
162 | vtable?for?mir::IntOwnedFd; |
163 | |
164 | === modified file 'src/core/CMakeLists.txt' |
165 | --- src/core/CMakeLists.txt 2017-06-16 10:14:10 +0000 |
166 | +++ src/core/CMakeLists.txt 2017-09-29 15:32:28 +0000 |
167 | @@ -4,13 +4,17 @@ |
168 | string (REPLACE " -pthread " " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
169 | |
170 | add_library(mircore SHARED |
171 | + anonymous_shm_file.cpp |
172 | fatal.cpp |
173 | + fd.cpp |
174 | geometry/rectangle.cpp |
175 | geometry/rectangles.cpp |
176 | geometry/ostream.cpp |
177 | + ${PROJECT_SOURCE_DIR}/include/core/mir/anonymous_shm_file.h |
178 | ${PROJECT_SOURCE_DIR}/include/core/mir/int_wrapper.h |
179 | ${PROJECT_SOURCE_DIR}/include/core/mir/optional_value.h |
180 | ${PROJECT_SOURCE_DIR}/include/core/mir/fatal.h |
181 | + ${PROJECT_SOURCE_DIR}/include/core/mir/fd.h |
182 | ${PROJECT_SOURCE_DIR}/include/core/mir/geometry/length.h |
183 | ${PROJECT_SOURCE_DIR}/include/core/mir/geometry/rectangle.h |
184 | ${PROJECT_SOURCE_DIR}/include/core/mir/geometry/point.h |
185 | @@ -19,10 +23,17 @@ |
186 | ${PROJECT_SOURCE_DIR}/include/core/mir/geometry/size.h |
187 | ${PROJECT_SOURCE_DIR}/include/core/mir/geometry/forward.h |
188 | ${PROJECT_SOURCE_DIR}/include/core/mir/geometry/dimensions.h |
189 | + ${PROJECT_SOURCE_DIR}/include/core/mir/shm_file.h |
190 | ${PROJECT_SOURCE_DIR}/include/core/mir_toolkit/common.h |
191 | ${PROJECT_SOURCE_DIR}/include/core/mir_toolkit/mir_version_number.h |
192 | ) |
193 | |
194 | +target_link_libraries( |
195 | + mircore |
196 | + |
197 | + ${Boost_SYSTEM_LIBRARY} |
198 | +) |
199 | + |
200 | set(symbol_map ${CMAKE_CURRENT_SOURCE_DIR}/symbols.map) |
201 | |
202 | set_target_properties(mircore |
203 | |
204 | === renamed file 'src/platforms/common/server/anonymous_shm_file.cpp' => 'src/core/anonymous_shm_file.cpp' |
205 | --- src/platforms/common/server/anonymous_shm_file.cpp 2017-07-28 17:00:43 +0000 |
206 | +++ src/core/anonymous_shm_file.cpp 2017-09-29 15:32:28 +0000 |
207 | @@ -17,7 +17,7 @@ |
208 | * Alexandros Frantzis <alexandros.frantzis@canonical.com> |
209 | */ |
210 | |
211 | -#include "anonymous_shm_file.h" |
212 | +#include "mir/anonymous_shm_file.h" |
213 | |
214 | #include <boost/throw_exception.hpp> |
215 | #include <boost/filesystem.hpp> |
216 | @@ -30,8 +30,6 @@ |
217 | #include <sys/mman.h> |
218 | #include <fcntl.h> |
219 | |
220 | -namespace mgc = mir::graphics::common; |
221 | - |
222 | namespace |
223 | { |
224 | |
225 | @@ -87,43 +85,53 @@ |
226 | * MapHandle * |
227 | *************/ |
228 | |
229 | -mgc::detail::MapHandle::MapHandle(int fd, size_t size) |
230 | - : size{size}, |
231 | - mapping{mmap(nullptr, size, PROT_READ|PROT_WRITE, |
232 | - MAP_SHARED, fd, 0)} |
233 | -{ |
234 | - if (mapping == MAP_FAILED) |
235 | - BOOST_THROW_EXCEPTION( |
236 | - std::system_error(errno, std::system_category(), "Failed to map file")); |
237 | -} |
238 | - |
239 | -mgc::detail::MapHandle::~MapHandle() noexcept |
240 | -{ |
241 | - munmap(mapping, size); |
242 | -} |
243 | - |
244 | -mgc::detail::MapHandle::operator void*() const |
245 | -{ |
246 | - return mapping; |
247 | - |
248 | -} |
249 | +class mir::AnonymousShmFile::MapHandle |
250 | +{ |
251 | +public: |
252 | + MapHandle(int fd, size_t size) |
253 | + : size{size}, |
254 | + mapping{mmap(nullptr, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)} |
255 | + { |
256 | + if (mapping == MAP_FAILED) |
257 | + BOOST_THROW_EXCEPTION( |
258 | + std::system_error(errno, std::system_category(), "Failed to map file")); |
259 | + } |
260 | + |
261 | + ~MapHandle() noexcept |
262 | + { |
263 | + munmap(mapping, size); |
264 | + } |
265 | + |
266 | + operator void*() const |
267 | + { |
268 | + return mapping; |
269 | + } |
270 | + |
271 | +private: |
272 | + MapHandle(MapHandle const&) = delete; |
273 | + MapHandle& operator=(MapHandle const&) = delete; |
274 | + size_t const size; |
275 | + void* const mapping; |
276 | +}; |
277 | |
278 | /******************** |
279 | * AnonymousShmFile * |
280 | ********************/ |
281 | |
282 | -mgc::AnonymousShmFile::AnonymousShmFile(size_t size) |
283 | +mir::AnonymousShmFile::AnonymousShmFile(size_t size) |
284 | : fd_{create_anonymous_file(size)}, |
285 | - mapping{fd_, size} |
286 | -{ |
287 | -} |
288 | - |
289 | -void* mgc::AnonymousShmFile::base_ptr() const |
290 | -{ |
291 | - return mapping; |
292 | -} |
293 | - |
294 | -int mgc::AnonymousShmFile::fd() const |
295 | + mapping{new MapHandle(fd_, size)} |
296 | +{ |
297 | +} |
298 | + |
299 | +mir::AnonymousShmFile::~AnonymousShmFile() noexcept = default; |
300 | + |
301 | +void* mir::AnonymousShmFile::base_ptr() const |
302 | +{ |
303 | + return *mapping; |
304 | +} |
305 | + |
306 | +int mir::AnonymousShmFile::fd() const |
307 | { |
308 | return fd_; |
309 | } |
310 | |
311 | === renamed file 'src/common/fd/fd.cpp' => 'src/core/fd.cpp' |
312 | === modified file 'src/core/symbols.map' |
313 | --- src/core/symbols.map 2017-05-08 03:04:26 +0000 |
314 | +++ src/core/symbols.map 2017-09-29 15:32:28 +0000 |
315 | @@ -47,5 +47,29 @@ |
316 | vtable?for?mir::geometry::Rectangles; |
317 | vtable?for?mir::geometry::Size; |
318 | }; |
319 | - local: *; |
320 | }; |
321 | + |
322 | +MIR_CORE_1.0 { |
323 | + global: |
324 | + extern "C++" { |
325 | + mir::Fd::Fd*; |
326 | + mir::Fd::invalid*; |
327 | + mir::Fd::operator*; |
328 | + mir::AnonymousShmFile::AnonymousShmFile*; |
329 | + mir::AnonymousShmFile::?AnonymousShmFile*; |
330 | + mir::AnonymousShmFile::base_ptr*; |
331 | + mir::AnonymousShmFile::fd*; |
332 | + mir::ShmFile::ShmFile*; |
333 | + mir::ShmFile::?ShmFile*; |
334 | + mir::ShmFile::base_ptr*; |
335 | + mir::ShmFile::fd*; |
336 | + |
337 | + typeinfo?for?mir::Fd; |
338 | + typeinfo?for?mir::AnonymousShmFile; |
339 | + typeinfo?for?mir::ShmFile; |
340 | + vtable?for?mir::Fd; |
341 | + vtable?for?mir::AnonymousShmFile; |
342 | + vtable?for?mir::ShmFile; |
343 | + }; |
344 | + local: *; |
345 | +} MIR_CORE_0.25; |
346 | \ No newline at end of file |
347 | |
348 | === modified file 'src/miral/application_authorizer.cpp' |
349 | --- src/miral/application_authorizer.cpp 2017-08-21 14:18:55 +0000 |
350 | +++ src/miral/application_authorizer.cpp 2017-09-29 15:32:28 +0000 |
351 | @@ -96,7 +96,7 @@ |
352 | |
353 | void miral::BasicSetApplicationAuthorizer::operator()(mir::Server& server) |
354 | { |
355 | - server.override_the_session_authorizer([this, &server]() |
356 | + server.override_the_session_authorizer([this]() |
357 | -> std::shared_ptr<mf::SessionAuthorizer> |
358 | { |
359 | auto wrapped = self->builder(); |
360 | |
361 | === modified file 'src/platforms/common/server/CMakeLists.txt' |
362 | --- src/platforms/common/server/CMakeLists.txt 2017-05-31 17:56:19 +0000 |
363 | +++ src/platforms/common/server/CMakeLists.txt 2017-09-29 15:32:28 +0000 |
364 | @@ -9,9 +9,7 @@ |
365 | |
366 | add_library(server_platform_common STATIC |
367 | platform_authentication_wrapper.cpp |
368 | - anonymous_shm_file.cpp |
369 | shm_buffer.cpp |
370 | - shm_file.h |
371 | ) |
372 | |
373 | target_link_libraries( |
374 | |
375 | === modified file 'src/platforms/common/server/shm_buffer.cpp' |
376 | --- src/platforms/common/server/shm_buffer.cpp 2017-07-28 17:00:43 +0000 |
377 | +++ src/platforms/common/server/shm_buffer.cpp 2017-09-29 15:32:28 +0000 |
378 | @@ -18,7 +18,7 @@ |
379 | */ |
380 | |
381 | #include "mir/graphics/gl_format.h" |
382 | -#include "shm_file.h" |
383 | +#include "mir/shm_file.h" |
384 | #include "shm_buffer.h" |
385 | #include "buffer_texture_binder.h" |
386 | |
387 | |
388 | === modified file 'src/platforms/common/server/shm_buffer.h' |
389 | --- src/platforms/common/server/shm_buffer.h 2017-07-28 17:00:43 +0000 |
390 | +++ src/platforms/common/server/shm_buffer.h 2017-09-29 15:32:28 +0000 |
391 | @@ -30,12 +30,13 @@ |
392 | |
393 | namespace mir |
394 | { |
395 | +class ShmFile; |
396 | + |
397 | namespace graphics |
398 | { |
399 | namespace common |
400 | { |
401 | |
402 | -class ShmFile; |
403 | |
404 | class ShmBuffer : public BufferBasic, public NativeBufferBase, |
405 | public renderer::gl::TextureSource, |
406 | |
407 | === modified file 'src/platforms/eglstream-kms/server/buffer_allocator.cpp' |
408 | --- src/platforms/eglstream-kms/server/buffer_allocator.cpp 2017-07-28 17:00:43 +0000 |
409 | +++ src/platforms/eglstream-kms/server/buffer_allocator.cpp 2017-09-29 15:32:28 +0000 |
410 | @@ -19,7 +19,7 @@ |
411 | |
412 | #include "buffer_allocator.h" |
413 | #include "buffer_texture_binder.h" |
414 | -#include "anonymous_shm_file.h" |
415 | +#include "mir/anonymous_shm_file.h" |
416 | #include "shm_buffer.h" |
417 | #include "mir/graphics/buffer_properties.h" |
418 | #include "software_buffer.h" |
419 | @@ -58,7 +58,7 @@ |
420 | auto const stride = geom::Stride{ MIR_BYTES_PER_PIXEL(format) * size.width.as_uint32_t() }; |
421 | size_t const size_in_bytes = stride.as_int() * size.height.as_int(); |
422 | return std::make_shared<mge::SoftwareBuffer>( |
423 | - std::make_unique<mgc::AnonymousShmFile>(size_in_bytes), size, format); |
424 | + std::make_unique<mir::AnonymousShmFile>(size_in_bytes), size, format); |
425 | } |
426 | |
427 | std::vector<MirPixelFormat> mge::BufferAllocator::supported_pixel_formats() |
428 | |
429 | === modified file 'src/platforms/eglstream-kms/server/software_buffer.cpp' |
430 | --- src/platforms/eglstream-kms/server/software_buffer.cpp 2017-07-28 17:00:43 +0000 |
431 | +++ src/platforms/eglstream-kms/server/software_buffer.cpp 2017-09-29 15:32:28 +0000 |
432 | @@ -17,7 +17,7 @@ |
433 | */ |
434 | |
435 | #include "software_buffer.h" |
436 | -#include "shm_file.h" |
437 | +#include "mir/shm_file.h" |
438 | #include "native_buffer.h" |
439 | |
440 | namespace mg = mir::graphics; |
441 | @@ -26,7 +26,7 @@ |
442 | namespace geom = mir::geometry; |
443 | |
444 | mge::SoftwareBuffer::SoftwareBuffer( |
445 | - std::unique_ptr<mgc::ShmFile> shm_file, |
446 | + std::unique_ptr<mir::ShmFile> shm_file, |
447 | geom::Size const& size, |
448 | MirPixelFormat const& pixel_format) : |
449 | ShmBuffer(std::move(shm_file), size, pixel_format), |
450 | |
451 | === modified file 'src/platforms/eglstream-kms/server/software_buffer.h' |
452 | --- src/platforms/eglstream-kms/server/software_buffer.h 2017-07-28 17:00:43 +0000 |
453 | +++ src/platforms/eglstream-kms/server/software_buffer.h 2017-09-29 15:32:28 +0000 |
454 | @@ -23,12 +23,10 @@ |
455 | |
456 | namespace mir |
457 | { |
458 | +class ShmFile; |
459 | + |
460 | namespace graphics |
461 | { |
462 | -namespace common |
463 | -{ |
464 | -class ShmFile; |
465 | -} |
466 | namespace eglstream |
467 | { |
468 | |
469 | @@ -36,7 +34,7 @@ |
470 | { |
471 | public: |
472 | SoftwareBuffer( |
473 | - std::unique_ptr<common::ShmFile> shm_file, |
474 | + std::unique_ptr<ShmFile> shm_file, |
475 | geometry::Size const& size, |
476 | MirPixelFormat const& pixel_format); |
477 | |
478 | |
479 | === modified file 'src/platforms/mesa/server/buffer_allocator.cpp' |
480 | --- src/platforms/mesa/server/buffer_allocator.cpp 2017-09-21 07:24:28 +0000 |
481 | +++ src/platforms/mesa/server/buffer_allocator.cpp 2017-09-29 15:32:28 +0000 |
482 | @@ -20,7 +20,7 @@ |
483 | #include "buffer_allocator.h" |
484 | #include "gbm_buffer.h" |
485 | #include "buffer_texture_binder.h" |
486 | -#include "anonymous_shm_file.h" |
487 | +#include "mir/anonymous_shm_file.h" |
488 | #include "shm_buffer.h" |
489 | #include "display_helpers.h" |
490 | #include "software_buffer.h" |
491 | @@ -295,7 +295,7 @@ |
492 | auto const stride = geom::Stride{MIR_BYTES_PER_PIXEL(format) * size.width.as_uint32_t()}; |
493 | size_t const size_in_bytes = stride.as_int() * size.height.as_int(); |
494 | return std::make_shared<mgm::SoftwareBuffer>( |
495 | - std::make_unique<mgc::AnonymousShmFile>(size_in_bytes), size, format); |
496 | + std::make_unique<mir::AnonymousShmFile>(size_in_bytes), size, format); |
497 | } |
498 | |
499 | std::vector<MirPixelFormat> mgm::BufferAllocator::supported_pixel_formats() |
500 | |
501 | === modified file 'src/platforms/mesa/server/software_buffer.cpp' |
502 | --- src/platforms/mesa/server/software_buffer.cpp 2017-07-28 17:00:43 +0000 |
503 | +++ src/platforms/mesa/server/software_buffer.cpp 2017-09-29 15:32:28 +0000 |
504 | @@ -17,7 +17,7 @@ |
505 | */ |
506 | |
507 | #include "software_buffer.h" |
508 | -#include "shm_file.h" |
509 | +#include "mir/shm_file.h" |
510 | #include "native_buffer.h" |
511 | |
512 | namespace mg = mir::graphics; |
513 | @@ -26,7 +26,7 @@ |
514 | namespace geom = mir::geometry; |
515 | |
516 | mgm::SoftwareBuffer::SoftwareBuffer( |
517 | - std::unique_ptr<mgc::ShmFile> shm_file, |
518 | + std::unique_ptr<mir::ShmFile> shm_file, |
519 | geom::Size const& size, |
520 | MirPixelFormat const& pixel_format) : |
521 | ShmBuffer(std::move(shm_file), size, pixel_format), |
522 | |
523 | === modified file 'src/platforms/mesa/server/software_buffer.h' |
524 | --- src/platforms/mesa/server/software_buffer.h 2017-07-28 17:00:43 +0000 |
525 | +++ src/platforms/mesa/server/software_buffer.h 2017-09-29 15:32:28 +0000 |
526 | @@ -23,12 +23,10 @@ |
527 | |
528 | namespace mir |
529 | { |
530 | +class ShmFile; |
531 | + |
532 | namespace graphics |
533 | { |
534 | -namespace common |
535 | -{ |
536 | -class ShmFile; |
537 | -} |
538 | namespace mesa |
539 | { |
540 | |
541 | @@ -36,7 +34,7 @@ |
542 | { |
543 | public: |
544 | SoftwareBuffer( |
545 | - std::unique_ptr<common::ShmFile> shm_file, |
546 | + std::unique_ptr<ShmFile> shm_file, |
547 | geometry::Size const& size, |
548 | MirPixelFormat const& pixel_format); |
549 | |
550 | |
551 | === modified file 'src/server/frontend/wayland/wayland_connector.cpp' |
552 | --- src/server/frontend/wayland/wayland_connector.cpp 2017-09-28 02:05:19 +0000 |
553 | +++ src/server/frontend/wayland/wayland_connector.cpp 2017-09-29 15:32:28 +0000 |
554 | @@ -53,6 +53,7 @@ |
555 | #include <functional> |
556 | #include <type_traits> |
557 | |
558 | +#include <xkbcommon/xkbcommon.h> |
559 | #include <linux/input.h> |
560 | #include <algorithm> |
561 | #include <iostream> |
562 | @@ -66,6 +67,7 @@ |
563 | #include "../../../platforms/common/server/shm_buffer.h" |
564 | |
565 | #include <sys/stat.h> |
566 | +#include "mir/anonymous_shm_file.h" |
567 | |
568 | namespace mf = mir::frontend; |
569 | namespace mg = mir::graphics; |
570 | @@ -799,10 +801,29 @@ |
571 | std::function<void(WlKeyboard*)> const& on_destroy, |
572 | std::shared_ptr<mir::Executor> const& executor) |
573 | : Keyboard(client, parent, id), |
574 | + keymap{nullptr, &xkb_keymap_unref}, |
575 | + state{nullptr, &xkb_state_unref}, |
576 | + context{xkb_context_new(XKB_CONTEXT_NO_FLAGS), &xkb_context_unref}, |
577 | executor{executor}, |
578 | on_destroy{on_destroy}, |
579 | destroyed{std::make_shared<bool>(false)} |
580 | { |
581 | + // TODO: We should really grab the keymap for the focused surface when |
582 | + // we receive focus. |
583 | + |
584 | + xkb_rule_names default_rules; |
585 | + memset(&default_rules, 0, sizeof(default_rules)); |
586 | + |
587 | + keymap = decltype(keymap){ |
588 | + xkb_keymap_new_from_names( |
589 | + context.get(), |
590 | + &default_rules, |
591 | + XKB_KEYMAP_COMPILE_NO_FLAGS), |
592 | + &xkb_keymap_unref}; |
593 | + |
594 | + state = decltype(state){ |
595 | + xkb_state_new(keymap.get()), |
596 | + &xkb_state_unref}; |
597 | } |
598 | |
599 | ~WlKeyboard() |
600 | @@ -820,13 +841,19 @@ |
601 | this |
602 | ] () |
603 | { |
604 | - int const serial = wl_display_next_serial(wl_client_get_display(client)); |
605 | - auto event = mir_event_get_input_event(ev); |
606 | - auto key_event = mir_input_event_get_keyboard_event(event); |
607 | + auto const serial = wl_display_next_serial(wl_client_get_display(client)); |
608 | + auto const event = mir_event_get_input_event(ev); |
609 | + auto const key_event = mir_input_event_get_keyboard_event(event); |
610 | + auto const scancode = mir_keyboard_event_scan_code(key_event); |
611 | + /* |
612 | + * HACK! Maintain our own XKB state, so we can serialise it for |
613 | + * wl_keyboard_send_modifiers |
614 | + */ |
615 | |
616 | switch (mir_keyboard_event_action(key_event)) |
617 | { |
618 | case mir_keyboard_action_up: |
619 | + xkb_state_update_key(state.get(), scancode + 8, XKB_KEY_UP); |
620 | wl_keyboard_send_key(resource, |
621 | serial, |
622 | mir_input_event_get_event_time(event) / 1000, |
623 | @@ -834,6 +861,7 @@ |
624 | WL_KEYBOARD_KEY_STATE_RELEASED); |
625 | break; |
626 | case mir_keyboard_action_down: |
627 | + xkb_state_update_key(state.get(), scancode + 8, XKB_KEY_DOWN); |
628 | wl_keyboard_send_key(resource, |
629 | serial, |
630 | mir_input_event_get_event_time(event) / 1000, |
631 | @@ -843,6 +871,38 @@ |
632 | default: |
633 | break; |
634 | } |
635 | + |
636 | + auto new_depressed_mods = xkb_state_serialize_mods( |
637 | + state.get(), |
638 | + XKB_STATE_MODS_DEPRESSED); |
639 | + auto new_latched_mods = xkb_state_serialize_mods( |
640 | + state.get(), |
641 | + XKB_STATE_MODS_LATCHED); |
642 | + auto new_locked_mods = xkb_state_serialize_mods( |
643 | + state.get(), |
644 | + XKB_STATE_MODS_LOCKED); |
645 | + auto new_group = xkb_state_serialize_layout( |
646 | + state.get(), |
647 | + XKB_STATE_LAYOUT_EFFECTIVE); |
648 | + |
649 | + if ((new_depressed_mods != mods_depressed) || |
650 | + (new_latched_mods != mods_latched) || |
651 | + (new_locked_mods != mods_locked) || |
652 | + (new_group != group)) |
653 | + { |
654 | + mods_depressed = new_depressed_mods; |
655 | + mods_latched = new_latched_mods; |
656 | + mods_locked = new_locked_mods; |
657 | + group = new_group; |
658 | + |
659 | + wl_keyboard_send_modifiers( |
660 | + resource, |
661 | + wl_display_get_serial(wl_client_get_display(client)), |
662 | + mods_depressed, |
663 | + mods_latched, |
664 | + mods_locked, |
665 | + group); |
666 | + } |
667 | })); |
668 | } |
669 | |
670 | @@ -861,6 +921,11 @@ |
671 | auto const serial = wl_display_next_serial(wl_client_get_display(client)); |
672 | if (focussed) |
673 | { |
674 | + /* |
675 | + * TODO: |
676 | + * *) Send the actual modifier state here. |
677 | + * *) Send the surface's keymap here. |
678 | + */ |
679 | wl_array key_state; |
680 | wl_array_init(&key_state); |
681 | wl_keyboard_send_enter(resource, serial, target, &key_state); |
682 | @@ -874,11 +939,47 @@ |
683 | } |
684 | } |
685 | |
686 | + void handle_event(MirKeymapEvent const* event, wl_resource* /*target*/) |
687 | + { |
688 | + char const* buffer; |
689 | + size_t length; |
690 | + |
691 | + mir_keymap_event_get_keymap_buffer(event, &buffer, &length); |
692 | + |
693 | + mir::AnonymousShmFile shm_buffer{length}; |
694 | + memcpy(shm_buffer.base_ptr(), buffer, length); |
695 | + |
696 | + wl_keyboard_send_keymap( |
697 | + resource, |
698 | + WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, |
699 | + shm_buffer.fd(), |
700 | + length); |
701 | + |
702 | + keymap = decltype(keymap)(xkb_keymap_new_from_buffer( |
703 | + context.get(), |
704 | + buffer, |
705 | + length, |
706 | + XKB_KEYMAP_FORMAT_TEXT_V1, |
707 | + XKB_KEYMAP_COMPILE_NO_FLAGS), |
708 | + &xkb_keymap_unref); |
709 | + |
710 | + state = decltype(state)(xkb_state_new(keymap.get()), &xkb_state_unref); |
711 | + } |
712 | + |
713 | private: |
714 | + std::unique_ptr<xkb_keymap, decltype(&xkb_keymap_unref)> keymap; |
715 | + std::unique_ptr<xkb_state, decltype(&xkb_state_unref)> state; |
716 | + std::unique_ptr<xkb_context, decltype(&xkb_context_unref)> const context; |
717 | + |
718 | std::shared_ptr<mir::Executor> const executor; |
719 | std::function<void(WlKeyboard*)> on_destroy; |
720 | std::shared_ptr<bool> const destroyed; |
721 | |
722 | + uint32_t mods_depressed{0}; |
723 | + uint32_t mods_latched{0}; |
724 | + uint32_t mods_locked{0}; |
725 | + uint32_t group{0}; |
726 | + |
727 | void release() override; |
728 | }; |
729 | |
730 | @@ -1202,6 +1303,15 @@ |
731 | } |
732 | } |
733 | |
734 | + void handle_event(MirKeymapEvent const* event, wl_resource* target) const |
735 | + { |
736 | + std::lock_guard<std::mutex> lock{mutex}; |
737 | + for (auto& listener : listeners) |
738 | + { |
739 | + listener->handle_event(event, target); |
740 | + } |
741 | + } |
742 | + |
743 | private: |
744 | std::mutex mutable mutex; |
745 | std::vector<InputInterface*> listeners; |
746 | @@ -1450,6 +1560,13 @@ |
747 | } |
748 | break; |
749 | } |
750 | + case mir_event_type_keymap: |
751 | + { |
752 | + auto const map_ev = mir_event_get_keymap_event(&event); |
753 | + |
754 | + seat->acquire_keyboard_reference(client).handle_event(map_ev, target); |
755 | + break; |
756 | + } |
757 | case mir_event_type_window: |
758 | { |
759 | auto const wev = mir_event_get_window_event(&event); |
760 | |
761 | === modified file 'src/server/scene/basic_surface.cpp' |
762 | --- src/server/scene/basic_surface.cpp 2017-08-30 15:38:42 +0000 |
763 | +++ src/server/scene/basic_surface.cpp 2017-09-29 15:32:28 +0000 |
764 | @@ -445,7 +445,7 @@ |
765 | { |
766 | std::unique_lock<std::mutex> lg(guard); |
767 | |
768 | - if (t < 0 || t > mir_window_types) |
769 | + if (t > mir_window_types) |
770 | { |
771 | BOOST_THROW_EXCEPTION(std::logic_error("Invalid surface " |
772 | "type.")); |
773 | |
774 | === modified file 'tests/mir_test_framework/stubbed_server_configuration.cpp' |
775 | --- tests/mir_test_framework/stubbed_server_configuration.cpp 2017-08-30 11:59:02 +0000 |
776 | +++ tests/mir_test_framework/stubbed_server_configuration.cpp 2017-09-29 15:32:28 +0000 |
777 | @@ -139,8 +139,11 @@ |
778 | |
779 | mir::shell::WindowManagerBuilder mir_test_framework::StubbedServerConfiguration::the_window_manager_builder() |
780 | { |
781 | +#pragma GCC diagnostic push |
782 | +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" |
783 | return [this](msh::FocusController* focus_controller) |
784 | { return std::make_shared<msh::CanonicalWindowManager>( |
785 | focus_controller, |
786 | the_shell_display_layout()); }; |
787 | +#pragma GCC diagnostic pop |
788 | } |
789 | |
790 | === modified file 'tests/miral/window_properties.cpp' |
791 | --- tests/miral/window_properties.cpp 2017-08-23 16:15:03 +0000 |
792 | +++ tests/miral/window_properties.cpp 2017-09-29 15:32:28 +0000 |
793 | @@ -98,7 +98,7 @@ |
794 | paint(surface); |
795 | ASSERT_TRUE(window_ready.wait_for(400ms)); |
796 | |
797 | - invoke_tools([&, this](WindowManagerTools& tools) |
798 | + invoke_tools([&](WindowManagerTools& tools) |
799 | { |
800 | EXPECT_THAT(tools.info_for(tools.active_window()).shell_chrome(), Eq(mir_shell_chrome_normal)); |
801 | }); |
802 | @@ -115,7 +115,7 @@ |
803 | paint(surface); |
804 | ASSERT_TRUE(window_ready.wait_for(400ms)); |
805 | |
806 | - invoke_tools([&, this](WindowManagerTools& tools) |
807 | + invoke_tools([&](WindowManagerTools& tools) |
808 | { |
809 | EXPECT_THAT(tools.info_for(tools.active_window()).shell_chrome(), Eq(mir_shell_chrome_low)); |
810 | }); |
811 | @@ -136,7 +136,7 @@ |
812 | |
813 | ASSERT_TRUE(window_ready.wait_for(400ms)); |
814 | |
815 | - invoke_tools([&, this](WindowManagerTools& tools) |
816 | + invoke_tools([&](WindowManagerTools& tools) |
817 | { |
818 | EXPECT_THAT(tools.info_for(tools.active_window()).shell_chrome(), Eq(mir_shell_chrome_low)); |
819 | }); |
820 | @@ -157,7 +157,7 @@ |
821 | paint(surface); |
822 | ASSERT_TRUE(window_ready.wait_for(400ms)); |
823 | |
824 | - invoke_tools([&, this](WindowManagerTools& tools) |
825 | + invoke_tools([&](WindowManagerTools& tools) |
826 | { |
827 | EXPECT_THAT(tools.info_for(tools.active_window()).shell_chrome(), Eq(mir_shell_chrome_normal)); |
828 | }); |
829 | |
830 | === modified file 'tests/miral/workspaces.cpp' |
831 | --- tests/miral/workspaces.cpp 2017-08-23 16:15:03 +0000 |
832 | +++ tests/miral/workspaces.cpp 2017-09-29 15:32:28 +0000 |
833 | @@ -295,12 +295,12 @@ |
834 | auto const client_window = create_window(original_tree); |
835 | auto const original_window= server_window(original_tree); |
836 | |
837 | - invoke_tools([&, this](WindowManagerTools& tools) |
838 | + invoke_tools([&](WindowManagerTools& tools) |
839 | { tools.add_tree_to_workspace(original_window, workspace); }); |
840 | |
841 | - invoke_tools([&, this](WindowManagerTools& tools) |
842 | + invoke_tools([&](WindowManagerTools& tools) |
843 | { tools.add_tree_to_workspace(server_window(top_level), workspace); }); |
844 | - invoke_tools([&, this](WindowManagerTools& tools) |
845 | + invoke_tools([&](WindowManagerTools& tools) |
846 | { tools.remove_tree_from_workspace(server_window(top_level), workspace); }); |
847 | |
848 | EXPECT_THAT(windows_in_workspace(workspace), ElementsAre(original_window)); |
849 | |
850 | === modified file 'tests/unit-tests/graphics/test_anonymous_shm_file.cpp' |
851 | --- tests/unit-tests/graphics/test_anonymous_shm_file.cpp 2017-07-28 17:00:43 +0000 |
852 | +++ tests/unit-tests/graphics/test_anonymous_shm_file.cpp 2017-09-29 15:32:28 +0000 |
853 | @@ -16,16 +16,14 @@ |
854 | * Authored by: Alexandros Frantzis <alexandros.frantzis@canonical.com> |
855 | */ |
856 | |
857 | -#include "src/platforms/common/server/anonymous_shm_file.h" |
858 | +#include "mir/anonymous_shm_file.h" |
859 | #include <gtest/gtest.h> |
860 | |
861 | -namespace mgc = mir::graphics::common; |
862 | - |
863 | TEST(AnonymousShmFile, is_created) |
864 | { |
865 | size_t const file_size{100}; |
866 | |
867 | - mgc::AnonymousShmFile shm_file{file_size}; |
868 | + mir::AnonymousShmFile shm_file{file_size}; |
869 | |
870 | EXPECT_GE(shm_file.fd(), 0); |
871 | } |
872 | @@ -34,7 +32,7 @@ |
873 | { |
874 | size_t const file_size{100}; |
875 | |
876 | - mgc::AnonymousShmFile shm_file{file_size}; |
877 | + mir::AnonymousShmFile shm_file{file_size}; |
878 | |
879 | struct stat stat; |
880 | fstat(shm_file.fd(), &stat); |
881 | @@ -46,7 +44,7 @@ |
882 | { |
883 | size_t const file_size{100}; |
884 | |
885 | - mgc::AnonymousShmFile shm_file{file_size}; |
886 | + mir::AnonymousShmFile shm_file{file_size}; |
887 | |
888 | auto base_ptr = reinterpret_cast<uint8_t*>(shm_file.base_ptr()); |
889 | |
890 | |
891 | === modified file 'tests/unit-tests/graphics/test_shm_buffer.cpp' |
892 | --- tests/unit-tests/graphics/test_shm_buffer.cpp 2017-07-28 17:00:43 +0000 |
893 | +++ tests/unit-tests/graphics/test_shm_buffer.cpp 2017-09-29 15:32:28 +0000 |
894 | @@ -17,7 +17,7 @@ |
895 | */ |
896 | |
897 | #include "src/platforms/common/server/shm_buffer.h" |
898 | -#include "src/platforms/common/server/shm_file.h" |
899 | +#include "mir/shm_file.h" |
900 | |
901 | #include "mir/test/doubles/mock_gl.h" |
902 | |
903 | @@ -35,7 +35,7 @@ |
904 | namespace |
905 | { |
906 | |
907 | -struct StubShmFile : public mgc::ShmFile |
908 | +struct StubShmFile : public mir::ShmFile |
909 | { |
910 | void* base_ptr() const { return fake_mapping; } |
911 | int fd() const { return fake_fd; } |
912 | @@ -47,7 +47,7 @@ |
913 | struct PlatformlessShmBuffer : mgc::ShmBuffer |
914 | { |
915 | PlatformlessShmBuffer( |
916 | - std::unique_ptr<mgc::ShmFile> shm_file, |
917 | + std::unique_ptr<mir::ShmFile> shm_file, |
918 | geom::Size const& size, |
919 | MirPixelFormat const& pixel_format) : |
920 | ShmBuffer(std::move(shm_file), size, pixel_format) |
921 | |
922 | === modified file 'tests/unit-tests/platforms/mesa/kms/test_software_buffer.cpp' |
923 | --- tests/unit-tests/platforms/mesa/kms/test_software_buffer.cpp 2017-07-28 17:00:43 +0000 |
924 | +++ tests/unit-tests/platforms/mesa/kms/test_software_buffer.cpp 2017-09-29 15:32:28 +0000 |
925 | @@ -18,7 +18,7 @@ |
926 | |
927 | #include "src/platforms/mesa/server/software_buffer.h" |
928 | #include "src/platforms/mesa/include/native_buffer.h" |
929 | -#include "src/platforms/common/server/shm_file.h" |
930 | +#include "mir/shm_file.h" |
931 | |
932 | #include <gtest/gtest.h> |
933 | #include <gmock/gmock.h> |
934 | @@ -29,7 +29,7 @@ |
935 | |
936 | namespace |
937 | { |
938 | -struct StubShmFile : public mgc::ShmFile |
939 | +struct StubShmFile : public mir::ShmFile |
940 | { |
941 | void* base_ptr() const { return fake_mapping; } |
942 | int fd() const { return fake_fd; } |
Works well enough, but looks like changes to mircore & mircommon ABI. We must do the necessary before release.