Mir

Merge lp:mir/0.22 into lp:mir/ubuntu

Proposed by Andreas Pokorny
Status: Merged
Approved by: Kevin DuBois
Approved revision: 3485
Merged at revision: 1275
Proposed branch: lp:mir/0.22
Merge into: lp:mir/ubuntu
Diff against target: 213 lines (+157/-7)
4 files modified
CMakeLists.txt (+1/-1)
debian/changelog (+10/-0)
src/server/scene/mediating_display_changer.cpp (+5/-6)
tests/unit-tests/scene/test_mediating_display_changer.cpp (+141/-0)
To merge this branch: bzr merge lp:mir/0.22
Reviewer Review Type Date Requested Status
Daniel van Vugt Approve
Kevin DuBois (community) Approve
PS Jenkins bot continuous-integration Pending
Review via email: mp+294726@code.launchpad.net

Commit message

Mir bugfix release 0.22.1

Description of the change

Mir release 0.22.1

To post a comment you must log in.
lp:mir/0.22 updated
3485. By Andreas Pokorny

Also include used flag

Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

Ok

Revision history for this message
Kevin DuBois (kdub) wrote :

alright

review: Approve
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Sure

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2016-04-21 17:36:10 +0000
+++ CMakeLists.txt 2016-05-16 07:47:48 +0000
@@ -29,7 +29,7 @@
2929
30set(MIR_VERSION_MAJOR 0)30set(MIR_VERSION_MAJOR 0)
31set(MIR_VERSION_MINOR 22)31set(MIR_VERSION_MINOR 22)
32set(MIR_VERSION_PATCH 0)32set(MIR_VERSION_PATCH 1)
3333
34add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})34add_definitions(-DMIR_VERSION_MAJOR=${MIR_VERSION_MAJOR})
35add_definitions(-DMIR_VERSION_MINOR=${MIR_VERSION_MINOR})35add_definitions(-DMIR_VERSION_MINOR=${MIR_VERSION_MINOR})
3636
=== modified file 'debian/changelog'
--- debian/changelog 2016-04-22 22:38:16 +0000
+++ debian/changelog 2016-05-16 07:47:48 +0000
@@ -1,3 +1,13 @@
1mir (0.22.1-0ubuntu1) UNRELEASED; urgency=medium
2
3 * New upstream release 0.22.1 (https://launchpad.net/mir/+milestone/0.22.1)
4 - ABI summary:
5 . No ABI changes in any libraries. Bugfix release only.
6 - Bugs fixed:
7 . [regression] Cursor stops at phantom edge on M10 and N7 (LP: 1580774)
8
9 -- Andreas Pokorny <andreas.pokorny@canonical.com> Sun, 15 May 2016 13:26:56 +0200
10
1mir (0.22.0+16.04.20160422.2-0ubuntu1) xenial; urgency=medium11mir (0.22.0+16.04.20160422.2-0ubuntu1) xenial; urgency=medium
212
3 [ Alberto Aguirre ]13 [ Alberto Aguirre ]
414
=== modified file 'src/server/scene/mediating_display_changer.cpp'
--- src/server/scene/mediating_display_changer.cpp 2016-03-23 06:39:56 +0000
+++ src/server/scene/mediating_display_changer.cpp 2016-05-16 07:47:48 +0000
@@ -353,11 +353,10 @@
353void ms::MediatingDisplayChanger::update_input_rectangles(mg::DisplayConfiguration const& config)353void ms::MediatingDisplayChanger::update_input_rectangles(mg::DisplayConfiguration const& config)
354{354{
355 geometry::Rectangles rectangles;355 geometry::Rectangles rectangles;
356 config.for_each_output(356 config.for_each_output([&rectangles](mg::DisplayConfigurationOutput const& output) {
357 [&rectangles](mg::DisplayConfigurationOutput const& output)357 if (output.used && output.connected && output.power_mode == mir_power_mode_on &&
358 {358 output.current_mode_index < output.modes.size())
359 if (output.power_mode == mir_power_mode_on && output.current_mode_index < output.modes.size())359 rectangles.add(geometry::Rectangle(output.top_left, output.modes[output.current_mode_index].size));
360 rectangles.add(geometry::Rectangle(output.top_left, output.modes[output.current_mode_index].size));360 });
361 });
362 region->set_input_rectangles(rectangles);361 region->set_input_rectangles(rectangles);
363}362}
364363
=== modified file 'tests/unit-tests/scene/test_mediating_display_changer.cpp'
--- tests/unit-tests/scene/test_mediating_display_changer.cpp 2016-03-23 06:39:56 +0000
+++ tests/unit-tests/scene/test_mediating_display_changer.cpp 2016-05-16 07:47:48 +0000
@@ -45,12 +45,52 @@
45namespace mf = mir::frontend;45namespace mf = mir::frontend;
46namespace ms = mir::scene;46namespace ms = mir::scene;
47namespace mg = mir::graphics;47namespace mg = mir::graphics;
48namespace geom = mir::geometry;
4849
49using namespace testing;50using namespace testing;
5051
51namespace52namespace
52{53{
5354
55auto display_output(
56 mg::DisplayConfigurationOutputId id, geom::Point pos, geom::Size size, bool connected, bool used, MirPowerMode mode)
57 -> mg::DisplayConfigurationOutput
58{
59 return mg::DisplayConfigurationOutput{id,
60 mg::DisplayConfigurationCardId{0},
61 mg::DisplayConfigurationOutputType::lvds,
62 std::vector<MirPixelFormat>{mir_pixel_format_abgr_8888},
63 {mg::DisplayConfigurationMode{size, 60}},
64 0,
65 geom::Size{40, 40},
66 connected,
67 used,
68 pos,
69 0,
70 mir_pixel_format_abgr_8888,
71 mode,
72 mir_orientation_normal,
73 1.0f,
74 mir_form_factor_phone
75 };
76}
77
78struct TestDisplayConfiguration : mtd::NullDisplayConfiguration
79{
80 std::vector<mg::DisplayConfigurationOutput> const outputs;
81 TestDisplayConfiguration(std::vector<mg::DisplayConfigurationOutput> const& items)
82 : outputs{items} {}
83 void for_each_output(std::function<void(mg::DisplayConfigurationOutput const&)> fun) const override
84 {
85 for (auto const& output : outputs)
86 fun(output);
87 }
88 std::unique_ptr<mg::DisplayConfiguration> clone() const override
89 {
90 return std::make_unique<TestDisplayConfiguration>(outputs);
91 }
92};
93
54class MockDisplayConfigurationPolicy : public mg::DisplayConfigurationPolicy94class MockDisplayConfigurationPolicy : public mg::DisplayConfigurationPolicy
55{95{
56public:96public:
@@ -806,3 +846,104 @@
806 ASSERT_THAT(received_configuration, Not(Eq(nullptr)));846 ASSERT_THAT(received_configuration, Not(Eq(nullptr)));
807 EXPECT_THAT(*received_configuration, mt::DisplayConfigMatches(std::cref(*new_config)));847 EXPECT_THAT(*received_configuration, mt::DisplayConfigMatches(std::cref(*new_config)));
808}848}
849
850TEST_F(MediatingDisplayChangerTest, input_region_skipps_not_connected_displays)
851{
852 using namespace testing;
853
854 auto const connected = true;
855 auto const disconnected = false;
856 auto const used = true;
857 mir::geometry::Rectangles expected_rectangles;
858 expected_rectangles.add(geom::Rectangle{geom::Point{0,0}, geom::Size{100,100}});
859
860 TestDisplayConfiguration conf{{display_output(mg::DisplayConfigurationOutputId{0},
861 geom::Point{0, 0},
862 geom::Size{100, 100},
863 connected,
864 used,
865 mir_power_mode_on),
866 display_output(mg::DisplayConfigurationOutputId{1},
867 geom::Point{100, 0},
868 geom::Size{100, 100},
869 disconnected,
870 used,
871 mir_power_mode_on)}};
872
873 EXPECT_CALL(mock_input_region, set_input_rectangles(expected_rectangles));
874
875 auto session = std::make_shared<mtd::StubSession>();
876
877 session_event_sink.handle_focus_change(session);
878 changer->configure(session,
879 mt::fake_shared(conf));
880}
881
882TEST_F(MediatingDisplayChangerTest, input_region_accumulates_powered_and_connected_displays)
883{
884 using namespace testing;
885
886 auto const connected = true;
887 auto const first_monitor = geom::Rectangle{geom::Point{0, 0}, geom::Size{ 40, 40 }};
888 auto const second_monitor = geom::Rectangle{geom::Point{40, 0}, geom::Size{ 10, 10}};
889 auto const used = true;
890 mir::geometry::Rectangles expected_rectangles;
891 expected_rectangles.add(first_monitor);
892 expected_rectangles.add(second_monitor);
893
894 TestDisplayConfiguration conf{{display_output(mg::DisplayConfigurationOutputId{0},
895 first_monitor.top_left,
896 first_monitor.size,
897 connected,
898 used,
899 mir_power_mode_on),
900 display_output(mg::DisplayConfigurationOutputId{1},
901 second_monitor.top_left,
902 second_monitor.size,
903 connected,
904 used,
905 mir_power_mode_on)}};
906
907 EXPECT_CALL(mock_input_region, set_input_rectangles(expected_rectangles));
908
909 auto session = std::make_shared<mtd::StubSession>();
910
911 session_event_sink.handle_focus_change(session);
912 changer->configure(session,
913 mt::fake_shared(conf));
914}
915
916
917TEST_F(MediatingDisplayChangerTest, input_region_accumulates_powered_connected_skips_unused_displays)
918{
919 using namespace testing;
920
921 auto const connected = true;
922 auto const first_monitor = geom::Rectangle{geom::Point{0, 0}, geom::Size{ 40, 40 }};
923 auto const second_monitor = geom::Rectangle{geom::Point{40, 0}, geom::Size{ 10, 10}};
924 auto const not_used = false;
925 auto const used = true;
926 mir::geometry::Rectangles expected_rectangles;
927 expected_rectangles.add(second_monitor);
928
929 TestDisplayConfiguration conf{{display_output(mg::DisplayConfigurationOutputId{0},
930 first_monitor.top_left,
931 first_monitor.size,
932 connected,
933 not_used,
934 mir_power_mode_on),
935 display_output(mg::DisplayConfigurationOutputId{1},
936 second_monitor.top_left,
937 second_monitor.size,
938 connected,
939 used,
940 mir_power_mode_on)}};
941
942 EXPECT_CALL(mock_input_region, set_input_rectangles(expected_rectangles));
943
944 auto session = std::make_shared<mtd::StubSession>();
945
946 session_event_sink.handle_focus_change(session);
947 changer->configure(session,
948 mt::fake_shared(conf));
949}

Subscribers

People subscribed via source and target branches

to all changes: