Mir

Merge lp:~mir-team/mir/fix-1675331 into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Approved by: Daniel van Vugt
Approved revision: no longer in the source branch.
Merged at revision: 4108
Proposed branch: lp:~mir-team/mir/fix-1675331
Merge into: lp:mir
Diff against target: 70 lines (+14/-8)
2 files modified
src/platforms/mesa/server/kms/real_kms_display_configuration.cpp (+11/-7)
src/platforms/mesa/server/kms/real_kms_display_configuration.h (+3/-1)
To merge this branch: bzr merge lp:~mir-team/mir/fix-1675331
Reviewer Review Type Date Requested Status
Alan Griffiths Approve
Cemil Azizoglu (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+320779@code.launchpad.net

Commit message

Don't use zero (mir_display_output_id_invalid) as a real output ID
(LP: #1675331)

Description of the change

The offending class is not under test at all, so that's why there
is no regression test right now. If that concerns anyone we could just
temporarily revert revision 4103 instead. Either way, I don't want to
be responsible for regression testing this one.

To post a comment you must log in.
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

On the other hand, it looks like the only user of mir_display_output_id_invalid is going to be deprecated. So we may not need this. But as a beautification of the output list, still nice to have...

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4111
https://mir-jenkins.ubuntu.com/job/mir-ci/3222/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4337
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4424
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4414
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4414
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4414
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4369
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4369/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/4369
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4369/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4369
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4369/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/4369
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4369/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/4369
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4369/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/4369
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4369/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

ok

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

Sure

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/platforms/mesa/server/kms/real_kms_display_configuration.cpp'
2--- src/platforms/mesa/server/kms/real_kms_display_configuration.cpp 2017-03-22 07:01:56 +0000
3+++ src/platforms/mesa/server/kms/real_kms_display_configuration.cpp 2017-03-23 10:14:53 +0000
4@@ -95,10 +95,16 @@
5 return std::make_unique<RealKMSDisplayConfiguration>(*this);
6 }
7
8+mgm::RealKMSDisplayConfiguration::Output const&
9+mgm::RealKMSDisplayConfiguration::output(DisplayConfigurationOutputId id) const
10+{
11+ return outputs.at(id.as_value() - 1);
12+}
13+
14 std::shared_ptr<mgm::KMSOutput> mgm::RealKMSDisplayConfiguration::get_output_for(
15 DisplayConfigurationOutputId id) const
16 {
17- return outputs.at(id.as_value()).second;
18+ return output(id).second;
19 }
20
21 size_t mgm::RealKMSDisplayConfiguration::get_kms_mode_index(
22@@ -109,7 +115,7 @@
23 {
24 BOOST_THROW_EXCEPTION(std::invalid_argument("Request for KMS mode index of invalid output ID"));
25 }
26- if (conf_mode_index > outputs[id.as_value()].first.modes.size())
27+ if (conf_mode_index > output(id).first.modes.size())
28 {
29 BOOST_THROW_EXCEPTION(std::invalid_argument("Request for out-of-bounds KMS mode index"));
30 }
31@@ -138,10 +144,9 @@
32 {
33 decltype(outputs) new_outputs;
34
35- int counter = 0;
36 displays->update_from_hardware_state();
37 displays->for_each_output(
38- [this, &new_outputs, &counter](auto const& output) mutable
39+ [this, &new_outputs](auto const& output) mutable
40 {
41 DisplayConfigurationOutput mir_config;
42
43@@ -163,10 +168,9 @@
44 }
45
46 output->update_from_hardware_state(mir_config);
47- mir_config.id = DisplayConfigurationOutputId{counter};
48- counter++;
49+ mir_config.id = DisplayConfigurationOutputId{int(new_outputs.size() + 1)};
50
51- new_outputs.push_back(std::make_pair(mir_config, output));
52+ new_outputs.emplace_back(mir_config, output);
53 });
54
55 outputs = new_outputs;
56
57=== modified file 'src/platforms/mesa/server/kms/real_kms_display_configuration.h'
58--- src/platforms/mesa/server/kms/real_kms_display_configuration.h 2017-03-10 10:20:24 +0000
59+++ src/platforms/mesa/server/kms/real_kms_display_configuration.h 2017-03-23 10:14:53 +0000
60@@ -55,7 +55,9 @@
61
62 std::shared_ptr<KMSOutputContainer> displays;
63 DisplayConfigurationCard card;
64- std::vector<std::pair< DisplayConfigurationOutput, std::shared_ptr<KMSOutput>>> outputs;
65+ typedef std::pair<DisplayConfigurationOutput, std::shared_ptr<KMSOutput>> Output;
66+ Output const& output(DisplayConfigurationOutputId id) const;
67+ std::vector<Output> outputs;
68 };
69
70 bool compatible(RealKMSDisplayConfiguration const& conf1, RealKMSDisplayConfiguration const& conf2);

Subscribers

People subscribed via source and target branches