Mir

Merge lp:~kdub/mir/fix-1471858 into lp:mir

Proposed by Kevin DuBois on 2015-07-09
Status: Merged
Approved by: Daniel van Vugt on 2015-07-13
Approved revision: 2736
Merged at revision: 2741
Proposed branch: lp:~kdub/mir/fix-1471858
Merge into: lp:mir
Diff against target: 65 lines (+46/-1)
2 files modified
src/platforms/android/server/display.cpp (+1/-1)
tests/unit-tests/graphics/android/test_display.cpp (+45/-0)
To merge this branch: bzr merge lp:~kdub/mir/fix-1471858
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve on 2015-07-13
Cemil Azizoglu (community) Approve on 2015-07-10
Daniel van Vugt 2015-07-09 Approve on 2015-07-10
Review via email: mp+264279@code.launchpad.net

Commit Message

fixes lp: #1471858

Description of the Change

android: fix a problem where a DisplayConfigurationPolicy could update the orientation without having DisplayBuffer::orientation() report the updated result.

fixes lp: #1471858

note: There's a bit of a DRY problem here with our interfaces, in that mg::DisplayConfigurationOutput has an orientation field, and we also have a mg::DisplayBuffer::orientation() that must be kept in-sync.

To post a comment you must log in.
Kevin DuBois (kdub) wrote :

^seems a pkg resolver problem in ci, hopefully transient.

Daniel van Vugt (vanvugt) :
review: Approve
Cemil Azizoglu (cemil-azizoglu) wrote :

ok

review: Approve
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/platforms/android/server/display.cpp'
2--- src/platforms/android/server/display.cpp 2015-06-17 05:20:42 +0000
3+++ src/platforms/android/server/display.cpp 2015-07-09 13:08:33 +0000
4@@ -126,7 +126,7 @@
5 native_window,
6 gl_context,
7 *gl_program_factory,
8- mir_orientation_normal,
9+ config.orientation,
10 displacement,
11 overlay_option));
12 }
13
14=== modified file 'tests/unit-tests/graphics/android/test_display.cpp'
15--- tests/unit-tests/graphics/android/test_display.cpp 2015-06-25 03:00:08 +0000
16+++ tests/unit-tests/graphics/android/test_display.cpp 2015-07-09 13:08:33 +0000
17@@ -852,3 +852,48 @@
18 EXPECT_THAT(disp_conf.top_left, Eq(another_new_location));
19 });
20 }
21+
22+//test for lp:1471858
23+TEST_F(Display, applying_orientation_after_hotplug)
24+{
25+ using namespace testing;
26+ std::function<void()> hotplug_fn = []{};
27+ bool external_connected = false;
28+ MirOrientation const orientation = mir_orientation_left;
29+ stub_db_factory->with_next_config([&](mtd::MockHwcConfiguration& mock_config)
30+ {
31+ ON_CALL(mock_config, active_config_for(mga::DisplayName::primary))
32+ .WillByDefault(Return(mtd::StubDisplayConfigurationOutput{
33+ mg::DisplayConfigurationOutputId{0}, {20,20}, {4,4}, mir_pixel_format_abgr_8888, 50.0f, true}));
34+ ON_CALL(mock_config, active_config_for(mga::DisplayName::external))
35+ .WillByDefault(Invoke([&](mga::DisplayName)
36+ {
37+ return mtd::StubDisplayConfigurationOutput{mg::DisplayConfigurationOutputId{1},
38+ {20,20}, {4,4}, mir_pixel_format_abgr_8888, 50.0f, external_connected};
39+ }));
40+ EXPECT_CALL(mock_config, subscribe_to_config_changes(_,_))
41+ .WillOnce(DoAll(SaveArg<0>(&hotplug_fn), Return(std::make_shared<char>('2'))));
42+ });
43+
44+ mga::Display display(
45+ stub_db_factory,
46+ stub_gl_program_factory,
47+ stub_gl_config,
48+ null_display_report,
49+ mga::OverlayOptimization::enabled);
50+
51+ //hotplug external back
52+ external_connected = true;
53+ hotplug_fn();
54+
55+ auto config = display.configuration();
56+ config->for_each_output([orientation](mg::UserDisplayConfigurationOutput& output) {
57+ output.orientation = orientation;
58+ });
59+ display.configure(*config);
60+ display.for_each_display_sync_group([orientation](mg::DisplaySyncGroup& group) {
61+ group.for_each_display_buffer([orientation](mg::DisplayBuffer& db) {
62+ EXPECT_THAT(db.orientation(), Eq(orientation));
63+ });
64+ });
65+}

Subscribers

People subscribed via source and target branches