Merge lp:~albaguirre/mir/add-mirroring-support into lp:mir
- add-mirroring-support
- Merge into development-branch
Status: | Merged |
---|---|
Approved by: | Brandon Schaefer |
Approved revision: | no longer in the source branch. |
Merged at revision: | 3430 |
Proposed branch: | lp:~albaguirre/mir/add-mirroring-support |
Merge into: | lp:mir |
Diff against target: |
574 lines (+142/-47) 27 files modified
include/common/mir_toolkit/common.h (+8/-0) include/platform/mir/graphics/display_buffer.h (+11/-0) include/test/mir/test/doubles/null_display_buffer.h (+1/-0) playground/demo-shell/demo_compositor.cpp (+1/-1) src/include/server/mir/compositor/renderer.h (+3/-1) src/platforms/android/server/display_buffer.cpp (+5/-0) src/platforms/android/server/display_buffer.h (+1/-0) src/platforms/mesa/server/kms/display_buffer.cpp (+5/-0) src/platforms/mesa/server/kms/display_buffer.h (+1/-0) src/platforms/mesa/server/x11/graphics/display_buffer.cpp (+5/-0) src/platforms/mesa/server/x11/graphics/display_buffer.h (+1/-0) src/renderers/gl/renderer.cpp (+56/-21) src/renderers/gl/renderer.h (+5/-4) src/server/compositor/default_display_buffer_compositor.cpp (+1/-1) src/server/compositor/screencast_display_buffer.cpp (+5/-0) src/server/compositor/screencast_display_buffer.h (+2/-0) src/server/graphics/nested/display_buffer.cpp (+5/-0) src/server/graphics/nested/display_buffer.h (+1/-0) src/server/graphics/offscreen/display_buffer.cpp (+5/-0) src/server/graphics/offscreen/display_buffer.h (+1/-0) src/server/server.cpp (+1/-2) src/server/symbols.map (+1/-1) tests/include/mir/test/doubles/mock_display_buffer.h (+1/-0) tests/include/mir/test/doubles/mock_renderer.h (+1/-1) tests/include/mir/test/doubles/stub_renderer.h (+3/-11) tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp (+11/-4) tests/unit-tests/graphics/android/test_display_group.cpp (+1/-0) |
To merge this branch: | bzr merge lp:~albaguirre/mir/add-mirroring-support |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mir CI Bot | continuous-integration | Approve | |
Brandon Schaefer (community) | Approve | ||
Cemil Azizoglu (community) | Approve | ||
Review via email: mp+290264@code.launchpad.net |
Commit message
Add support for vertical/horizontal mirroring.
Description of the change
Will be useful to screencasting clients on android platforms, where a screencast buffers can be read directly by the client; currently android-platform screencasting clients have to read bottom-up to unflip rendering.
Mir CI Bot (mir-ci-bot) wrote : | # |
Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:3423
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: 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:/
Alberto Aguirre (albaguirre) wrote : | # |
"01:32:26 Slave went offline during the build
01:32:26 ERROR: Connection was broken: java.io.
01:32:26 at org.jenkinsci.
01:32:26 at java.util.
01:32:26 at java.util.
01:32:26 at hudson.
01:32:26 at jenkins.
01:32:26 at java.util.
01:32:26 at java.util.
01:32:26 at java.util.
01:32:26 at java.util.
01:32:26 at java.lang.
Umm what's going on with the devices?
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:3423
https:/
Executed test runs:
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:/
Click here to trigger a rebuild:
https:/
Cemil Azizoglu (cemil-azizoglu) wrote : | # |
Ok.
Nit:
s/appplied/applied
83 + // Mirroring should be appplied after orientation
Brandon Schaefer (brandontschaefer) wrote : | # |
+#include <iostream> :)
Also the set_rotation is public, even though the comment state it *shouldnt* be used else where. We are sure this doesnt break ABI for some random reason u8 is using it?
Alberto Aguirre (albaguirre) wrote : | # |
The headers for the renderer are not published. But in any case the server ABI has been bumped already.
"+#include <iostream> :)"
Fixed :)
Brandon Schaefer (brandontschaefer) wrote : | # |
LGTM
Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:3425
https:/
Executed test runs:
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:/
Click here to trigger a rebuild:
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:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Mir CI Bot (mir-ci-bot) : | # |
Preview Diff
1 | === modified file 'include/common/mir_toolkit/common.h' |
2 | --- include/common/mir_toolkit/common.h 2016-01-29 08:18:22 +0000 |
3 | +++ include/common/mir_toolkit/common.h 2016-03-29 17:48:29 +0000 |
4 | @@ -169,6 +169,14 @@ |
5 | mir_orientation_right = 270 |
6 | } MirOrientation; |
7 | |
8 | +/** Mirroring axis relative to the "natural" orientation of the display */ |
9 | +typedef enum MirMirrorMode |
10 | +{ |
11 | + mir_mirror_mode_none, |
12 | + mir_mirror_mode_vertical, |
13 | + mir_mirror_mode_horizontal |
14 | +} MirMirrorMode; |
15 | + |
16 | typedef enum MirOrientationMode |
17 | { |
18 | mir_orientation_mode_portrait = 1 << 0, |
19 | |
20 | === modified file 'include/platform/mir/graphics/display_buffer.h' |
21 | --- include/platform/mir/graphics/display_buffer.h 2016-01-29 08:18:22 +0000 |
22 | +++ include/platform/mir/graphics/display_buffer.h 2016-03-29 17:48:29 +0000 |
23 | @@ -79,6 +79,17 @@ |
24 | */ |
25 | virtual MirOrientation orientation() const = 0; |
26 | |
27 | + /** Returns the mirror mode of the display buffer relative to orientation |
28 | + * |
29 | + * If your DisplayBuffer can do the mirroring itself then this will |
30 | + * always return mir_mirror_mode_none. If the DisplayBuffer does not |
31 | + * implement the mirroring itself then this function will return the |
32 | + * mirror mode the renderer must do after rotation to make things |
33 | + * "look right". |
34 | + * |
35 | + */ |
36 | + virtual MirMirrorMode mirror_mode() const = 0; |
37 | + |
38 | /** Returns a pointer to the native display buffer object backing this |
39 | * display buffer. |
40 | * |
41 | |
42 | === modified file 'include/test/mir/test/doubles/null_display_buffer.h' |
43 | --- include/test/mir/test/doubles/null_display_buffer.h 2016-01-29 08:18:22 +0000 |
44 | +++ include/test/mir/test/doubles/null_display_buffer.h 2016-03-29 17:48:29 +0000 |
45 | @@ -34,6 +34,7 @@ |
46 | geometry::Rectangle view_area() const override { return geometry::Rectangle(); } |
47 | bool post_renderables_if_optimizable(graphics::RenderableList const&) override { return false; } |
48 | MirOrientation orientation() const override { return mir_orientation_normal; } |
49 | + MirMirrorMode mirror_mode() const override { return mir_mirror_mode_none; } |
50 | NativeDisplayBuffer* native_display_buffer() override { return this; } |
51 | }; |
52 | |
53 | |
54 | === modified file 'playground/demo-shell/demo_compositor.cpp' |
55 | --- playground/demo-shell/demo_compositor.cpp 2016-01-29 08:18:22 +0000 |
56 | +++ playground/demo-shell/demo_compositor.cpp 2016-03-29 17:48:29 +0000 |
57 | @@ -125,7 +125,7 @@ |
58 | } |
59 | else |
60 | { |
61 | - renderer.set_rotation(display_buffer.orientation()); |
62 | + renderer.set_output_transform(display_buffer.orientation(), display_buffer.mirror_mode()); |
63 | renderer.set_viewport(viewport); |
64 | renderer.begin(std::move(decorated)); |
65 | renderer.render(renderable_list); |
66 | |
67 | === modified file 'src/include/server/mir/compositor/renderer.h' |
68 | --- src/include/server/mir/compositor/renderer.h 2015-02-22 07:46:25 +0000 |
69 | +++ src/include/server/mir/compositor/renderer.h 2016-03-29 17:48:29 +0000 |
70 | @@ -21,6 +21,7 @@ |
71 | |
72 | #include "mir/geometry/rectangle.h" |
73 | #include "mir/graphics/renderable.h" |
74 | +#include <mir_toolkit/common.h> |
75 | |
76 | namespace mir |
77 | { |
78 | @@ -35,7 +36,8 @@ |
79 | virtual ~Renderer() = default; |
80 | |
81 | virtual void set_viewport(geometry::Rectangle const& rect) = 0; |
82 | - virtual void set_rotation(float degrees) = 0; |
83 | + // Mirroring is to be applied after orientation |
84 | + virtual void set_output_transform(MirOrientation orientation, MirMirrorMode mode) = 0; |
85 | virtual void render(graphics::RenderableList const&) const = 0; |
86 | virtual void suspend() = 0; // called when render() is skipped |
87 | |
88 | |
89 | === modified file 'src/platforms/android/server/display_buffer.cpp' |
90 | --- src/platforms/android/server/display_buffer.cpp 2016-03-23 06:39:56 +0000 |
91 | +++ src/platforms/android/server/display_buffer.cpp 2016-03-29 17:48:29 +0000 |
92 | @@ -114,6 +114,11 @@ |
93 | return orientation_; |
94 | } |
95 | |
96 | +MirMirrorMode mga::DisplayBuffer::mirror_mode() const |
97 | +{ |
98 | + return mir_mirror_mode_none; |
99 | +} |
100 | + |
101 | void mga::DisplayBuffer::configure(MirPowerMode power_mode, MirOrientation orientation, geom::Displacement offset) |
102 | { |
103 | power_mode_ = power_mode; |
104 | |
105 | === modified file 'src/platforms/android/server/display_buffer.h' |
106 | --- src/platforms/android/server/display_buffer.h 2016-01-29 08:18:22 +0000 |
107 | +++ src/platforms/android/server/display_buffer.h 2016-03-29 17:48:29 +0000 |
108 | @@ -66,6 +66,7 @@ |
109 | bool post_renderables_if_optimizable(RenderableList const& renderlist) override; |
110 | |
111 | MirOrientation orientation() const override; |
112 | + MirMirrorMode mirror_mode() const override; |
113 | NativeDisplayBuffer* native_display_buffer() override; |
114 | |
115 | void configure(MirPowerMode power_mode, MirOrientation orientation, geometry::Displacement) override; |
116 | |
117 | === modified file 'src/platforms/mesa/server/kms/display_buffer.cpp' |
118 | --- src/platforms/mesa/server/kms/display_buffer.cpp 2016-01-29 08:18:22 +0000 |
119 | +++ src/platforms/mesa/server/kms/display_buffer.cpp 2016-03-29 17:48:29 +0000 |
120 | @@ -186,6 +186,11 @@ |
121 | return rotation; |
122 | } |
123 | |
124 | +MirMirrorMode mgm::DisplayBuffer::mirror_mode() const |
125 | +{ |
126 | + return mir_mirror_mode_none; |
127 | +} |
128 | + |
129 | void mgm::DisplayBuffer::set_orientation(MirOrientation const rot, geometry::Rectangle const& a) |
130 | { |
131 | rotation = rot; |
132 | |
133 | === modified file 'src/platforms/mesa/server/kms/display_buffer.h' |
134 | --- src/platforms/mesa/server/kms/display_buffer.h 2016-01-29 08:18:22 +0000 |
135 | +++ src/platforms/mesa/server/kms/display_buffer.h 2016-03-29 17:48:29 +0000 |
136 | @@ -74,6 +74,7 @@ |
137 | std::chrono::milliseconds recommended_sleep() const override; |
138 | |
139 | MirOrientation orientation() const override; |
140 | + MirMirrorMode mirror_mode() const override; |
141 | NativeDisplayBuffer* native_display_buffer() override; |
142 | |
143 | void set_orientation(MirOrientation const rot, geometry::Rectangle const& a); |
144 | |
145 | === modified file 'src/platforms/mesa/server/x11/graphics/display_buffer.cpp' |
146 | --- src/platforms/mesa/server/x11/graphics/display_buffer.cpp 2016-01-29 08:18:22 +0000 |
147 | +++ src/platforms/mesa/server/x11/graphics/display_buffer.cpp 2016-03-29 17:48:29 +0000 |
148 | @@ -72,6 +72,11 @@ |
149 | return orientation_; |
150 | } |
151 | |
152 | +MirMirrorMode mgx::DisplayBuffer::mirror_mode() const |
153 | +{ |
154 | + return mir_mirror_mode_none; |
155 | +} |
156 | + |
157 | void mgx::DisplayBuffer::set_orientation(MirOrientation const new_orientation) |
158 | { |
159 | orientation_ = new_orientation; |
160 | |
161 | === modified file 'src/platforms/mesa/server/x11/graphics/display_buffer.h' |
162 | --- src/platforms/mesa/server/x11/graphics/display_buffer.h 2016-01-29 08:18:22 +0000 |
163 | +++ src/platforms/mesa/server/x11/graphics/display_buffer.h 2016-03-29 17:48:29 +0000 |
164 | @@ -53,6 +53,7 @@ |
165 | void set_orientation(MirOrientation const new_orientation); |
166 | |
167 | MirOrientation orientation() const override; |
168 | + MirMirrorMode mirror_mode() const override; |
169 | NativeDisplayBuffer* native_display_buffer() override; |
170 | |
171 | private: |
172 | |
173 | === modified file 'src/renderers/gl/renderer.cpp' |
174 | --- src/renderers/gl/renderer.cpp 2016-01-29 08:18:22 +0000 |
175 | +++ src/renderers/gl/renderer.cpp 2016-03-29 17:48:29 +0000 |
176 | @@ -43,6 +43,40 @@ |
177 | namespace mrg = mir::renderer::gl; |
178 | namespace geom = mir::geometry; |
179 | |
180 | +namespace |
181 | +{ |
182 | +float cos_for(MirOrientation orientation) |
183 | +{ |
184 | + switch(orientation) |
185 | + { |
186 | + case mir_orientation_normal: |
187 | + return 1.0f; |
188 | + case mir_orientation_inverted: |
189 | + return -1.0f; |
190 | + case mir_orientation_left: |
191 | + case mir_orientation_right: |
192 | + return 0.0f; |
193 | + default: |
194 | + BOOST_THROW_EXCEPTION(std::logic_error("Invalid orientation")); |
195 | + } |
196 | +} |
197 | + |
198 | +float sine_for(MirOrientation orientation) |
199 | +{ |
200 | + switch(orientation) |
201 | + { |
202 | + case mir_orientation_left: |
203 | + return 1.0f; |
204 | + case mir_orientation_right: |
205 | + return -1.0f; |
206 | + case mir_orientation_normal: |
207 | + case mir_orientation_inverted: |
208 | + return 0.0f; |
209 | + default: |
210 | + BOOST_THROW_EXCEPTION(std::logic_error("Invalid orientation")); |
211 | + } |
212 | +} |
213 | +} |
214 | mrg::CurrentRenderTarget::CurrentRenderTarget(mg::DisplayBuffer* display_buffer) |
215 | : render_target{ |
216 | dynamic_cast<renderer::gl::RenderTarget*>(display_buffer->native_display_buffer())} |
217 | @@ -126,7 +160,8 @@ |
218 | default_program(family.add_program(vshader, default_fshader)), |
219 | alpha_program(family.add_program(vshader, alpha_fshader)), |
220 | texture_cache(mgl::DefaultProgramFactory().create_texture_cache()), |
221 | - rotation(NAN) // ensure the first set_rotation succeeds |
222 | + orientation(mir_orientation_normal), |
223 | + mirror_mode(mir_mirror_mode_none) |
224 | { |
225 | EGLDisplay disp = eglGetCurrentDisplay(); |
226 | if (disp != EGL_NO_DISPLAY) |
227 | @@ -177,7 +212,6 @@ |
228 | glBindBuffer(GL_ARRAY_BUFFER, 0); |
229 | |
230 | set_viewport(display_buffer.view_area()); |
231 | - set_rotation(0.0f); |
232 | } |
233 | |
234 | mrg::Renderer::~Renderer() |
235 | @@ -218,7 +252,7 @@ |
236 | prog.last_used_frameno = frameno; |
237 | glUniform1i(prog.tex_uniform, 0); |
238 | glUniformMatrix4fv(prog.display_transform_uniform, 1, GL_FALSE, |
239 | - glm::value_ptr(screen_rotation)); |
240 | + glm::value_ptr(display_transform)); |
241 | glUniformMatrix4fv(prog.screen_to_gl_coords_uniform, 1, GL_FALSE, |
242 | glm::value_ptr(screen_to_gl_coords)); |
243 | } |
244 | @@ -356,27 +390,28 @@ |
245 | viewport = rect; |
246 | } |
247 | |
248 | -void mrg::Renderer::set_rotation(float degrees) |
249 | +void mrg::Renderer::set_output_transform(MirOrientation new_orientation, MirMirrorMode new_mirror_mode) |
250 | { |
251 | - if (degrees == rotation) |
252 | + if (new_orientation == orientation && new_mirror_mode == mirror_mode) |
253 | return; |
254 | |
255 | - float rad = degrees * M_PI / 180.0f; |
256 | - GLfloat cos = cosf(rad); |
257 | - GLfloat sin = sinf(rad); |
258 | - |
259 | - /* |
260 | - * Transposed rotation matrix. You're reading it as transposed just |
261 | - * because the C language is row-major. OpenGL however will load it as |
262 | - * column-major. This is necessary because glUniformMatrix4fv in ES |
263 | - * does not support the 'transpose' parameter, requiring it be GL_FALSE. |
264 | - */ |
265 | - screen_rotation = {cos, sin, 0.0f, 0.0f, |
266 | - -sin, cos, 0.0f, 0.0f, |
267 | - 0.0f, 0.0f, 1.0f, 0.0f, |
268 | - 0.0f, 0.0f, 0.0f, 1.0f}; |
269 | - |
270 | - rotation = degrees; |
271 | + GLfloat const cos = cos_for(new_orientation); |
272 | + GLfloat const sin = sine_for(new_orientation); |
273 | + |
274 | + glm::mat2 rotation_matrix(cos, sin, -sin, cos); |
275 | + glm::mat2 mirror_matrix; |
276 | + if (new_mirror_mode == mir_mirror_mode_horizontal) |
277 | + { |
278 | + mirror_matrix[0][0] = -1.0f; |
279 | + } |
280 | + else if (new_mirror_mode == mir_mirror_mode_vertical) |
281 | + { |
282 | + mirror_matrix[1][1] = -1.0f; |
283 | + } |
284 | + |
285 | + display_transform = glm::mat4(mirror_matrix*rotation_matrix); |
286 | + orientation = new_orientation; |
287 | + mirror_mode = new_mirror_mode; |
288 | } |
289 | |
290 | void mrg::Renderer::suspend() |
291 | |
292 | === modified file 'src/renderers/gl/renderer.h' |
293 | --- src/renderers/gl/renderer.h 2016-01-29 08:18:22 +0000 |
294 | +++ src/renderers/gl/renderer.h 2016-03-29 17:48:29 +0000 |
295 | @@ -63,7 +63,7 @@ |
296 | |
297 | // These are called with a valid GL context: |
298 | void set_viewport(geometry::Rectangle const& rect) override; |
299 | - void set_rotation(float degrees) override; |
300 | + void set_output_transform(MirOrientation orientation, MirMirrorMode mode) override; |
301 | void render(graphics::RenderableList const&) const override; |
302 | |
303 | // This is called _without_ a GL context: |
304 | @@ -123,10 +123,11 @@ |
305 | |
306 | private: |
307 | std::unique_ptr<mir::gl::TextureCache> const texture_cache; |
308 | - float rotation; |
309 | + MirOrientation orientation; |
310 | + MirMirrorMode mirror_mode; |
311 | geometry::Rectangle viewport; |
312 | - glm::mat4 screen_to_gl_coords, screen_rotation; |
313 | - |
314 | + glm::mat4 screen_to_gl_coords; |
315 | + glm::mat4 display_transform; |
316 | std::vector<mir::gl::Primitive> mutable primitives; |
317 | }; |
318 | |
319 | |
320 | === modified file 'src/server/compositor/default_display_buffer_compositor.cpp' |
321 | --- src/server/compositor/default_display_buffer_compositor.cpp 2016-03-23 06:39:56 +0000 |
322 | +++ src/server/compositor/default_display_buffer_compositor.cpp 2016-03-29 17:48:29 +0000 |
323 | @@ -79,7 +79,7 @@ |
324 | } |
325 | else |
326 | { |
327 | - renderer->set_rotation(display_buffer.orientation()); |
328 | + renderer->set_output_transform(display_buffer.orientation(), display_buffer.mirror_mode()); |
329 | renderer->render(renderable_list); |
330 | |
331 | report->renderables_in_frame(this, renderable_list); |
332 | |
333 | === modified file 'src/server/compositor/screencast_display_buffer.cpp' |
334 | --- src/server/compositor/screencast_display_buffer.cpp 2016-01-29 08:18:22 +0000 |
335 | +++ src/server/compositor/screencast_display_buffer.cpp 2016-03-29 17:48:29 +0000 |
336 | @@ -107,6 +107,11 @@ |
337 | return mir_orientation_normal; |
338 | } |
339 | |
340 | +MirMirrorMode mc::ScreencastDisplayBuffer::mirror_mode() const |
341 | +{ |
342 | + return mir_mirror_mode_none; |
343 | +} |
344 | + |
345 | mg::NativeDisplayBuffer* mc::ScreencastDisplayBuffer::native_display_buffer() |
346 | { |
347 | return this; |
348 | |
349 | === modified file 'src/server/compositor/screencast_display_buffer.h' |
350 | --- src/server/compositor/screencast_display_buffer.h 2016-01-29 08:18:22 +0000 |
351 | +++ src/server/compositor/screencast_display_buffer.h 2016-03-29 17:48:29 +0000 |
352 | @@ -69,6 +69,8 @@ |
353 | |
354 | MirOrientation orientation() const override; |
355 | |
356 | + MirMirrorMode mirror_mode() const override; |
357 | + |
358 | NativeDisplayBuffer* native_display_buffer() override; |
359 | |
360 | private: |
361 | |
362 | === modified file 'src/server/graphics/nested/display_buffer.cpp' |
363 | --- src/server/graphics/nested/display_buffer.cpp 2016-01-29 08:18:22 +0000 |
364 | +++ src/server/graphics/nested/display_buffer.cpp 2016-03-29 17:48:29 +0000 |
365 | @@ -87,6 +87,11 @@ |
366 | return mir_orientation_normal; |
367 | } |
368 | |
369 | +MirMirrorMode mgn::detail::DisplayBuffer::mirror_mode() const |
370 | +{ |
371 | + return mir_mirror_mode_none; |
372 | +} |
373 | + |
374 | mgn::detail::DisplayBuffer::~DisplayBuffer() noexcept |
375 | { |
376 | } |
377 | |
378 | === modified file 'src/server/graphics/nested/display_buffer.h' |
379 | --- src/server/graphics/nested/display_buffer.h 2016-01-29 08:18:22 +0000 |
380 | +++ src/server/graphics/nested/display_buffer.h 2016-03-29 17:48:29 +0000 |
381 | @@ -61,6 +61,7 @@ |
382 | void release_current() override; |
383 | void swap_buffers() override; |
384 | MirOrientation orientation() const override; |
385 | + MirMirrorMode mirror_mode() const override; |
386 | |
387 | bool post_renderables_if_optimizable(RenderableList const& renderlist) override; |
388 | |
389 | |
390 | === modified file 'src/server/graphics/offscreen/display_buffer.cpp' |
391 | --- src/server/graphics/offscreen/display_buffer.cpp 2016-01-29 08:18:22 +0000 |
392 | +++ src/server/graphics/offscreen/display_buffer.cpp 2016-03-29 17:48:29 +0000 |
393 | @@ -158,6 +158,11 @@ |
394 | return mir_orientation_normal; |
395 | } |
396 | |
397 | +MirMirrorMode mgo::DisplayBuffer::mirror_mode() const |
398 | +{ |
399 | + return mir_mirror_mode_none; |
400 | +} |
401 | + |
402 | mg::NativeDisplayBuffer* mgo::DisplayBuffer::native_display_buffer() |
403 | { |
404 | return this; |
405 | |
406 | === modified file 'src/server/graphics/offscreen/display_buffer.h' |
407 | --- src/server/graphics/offscreen/display_buffer.h 2016-01-29 08:18:22 +0000 |
408 | +++ src/server/graphics/offscreen/display_buffer.h 2016-03-29 17:48:29 +0000 |
409 | @@ -71,6 +71,7 @@ |
410 | void swap_buffers() override; |
411 | |
412 | MirOrientation orientation() const override; |
413 | + MirMirrorMode mirror_mode() const override; |
414 | |
415 | bool post_renderables_if_optimizable(RenderableList const& renderlist) override; |
416 | |
417 | |
418 | === modified file 'src/server/server.cpp' |
419 | --- src/server/server.cpp 2016-01-29 08:18:22 +0000 |
420 | +++ src/server/server.cpp 2016-03-29 17:48:29 +0000 |
421 | @@ -177,8 +177,7 @@ |
422 | } |
423 | |
424 | void set_viewport(mir::geometry::Rectangle const&) override {} |
425 | - |
426 | - void set_rotation(float) override {} |
427 | + void set_output_transform(MirOrientation, MirMirrorMode) override {} |
428 | |
429 | void render(mir::graphics::RenderableList const& renderables) const override |
430 | { |
431 | |
432 | === modified file 'src/server/symbols.map' |
433 | --- src/server/symbols.map 2016-03-26 00:19:29 +0000 |
434 | +++ src/server/symbols.map 2016-03-29 17:48:29 +0000 |
435 | @@ -642,7 +642,7 @@ |
436 | mir::renderer::gl::Renderer::Program::Program*; |
437 | mir::renderer::gl::Renderer::draw*; |
438 | mir::renderer::gl::Renderer::render*; |
439 | - mir::renderer::gl::Renderer::set_rotation*; |
440 | + mir::renderer::gl::Renderer::set_output_transform*; |
441 | mir::renderer::gl::Renderer::set_viewport*; |
442 | mir::renderer::gl::Renderer::suspend*; |
443 | mir::renderer::gl::Renderer::tessellate*; |
444 | |
445 | === modified file 'tests/include/mir/test/doubles/mock_display_buffer.h' |
446 | --- tests/include/mir/test/doubles/mock_display_buffer.h 2016-01-29 08:18:22 +0000 |
447 | +++ tests/include/mir/test/doubles/mock_display_buffer.h 2016-03-29 17:48:29 +0000 |
448 | @@ -45,6 +45,7 @@ |
449 | MOCK_CONST_METHOD0(view_area, geometry::Rectangle()); |
450 | MOCK_METHOD1(post_renderables_if_optimizable, bool(graphics::RenderableList const&)); |
451 | MOCK_CONST_METHOD0(orientation, MirOrientation()); |
452 | + MOCK_CONST_METHOD0(mirror_mode, MirMirrorMode()); |
453 | MOCK_METHOD0(native_display_buffer, graphics::NativeDisplayBuffer*()); |
454 | }; |
455 | |
456 | |
457 | === modified file 'tests/include/mir/test/doubles/mock_renderer.h' |
458 | --- tests/include/mir/test/doubles/mock_renderer.h 2015-02-22 07:46:25 +0000 |
459 | +++ tests/include/mir/test/doubles/mock_renderer.h 2016-03-29 17:48:29 +0000 |
460 | @@ -32,7 +32,7 @@ |
461 | struct MockRenderer : public compositor::Renderer |
462 | { |
463 | MOCK_METHOD1(set_viewport, void(geometry::Rectangle const&)); |
464 | - MOCK_METHOD1(set_rotation, void(float)); |
465 | + MOCK_METHOD2(set_output_transform, void(MirOrientation, MirMirrorMode)); |
466 | MOCK_CONST_METHOD1(render, void(graphics::RenderableList const&)); |
467 | MOCK_METHOD0(suspend, void()); |
468 | |
469 | |
470 | === modified file 'tests/include/mir/test/doubles/stub_renderer.h' |
471 | --- tests/include/mir/test/doubles/stub_renderer.h 2015-06-18 02:46:16 +0000 |
472 | +++ tests/include/mir/test/doubles/stub_renderer.h 2016-03-29 17:48:29 +0000 |
473 | @@ -33,13 +33,9 @@ |
474 | class StubRenderer : public compositor::Renderer |
475 | { |
476 | public: |
477 | - void set_viewport(geometry::Rectangle const&) override |
478 | - { |
479 | - } |
480 | - |
481 | - void set_rotation(float) override |
482 | - { |
483 | - } |
484 | + void set_viewport(geometry::Rectangle const&) override {} |
485 | + void set_output_transform(MirOrientation, MirMirrorMode) override {} |
486 | + void suspend() override {} |
487 | |
488 | void render(graphics::RenderableList const& renderables) const override |
489 | { |
490 | @@ -48,10 +44,6 @@ |
491 | // Yield to reduce runtime under valgrind |
492 | std::this_thread::yield(); |
493 | } |
494 | - |
495 | - void suspend() override |
496 | - { |
497 | - } |
498 | }; |
499 | |
500 | |
501 | |
502 | === modified file 'tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp' |
503 | --- tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp 2016-01-29 08:18:22 +0000 |
504 | +++ tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp 2016-03-29 17:48:29 +0000 |
505 | @@ -100,6 +100,8 @@ |
506 | using namespace testing; |
507 | ON_CALL(display_buffer, orientation()) |
508 | .WillByDefault(Return(mir_orientation_normal)); |
509 | + ON_CALL(display_buffer, mirror_mode()) |
510 | + .WillByDefault(Return(mir_mirror_mode_none)); |
511 | ON_CALL(display_buffer, view_area()) |
512 | .WillByDefault(Return(screen)); |
513 | ON_CALL(display_buffer, post_renderables_if_optimizable(_)) |
514 | @@ -195,9 +197,10 @@ |
515 | EXPECT_CALL(mock_renderer, suspend()) |
516 | .Times(0); |
517 | EXPECT_CALL(display_buffer, orientation()) |
518 | - .InSequence(render_seq) |
519 | .WillOnce(Return(mir_orientation_normal)); |
520 | - EXPECT_CALL(mock_renderer, set_rotation(_)) |
521 | + EXPECT_CALL(display_buffer, mirror_mode()) |
522 | + .WillOnce(Return(mir_mirror_mode_none)); |
523 | + EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none)) |
524 | .InSequence(render_seq); |
525 | EXPECT_CALL(mock_renderer, render(ContainerEq(mg::RenderableList{big, small}))) |
526 | .InSequence(render_seq); |
527 | @@ -220,6 +223,8 @@ |
528 | .WillByDefault(Return(screen)); |
529 | ON_CALL(display_buffer, orientation()) |
530 | .WillByDefault(Return(mir_orientation_normal)); |
531 | + ON_CALL(display_buffer, mirror_mode()) |
532 | + .WillByDefault(Return(mir_mirror_mode_none)); |
533 | |
534 | Sequence seq; |
535 | EXPECT_CALL(display_buffer, post_renderables_if_optimizable(_)) |
536 | @@ -228,7 +233,7 @@ |
537 | |
538 | EXPECT_CALL(display_buffer, orientation()) |
539 | .InSequence(seq); |
540 | - EXPECT_CALL(mock_renderer, set_rotation(mir_orientation_normal)) |
541 | + EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none)) |
542 | .InSequence(seq); |
543 | EXPECT_CALL(mock_renderer, render(IsEmpty())) |
544 | .InSequence(seq); |
545 | @@ -243,7 +248,7 @@ |
546 | .WillOnce(Return(false)); |
547 | EXPECT_CALL(display_buffer, orientation()) |
548 | .InSequence(seq); |
549 | - EXPECT_CALL(mock_renderer, set_rotation(mir_orientation_normal)) |
550 | + EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none)) |
551 | .InSequence(seq); |
552 | EXPECT_CALL(mock_renderer, render(IsEmpty())) |
553 | .InSequence(seq); |
554 | @@ -267,6 +272,8 @@ |
555 | .WillRepeatedly(Return(screen)); |
556 | EXPECT_CALL(display_buffer, orientation()) |
557 | .WillOnce(Return(mir_orientation_normal)); |
558 | + EXPECT_CALL(display_buffer, mirror_mode()) |
559 | + .WillOnce(Return(mir_mirror_mode_none)); |
560 | EXPECT_CALL(display_buffer, post_renderables_if_optimizable(_)) |
561 | .WillRepeatedly(Return(false)); |
562 | |
563 | |
564 | === modified file 'tests/unit-tests/graphics/android/test_display_group.cpp' |
565 | --- tests/unit-tests/graphics/android/test_display_group.cpp 2016-01-29 08:18:22 +0000 |
566 | +++ tests/unit-tests/graphics/android/test_display_group.cpp 2016-03-29 17:48:29 +0000 |
567 | @@ -37,6 +37,7 @@ |
568 | mir::geometry::Rectangle view_area() const override { return {}; } |
569 | bool post_renderables_if_optimizable(mg::RenderableList const&) override { return false; } |
570 | MirOrientation orientation() const override { return mir_orientation_normal; } |
571 | + MirMirrorMode mirror_mode() const override { return mir_mirror_mode_none; } |
572 | mg::NativeDisplayBuffer* native_display_buffer() override { return this; } |
573 | void configure(MirPowerMode, MirOrientation, mir::geometry::Displacement) override {} |
574 | mga::DisplayContents contents() override |
FAILED: Continuous integration, rev:3423 /mir-jenkins. ubuntu. com/job/ mir-ci/ 676/ /mir-jenkins. ubuntu. com/job/ build-mir/ 628/console /mir-jenkins. ubuntu. com/job/ build-0- fetch/665 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 657 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial/ 657 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= vivid+overlay/ 638 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= vivid+overlay/ 638/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial/ 638 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial/ 638/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 638/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 638/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 638 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 638/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 638 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 638/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: 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: /mir-jenkins. ubuntu. com/job/ mir-ci/ 676/rebuild
https:/