Mir

Merge lp:~raof/mir/fixish-wayland-keyboard into lp:mir

Proposed by Chris Halse Rogers on 2017-09-28
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
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Needs Fixing on 2017-10-05
Alan Griffiths 2017-09-28 Approve on 2017-09-28
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.

Fixes: https://bugs.launchpad.net/mir/+bug/1718968

To post a comment you must log in.
Alan Griffiths (alan-griffiths) wrote :

Works well enough, but looks like changes to mircore & mircommon ABI. We must do the necessary before release.

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

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

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

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

FAILED: Continuous integration, rev:4287
https://mir-jenkins.ubuntu.com/job/mir-ci/3705/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/5079/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5317/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5305/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5305/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5305/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/5123/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/5123/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/5123/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/5123/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/5123/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5123/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5123/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/5123/console

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

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

FAILED: Continuous integration, rev:4287
https://mir-jenkins.ubuntu.com/job/mir-ci/3706/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/5080/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5318/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5306/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5306/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5306/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/5125/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/5125/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/5125/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/5125/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/5125/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5125/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5125/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/5125/console

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

review: Needs Fixing (continuous-integration)
Alan Griffiths (alan-griffiths) wrote :

Unneccessary, conflicting change:

<<<<<<< TREE
struct MockWindowManagementPolicy : mir_test_framework::CanonicalWindowManagerPolicy,
                                    miral::WindowManagementPolicyAddendum2
=======
#if defined(__clang__)
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#endif
struct MockWindowManager : mir::shell::CanonicalWindowManager
>>>>>>> MERGE-SOURCE
{
<<<<<<< TREE
    MockWindowManagementPolicy(
        miral::WindowManagerTools const& tools,
        MockWindowManagementPolicy*& self) :
        mir_test_framework::CanonicalWindowManagerPolicy(tools)
    {
        self = this;
    }
=======
    using mir::shell::CanonicalWindowManager::CanonicalWindowManager;
#if defined(__clang__)
    #pragma GCC diagnostic pop
#endif
>>>>>>> MERGE-SOURCE

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

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

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

review: Needs Fixing (continuous-integration)
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://mir-jenkins.ubuntu.com/job/mir-autolanding/1453/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/5096/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/1588/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5334
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5321
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5321
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5321
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/5140/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/5140/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/5140/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/5140/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/5140/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5140
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5140/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5140
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5140/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/5140/console

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

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/1454/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/5097/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/1589/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/5335
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=artful/5322
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/5322
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/5322
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=artful/5141/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/5141/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=artful/5141/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/5141/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/5141/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5141
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=artful/5141/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5141
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=mesa,release=zesty/5141/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/5141/console

review: Needs Fixing (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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; }

Subscribers

People subscribed via source and target branches