Mir

Merge lp:~vanvugt/mir/fix-1643488 into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Approved by: Kevin DuBois
Approved revision: no longer in the source branch.
Merged at revision: 3996
Proposed branch: lp:~vanvugt/mir/fix-1643488
Merge into: lp:mir
Diff against target: 109 lines (+44/-2)
4 files modified
playground/demo-shell/demo_compositor.cpp (+1/-0)
playground/demo-shell/window_manager.cpp (+0/-2)
src/server/compositor/default_display_buffer_compositor.cpp (+1/-0)
tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp (+42/-0)
To merge this branch: bzr merge lp:~vanvugt/mir/fix-1643488
Reviewer Review Type Date Requested Status
Alan Griffiths Approve
Kevin DuBois (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+315750@code.launchpad.net

Commit message

Ensure screen rotation without renderer reconstruction does not distort
(LP: #1643488)

Description of the change

This will conflict with my other branch but I'll deal with that later.

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

PASSED: Continuous integration, rev:3998
https://mir-jenkins.ubuntu.com/job/mir-ci/2881/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/3801
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3880
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3870
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3870
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3870
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3828
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3828/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3828
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3828/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3828
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3828/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3828
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3828/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3828
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3828/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3828
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3828/artifact/output/*zip*/output.zip

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

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

lgtm

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

OK

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'playground/demo-shell/demo_compositor.cpp'
--- playground/demo-shell/demo_compositor.cpp 2017-01-18 02:29:37 +0000
+++ playground/demo-shell/demo_compositor.cpp 2017-01-27 09:43:04 +0000
@@ -126,6 +126,7 @@
126 else126 else
127 {127 {
128 renderer.set_output_transform(display_buffer.orientation(), display_buffer.mirror_mode());128 renderer.set_output_transform(display_buffer.orientation(), display_buffer.mirror_mode());
129 update_viewport();
129 renderer.set_viewport(viewport);130 renderer.set_viewport(viewport);
130 renderer.begin(std::move(decorated));131 renderer.begin(std::move(decorated));
131 renderer.render(renderable_list);132 renderer.render(renderable_list);
132133
=== modified file 'playground/demo-shell/window_manager.cpp'
--- playground/demo-shell/window_manager.cpp 2017-01-18 02:29:37 +0000
+++ playground/demo-shell/window_manager.cpp 2017-01-27 09:43:04 +0000
@@ -298,7 +298,6 @@
298 298
299 if (rotating || mode_change || preferred_mode)299 if (rotating || mode_change || preferred_mode)
300 {300 {
301 compositor->stop();
302 auto conf = display->configuration();301 auto conf = display->configuration();
303 conf->for_each_output(302 conf->for_each_output(
304 [&](mg::UserDisplayConfigurationOutput& output) -> void303 [&](mg::UserDisplayConfigurationOutput& output) -> void
@@ -324,7 +323,6 @@
324 });323 });
325 324
326 display->configure(*conf);325 display->configure(*conf);
327 compositor->start();
328 return true;326 return true;
329 }327 }
330 }328 }
331329
=== modified file 'src/server/compositor/default_display_buffer_compositor.cpp'
--- src/server/compositor/default_display_buffer_compositor.cpp 2017-01-20 12:32:45 +0000
+++ src/server/compositor/default_display_buffer_compositor.cpp 2017-01-27 09:43:04 +0000
@@ -80,6 +80,7 @@
80 else80 else
81 {81 {
82 renderer->set_output_transform(display_buffer.orientation(), display_buffer.mirror_mode());82 renderer->set_output_transform(display_buffer.orientation(), display_buffer.mirror_mode());
83 renderer->set_viewport(view_area);
83 renderer->render(renderable_list);84 renderer->render(renderable_list);
8485
85 report->renderables_in_frame(this, renderable_list);86 report->renderables_in_frame(this, renderable_list);
8687
=== modified file 'tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp'
--- tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp 2017-01-18 02:29:37 +0000
+++ tests/unit-tests/compositor/test_default_display_buffer_compositor.cpp 2017-01-27 09:43:04 +0000
@@ -202,6 +202,44 @@
202 .WillOnce(Return(mir_mirror_mode_none));202 .WillOnce(Return(mir_mirror_mode_none));
203 EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none))203 EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none))
204 .InSequence(render_seq);204 .InSequence(render_seq);
205 EXPECT_CALL(mock_renderer, set_viewport(screen))
206 .InSequence(render_seq);
207 EXPECT_CALL(mock_renderer, render(ContainerEq(mg::RenderableList{big, small})))
208 .InSequence(render_seq);
209
210 mc::DefaultDisplayBufferCompositor compositor(
211 display_buffer,
212 mt::fake_shared(mock_renderer),
213 mr::null_compositor_report());
214
215 compositor.composite(make_scene_elements({
216 big,
217 small
218 }));
219}
220
221TEST_F(DefaultDisplayBufferCompositor, rotates_viewport)
222{ // Regression test for LP: #1643488
223 using namespace testing;
224
225 geom::Rectangle const rotated_screen{
226 screen.top_left,
227 {screen.size.height.as_int(), screen.size.width.as_int()}};
228
229 ON_CALL(display_buffer, view_area())
230 .WillByDefault(Return(rotated_screen));
231
232 Sequence render_seq;
233 EXPECT_CALL(mock_renderer, suspend())
234 .Times(0);
235 EXPECT_CALL(display_buffer, orientation())
236 .WillOnce(Return(mir_orientation_left));
237 EXPECT_CALL(display_buffer, mirror_mode())
238 .WillOnce(Return(mir_mirror_mode_none));
239 EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_left, mir_mirror_mode_none))
240 .InSequence(render_seq);
241 EXPECT_CALL(mock_renderer, set_viewport(rotated_screen))
242 .InSequence(render_seq);
205 EXPECT_CALL(mock_renderer, render(ContainerEq(mg::RenderableList{big, small})))243 EXPECT_CALL(mock_renderer, render(ContainerEq(mg::RenderableList{big, small})))
206 .InSequence(render_seq);244 .InSequence(render_seq);
207245
@@ -235,6 +273,8 @@
235 .InSequence(seq);273 .InSequence(seq);
236 EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none))274 EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none))
237 .InSequence(seq);275 .InSequence(seq);
276 EXPECT_CALL(mock_renderer, set_viewport(screen))
277 .InSequence(seq);
238 EXPECT_CALL(mock_renderer, render(IsEmpty()))278 EXPECT_CALL(mock_renderer, render(IsEmpty()))
239 .InSequence(seq);279 .InSequence(seq);
240280
@@ -250,6 +290,8 @@
250 .InSequence(seq);290 .InSequence(seq);
251 EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none))291 EXPECT_CALL(mock_renderer, set_output_transform(mir_orientation_normal, mir_mirror_mode_none))
252 .InSequence(seq);292 .InSequence(seq);
293 EXPECT_CALL(mock_renderer, set_viewport(screen))
294 .InSequence(seq);
253 EXPECT_CALL(mock_renderer, render(IsEmpty()))295 EXPECT_CALL(mock_renderer, render(IsEmpty()))
254 .InSequence(seq);296 .InSequence(seq);
255297

Subscribers

People subscribed via source and target branches