Mir

Merge lp:~mir-team/mir/size-t-display-config-api into lp:mir

Proposed by Brandon Schaefer
Status: Work in progress
Proposed branch: lp:~mir-team/mir/size-t-display-config-api
Merge into: lp:mir
Diff against target: 449 lines (+50/-51)
6 files modified
examples/eglsquare.cpp (+1/-1)
include/client/mir_toolkit/mir_display_configuration.h (+5/-5)
src/client/display_configuration_api.cpp (+13/-14)
src/utils/out.c (+4/-4)
tests/acceptance-tests/test_new_display_configuration.cpp (+20/-20)
tests/mir_test/display_config_matchers.cpp (+7/-7)
To merge this branch: bzr merge lp:~mir-team/mir/size-t-display-config-api
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Needs Fixing
Daniel van Vugt Needs Fixing
Kevin DuBois (community) Needs Fixing
Review via email: mp+315193@code.launchpad.net

Commit message

Clean up display config returns. size_t is much more appropriate for an index and size of mm.

Description of the change

Clean up display config returns. size_t is much more appropriate for an index and size of mm.

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

size_t's primary and traditional purpose is to represent a number of bytes. For other purposes that are just an integer number, int or unsigned types are more appropriate.

On that note, mir_output_get_{current,preferred}_mode_index need to be changed to return int, since they are allowed and expected to sometimes return -1.

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

See the C language spec. size_t's purpose is to represent the result of 'sizeof' or 'offsetof'. It may also be used to represent multiples of bytes such as a number of structures or elements returned in memory. However the important point is that sizeof always refers to the memory size (or multiple of memory size) of something.

7.17 Common definitions <stddef.h>
1 The following types and macros are defined in the standard header <stddef.h>. Some
are also defined in other headers, as noted in their respective subclauses.
2 The types are
ptrdiff_t
which is the signed integer type of the result of subtracting two pointers;
size_t
which is the unsigned integer type of the result of the sizeof operator;

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

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

Hmm, by that definition a number or index of structures may use size_t. Just not a number of millimetres.

(1) So in the least size_t needs to be removed from:

    mir_output_get_physical_height_mm
    mir_output_get_physical_width_mm

(2) Also this is not portable since some platforms won't have sizeof(unsigned long) == sizeof(size_t):

219 - int output_id;
220 - if (++action < action_end && 1 == sscanf(*action, "%d", &output_id))
221 + size_t output_id;
222 + if (++action < action_end && 1 == sscanf(*action, "%lu", &output_id))

(3) To avoid forcing downstreams to cast, it would be helpful to make this int or ssize_t:

   current_mode_index
   preferred_mode_index

because they are allowed to be and often are negative.

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

FAILED: Continuous integration, rev:3964
https://mir-jenkins.ubuntu.com/job/mir-ci/2790/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/3654/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3733
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3723
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3723
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3723
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3681/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3681
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3681/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3681
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3681/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3681/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3681/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3681/console

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

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

> Hmm, by that definition a number or index of structures may use size_t. Just
> not a number of millimetres.

+1, also

+size_t mir_display_config_get_max_simultaneous_outputs(
On the deprecation path, probably doesn't need changes?: http://pastebin.ubuntu.com/23852554/

review: Needs Fixing
3965. By Brandon Schaefer

* mm -> int, %zu for portable printf

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

FAILED: Continuous integration, rev:3965
https://mir-jenkins.ubuntu.com/job/mir-ci/2853/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/3758/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3837
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3827
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3827
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3827
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3785
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3785/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3785/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3785
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3785/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3785/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3785/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3785/console

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

review: Needs Fixing (continuous-integration)
3966. By Brandon Schaefer

* Missed lu -> zu

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

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

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

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

I would personally prefer we used int for all this, since it's simpler to work with and our structures will never be big enough to overflow an int and require size_t. But getting over my personal preference, still needs fixing...

(4) Output ID is not an index or a size of something, so size_t is inappropriate. It's just an arbitrary unsigned int...

57 -int mir_output_get_id(MirOutput const* output);
58 +size_t mir_output_get_id(MirOutput const* output);

101 -int mir_output_get_id(MirOutput const* output)
102 +size_t mir_output_get_id(MirOutput const* output)

review: Needs Fixing
Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

I agree with one way or the other. Right now we have a mix of size_t and ints which causes casting on either end of the API usage. Maybe something we should discuss. Im inclined for size_t/unsigned because it enforces correct usage when accessing an array. No index should be negative, if we want to return an error we should have a check to return a bool.

And yeah get_id isnt a representative of the size of an object and should just be unsigned.

3967. By Brandon Schaefer

* Returned unsigned int vs size_t since id is not the size of an object

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

FAILED: Continuous integration, rev:3967
https://mir-jenkins.ubuntu.com/job/mir-ci/2872/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/3787/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/3866
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/3856
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/3856
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/3856
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/3814/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/3814/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/3814/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3814
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/3814/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/3814
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/3814/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/3814
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/3814/artifact/output/*zip*/output.zip

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

review: Needs Fixing (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

> I would personally prefer we used int for all this, since it's simpler to work
> with and our structures will never be big enough to overflow an int and
> require size_t. But getting over my personal preference, still needs fixing...

+1

Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

Looks like the votes are in, and int being the main goal. Issue now is actually getting the params to int, as any function that takes an index is size_t already. This means already if you want to get num of outputs then use that as an index you'll need to cast.

Now to deprecate, would mean a new name there. So not sure if thats even wanted atm.

Unmerged revisions

3967. By Brandon Schaefer

* Returned unsigned int vs size_t since id is not the size of an object

3966. By Brandon Schaefer

* Missed lu -> zu

3965. By Brandon Schaefer

* mm -> int, %zu for portable printf

3964. By Brandon Schaefer

* Lets make our public API a bit better type wise. Indexes should never be negative so lets use unsigned

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'examples/eglsquare.cpp'
2--- examples/eglsquare.cpp 2017-01-18 02:29:37 +0000
3+++ examples/eglsquare.cpp 2017-01-25 23:20:39 +0000
4@@ -161,7 +161,7 @@
5 unsigned int height{0};
6 auto display_config = mir_connection_create_display_configuration(connection);
7 auto num_outputs = mir_display_config_get_num_outputs(display_config);
8- for (auto i = 0; i < num_outputs; i++)
9+ for (auto i = 0u; i < num_outputs; i++)
10 {
11 auto output = mir_display_config_get_output(display_config, i);
12 auto state = mir_output_get_connection_state(output);
13
14=== modified file 'include/client/mir_toolkit/mir_display_configuration.h'
15--- include/client/mir_toolkit/mir_display_configuration.h 2017-01-23 22:35:37 +0000
16+++ include/client/mir_toolkit/mir_display_configuration.h 2017-01-25 23:20:39 +0000
17@@ -58,7 +58,7 @@
18 * \returns The maximum number of simultaneously active outputs
19 * supportable at this time.
20 */
21-int mir_display_config_get_max_simultaneous_outputs(
22+size_t mir_display_config_get_max_simultaneous_outputs(
23 MirDisplayConfig const* config);
24
25 /**
26@@ -77,7 +77,7 @@
27 * \param [in] config The configuration to query
28 * \returns The number of outputs available in this configuration.
29 */
30-int mir_display_config_get_num_outputs(MirDisplayConfig const* config);
31+size_t mir_display_config_get_num_outputs(MirDisplayConfig const* config);
32
33 /**
34 * Get a read-only handle to the index 'th output of this configuration
35@@ -114,7 +114,7 @@
36 * \param [in] output The MirOutput to query
37 * \returns The number of modes in the supported mode list of output.
38 */
39-int mir_output_get_num_modes(MirOutput const* output);
40+size_t mir_output_get_num_modes(MirOutput const* output);
41
42 /**
43 * Get a handle for a mode descriptor from the list of supported modes.
44@@ -206,7 +206,7 @@
45 * \param [in] output The MirOutput to query
46 * \returns The number of pixel formats for output.
47 */
48-int mir_output_get_num_pixel_formats(MirOutput const* output);
49+size_t mir_output_get_num_pixel_formats(MirOutput const* output);
50
51 /**
52 * Get a pixel format from the list of supported formats
53@@ -247,7 +247,7 @@
54 * \returns The ID of output, which may be used to refer to it in other
55 * parts of the API.
56 */
57-int mir_output_get_id(MirOutput const* output);
58+unsigned int mir_output_get_id(MirOutput const* output);
59
60 /**
61 * Get the physical connection type of an output.
62
63=== modified file 'src/client/display_configuration_api.cpp'
64--- src/client/display_configuration_api.cpp 2017-01-18 02:29:37 +0000
65+++ src/client/display_configuration_api.cpp 2017-01-25 23:20:39 +0000
66@@ -53,21 +53,21 @@
67 }
68 }
69
70-int mir_display_config_get_num_outputs(MirDisplayConfig const* config)
71+size_t mir_display_config_get_num_outputs(MirDisplayConfig const* config)
72 {
73 return config->display_output_size();
74 }
75
76 MirOutput const* mir_display_config_get_output(MirDisplayConfig const* config, size_t index)
77 {
78- mir::require(index < static_cast<size_t>(mir_display_config_get_num_outputs(config)));
79+ mir::require(index < mir_display_config_get_num_outputs(config));
80
81 return output_to_client(&config->display_output(index));
82 }
83
84 MirOutput* mir_display_config_get_mutable_output(MirDisplayConfig* config, size_t index)
85 {
86- mir::require(index < static_cast<size_t>(mir_display_config_get_num_outputs(config)));
87+ mir::require(index < mir_display_config_get_num_outputs(config));
88
89 return output_to_client(config->mutable_display_output(index));
90 }
91@@ -111,12 +111,12 @@
92 return nullptr;
93 }
94
95-int mir_display_config_get_max_simultaneous_outputs(MirDisplayConfig const* config)
96+size_t mir_display_config_get_max_simultaneous_outputs(MirDisplayConfig const* config)
97 {
98 return config->display_card(0).max_simultaneous_outputs();
99 }
100
101-int mir_output_get_id(MirOutput const* output)
102+unsigned int mir_output_get_id(MirOutput const* output)
103 {
104 return output->output_id();
105 }
106@@ -141,14 +141,14 @@
107 return output->physical_width_mm();
108 }
109
110-int mir_output_get_num_modes(MirOutput const* output)
111+size_t mir_output_get_num_modes(MirOutput const* output)
112 {
113 return output->mode_size();
114 }
115
116 MirOutputMode const* mir_output_get_preferred_mode(MirOutput const* output)
117 {
118- if (output->preferred_mode() >= static_cast<size_t>(mir_output_get_num_modes(output)))
119+ if (output->preferred_mode() >= mir_output_get_num_modes(output))
120 {
121 return nullptr;
122 }
123@@ -160,7 +160,7 @@
124
125 size_t mir_output_get_preferred_mode_index(MirOutput const* output)
126 {
127- if (output->preferred_mode() >= static_cast<size_t>(mir_output_get_num_modes(output)))
128+ if (output->preferred_mode() >= mir_output_get_num_modes(output))
129 {
130 return std::numeric_limits<size_t>::max();
131 }
132@@ -172,7 +172,7 @@
133
134 MirOutputMode const* mir_output_get_current_mode(MirOutput const* output)
135 {
136- if (output->current_mode() >= static_cast<size_t>(mir_output_get_num_modes(output)))
137+ if (output->current_mode() >= mir_output_get_num_modes(output))
138 {
139 return nullptr;
140 }
141@@ -184,7 +184,7 @@
142
143 size_t mir_output_get_current_mode_index(MirOutput const* output)
144 {
145- if (output->current_mode() >= static_cast<size_t>(mir_output_get_num_modes(output)))
146+ if (output->current_mode() >= mir_output_get_num_modes(output))
147 {
148 return std::numeric_limits<size_t>::max();
149 }
150@@ -199,8 +199,8 @@
151 {
152 auto mode = client_to_mode(client_mode);
153
154- int index = -1;
155- for (int i = 0; i < output->mode_size(); ++i)
156+ size_t index = -1;
157+ for (size_t i = 0; i < static_cast<size_t>(output->mode_size()); ++i)
158 {
159 if (mode->SerializeAsString() == output->mode(i).SerializeAsString())
160 {
161@@ -209,7 +209,6 @@
162 }
163 }
164
165- mir::require(index >= 0);
166 mir::require(index < mir_output_get_num_modes(output));
167
168 output->set_current_mode(static_cast<uint32_t>(index));
169@@ -220,7 +219,7 @@
170 return mode_to_client(&output->mode(index));
171 }
172
173-int mir_output_get_num_pixel_formats(MirOutput const* output)
174+size_t mir_output_get_num_pixel_formats(MirOutput const* output)
175 {
176 return output->pixel_format_size();
177 }
178
179=== modified file 'src/utils/out.c'
180--- src/utils/out.c 2017-01-18 02:29:37 +0000
181+++ src/utils/out.c 2017-01-25 23:20:39 +0000
182@@ -111,8 +111,8 @@
183 {
184 if (!strcmp(*action, "output"))
185 {
186- int output_id;
187- if (++action < action_end && 1 == sscanf(*action, "%d", &output_id))
188+ size_t output_id;
189+ if (++action < action_end && 1 == sscanf(*action, "%zu", &output_id))
190 {
191 targets = 0;
192 for (int i = 0; i < num_outputs; ++i)
193@@ -410,7 +410,7 @@
194
195 int num_outputs = mir_display_config_get_num_outputs(conf);
196
197- printf("Max %d simultaneous outputs\n",
198+ printf("Max %zu simultaneous outputs\n",
199 mir_display_config_get_max_simultaneous_outputs(conf));
200
201 for (int i = 0; i < num_outputs; ++i)
202@@ -419,7 +419,7 @@
203 MirOutputConnectionState const state =
204 mir_output_get_connection_state(out);
205
206- printf("Output %d: %s, %s",
207+ printf("Output %zu: %s, %s",
208 mir_output_get_id(out),
209 mir_output_type_name(mir_output_get_type(out)),
210 state_name(state));
211
212=== modified file 'tests/acceptance-tests/test_new_display_configuration.cpp'
213--- tests/acceptance-tests/test_new_display_configuration.cpp 2017-01-18 02:29:37 +0000
214+++ tests/acceptance-tests/test_new_display_configuration.cpp 2017-01-25 23:20:39 +0000
215@@ -413,7 +413,7 @@
216
217 auto client_config = client.get_base_config();
218
219- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
220+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
221 {
222 auto output = mir_display_config_get_output(client_config.get(), i);
223
224@@ -445,7 +445,7 @@
225
226 auto client_config = client.get_base_config();
227
228- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
229+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
230 {
231 auto output = mir_display_config_get_output(client_config.get(), i);
232
233@@ -485,7 +485,7 @@
234
235 auto client_config = client.get_base_config();
236
237- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
238+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
239 {
240 auto output = mir_display_config_get_output(client_config.get(), i);
241
242@@ -517,7 +517,7 @@
243
244 auto client_config = client.get_base_config();
245
246- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
247+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
248 {
249 auto output = mir_display_config_get_output(client_config.get(), i);
250
251@@ -609,7 +609,7 @@
252
253 auto output = mir_display_config_get_output(config.get(), 0);
254
255- for (auto i = 0; i < mir_output_get_num_modes(output) ; ++i)
256+ for (auto i = 0u; i < mir_output_get_num_modes(output) ; ++i)
257 {
258 auto mode = mir_output_get_mode(output, i);
259 auto width = mir_output_mode_get_width(mode);
260@@ -682,7 +682,7 @@
261
262 auto output = mir_display_config_get_output(config.get(), 0);
263
264- for (auto i = 0; i < mir_output_get_num_modes(output) ; ++i)
265+ for (auto i = 0u; i < mir_output_get_num_modes(output) ; ++i)
266 {
267 auto mode = mir_output_get_mode(output, i);
268 auto width = mir_output_mode_get_width(mode);
269@@ -750,7 +750,7 @@
270 auto config = client.get_base_config();
271
272 auto position = positions.begin();
273- for (auto i = 0; i < mir_display_config_get_num_outputs(config.get()); ++i)
274+ for (auto i = 0u; i < mir_display_config_get_num_outputs(config.get()); ++i)
275 {
276 auto output = mir_display_config_get_output(config.get(), i);
277
278@@ -802,7 +802,7 @@
279 auto config = client.get_base_config();
280
281 auto position = positions.begin();
282- for (auto i = 0; i < mir_display_config_get_num_outputs(config.get()); ++i)
283+ for (auto i = 0u; i < mir_display_config_get_num_outputs(config.get()); ++i)
284 {
285 auto output = mir_display_config_get_output(config.get(), i);
286
287@@ -851,7 +851,7 @@
288
289 auto client_config = client.get_base_config();
290
291- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
292+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
293 {
294 auto output = mir_display_config_get_output(client_config.get(), i);
295
296@@ -893,7 +893,7 @@
297
298 auto client_config = client.get_base_config();
299
300- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
301+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
302 {
303 auto output = mir_display_config_get_output(client_config.get(), i);
304
305@@ -939,7 +939,7 @@
306
307 auto client_config = client.get_base_config();
308
309- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
310+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
311 {
312 auto output = mir_display_config_get_output(client_config.get(), i);
313
314@@ -987,7 +987,7 @@
315
316 auto client_config = client.get_base_config();
317
318- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
319+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
320 {
321 auto output = mir_display_config_get_mutable_output(client_config.get(), i);
322
323@@ -1220,7 +1220,7 @@
324
325 auto client_config = client.get_base_config();
326
327- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
328+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
329 {
330 auto output = mir_display_config_get_output(client_config.get(), i);
331
332@@ -1246,7 +1246,7 @@
333
334 auto client_config = client.get_base_config();
335
336- for (int i = 0; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
337+ for (auto i = 0u; i < mir_display_config_get_num_outputs(client_config.get()); ++i)
338 {
339 auto output = mir_display_config_get_output(client_config.get(), i);
340
341@@ -1272,11 +1272,11 @@
342
343 std::shared_ptr<MirDisplayConfig> config = client.get_base_config();
344
345- for (auto i = 0; i < mir_display_config_get_num_outputs(config.get()); ++i)
346+ for (auto i = 0u; i < mir_display_config_get_num_outputs(config.get()); ++i)
347 {
348 auto output = mir_display_config_get_mutable_output(config.get(), i);
349
350- for (auto j = 0; j < mir_output_get_num_modes(output); ++j)
351+ for (auto j = 0u; j < mir_output_get_num_modes(output); ++j)
352 {
353 auto mode = mir_output_get_mode(output, j);
354
355@@ -1317,11 +1317,11 @@
356 std::shared_ptr<MirDisplayConfig> old_config = client.get_base_config();
357 std::shared_ptr<MirDisplayConfig> new_config = client.get_base_config();
358
359- for (auto i = 0; i < mir_display_config_get_num_outputs(new_config.get()); ++i)
360+ for (auto i = 0u; i < mir_display_config_get_num_outputs(new_config.get()); ++i)
361 {
362 auto output = mir_display_config_get_mutable_output(new_config.get(), i);
363
364- for (auto j = 0; j < mir_output_get_num_modes(output); ++j)
365+ for (auto j = 0u; j < mir_output_get_num_modes(output); ++j)
366 {
367 auto mode = mir_output_get_mode(output, j);
368
369@@ -1381,11 +1381,11 @@
370 std::shared_ptr<MirDisplayConfig> old_config = client.get_base_config();
371 std::shared_ptr<MirDisplayConfig> new_config = client.get_base_config();
372
373- for (auto i = 0; i < mir_display_config_get_num_outputs(new_config.get()); ++i)
374+ for (auto i = 0u; i < mir_display_config_get_num_outputs(new_config.get()); ++i)
375 {
376 auto output = mir_display_config_get_mutable_output(new_config.get(), i);
377
378- for (auto j = 0; j < mir_output_get_num_modes(output); ++j)
379+ for (auto j = 0u; j < mir_output_get_num_modes(output); ++j)
380 {
381 auto mode = mir_output_get_mode(output, j);
382
383
384=== modified file 'tests/mir_test/display_config_matchers.cpp'
385--- tests/mir_test/display_config_matchers.cpp 2017-01-18 02:29:37 +0000
386+++ tests/mir_test/display_config_matchers.cpp 2017-01-25 23:20:39 +0000
387@@ -33,7 +33,7 @@
388
389 size_t find_mode_index(MirOutput const* output, MirOutputMode const* mode)
390 {
391- for (int i = 0; i < mir_output_get_num_modes(output); ++i)
392+ for (size_t i = 0; i < mir_output_get_num_modes(output); ++i)
393 {
394 if (mir_output_get_mode(output, i) == mode)
395 {
396@@ -49,7 +49,7 @@
397 TestDisplayConfiguration(mp::DisplayConfiguration const& protobuf_config)
398 {
399 /* Outputs */
400- for (int i = 0; i < protobuf_config.display_output_size(); i++)
401+ for (size_t i = 0; i < static_cast<size_t>(protobuf_config.display_output_size()); i++)
402 {
403 auto const& protobuf_output = protobuf_config.display_output(i);
404 mg::DisplayConfigurationOutput display_output
405@@ -80,7 +80,7 @@
406
407 /* Modes */
408 std::vector<mg::DisplayConfigurationMode> modes;
409- for (int n = 0; n < protobuf_output.mode_size(); n++)
410+ for (size_t n = 0; n < static_cast<size_t>(protobuf_output.mode_size()); n++)
411 {
412 auto const& protobuf_mode = protobuf_output.mode(n);
413 modes.push_back(
414@@ -94,7 +94,7 @@
415
416 /* Pixel formats */
417 std::vector<MirPixelFormat> pixel_formats;
418- for (int n = 0; n < protobuf_output.pixel_format_size(); n++)
419+ for (size_t n = 0; n < static_cast<size_t>(protobuf_output.pixel_format_size()); n++)
420 {
421 pixel_formats.push_back(
422 static_cast<MirPixelFormat>(protobuf_output.pixel_format(n)));
423@@ -166,7 +166,7 @@
424 TestDisplayConfiguration(MirDisplayConfig const* config)
425 {
426 /* Outputs */
427- for (int i = 0; i < mir_display_config_get_num_outputs(config); i++)
428+ for (size_t i = 0; i < mir_display_config_get_num_outputs(config); i++)
429 {
430 auto const client_output = mir_display_config_get_output(config, i);
431 mg::DisplayConfigurationOutput display_output
432@@ -197,7 +197,7 @@
433
434 /* Modes */
435 std::vector<mg::DisplayConfigurationMode> modes;
436- for (int n = 0; n < mir_output_get_num_modes(client_output); n++)
437+ for (size_t n = 0; n < mir_output_get_num_modes(client_output); n++)
438 {
439 auto const client_mode = mir_output_get_mode(client_output, n);
440 modes.push_back(
441@@ -212,7 +212,7 @@
442
443 /* Pixel formats */
444 std::vector<MirPixelFormat> pixel_formats;
445- for (int n = 0; n < mir_output_get_num_pixel_formats(client_output); n++)
446+ for (size_t n = 0; n < mir_output_get_num_pixel_formats(client_output); n++)
447 {
448 pixel_formats.push_back(mir_output_get_pixel_format(client_output, n));
449 }

Subscribers

People subscribed via source and target branches