Mir

Merge lp:~kdub/mir/unbreak-abi-0.21 into lp:mir

Proposed by Kevin DuBois
Status: Superseded
Proposed branch: lp:~kdub/mir/unbreak-abi-0.21
Merge into: lp:mir
Diff against target: 443 lines (+118/-80)
13 files modified
debian/changelog (+54/-5)
include/server/mir/scene/surface.h (+0/-2)
include/server/mir/shell/surface_specification.h (+0/-1)
src/client/symbols.map (+1/-3)
src/server/compositor/stream.cpp (+1/-0)
src/server/frontend/session_mediator.cpp (+4/-16)
src/server/scene/application_session.cpp (+1/-1)
src/server/scene/basic_surface.cpp (+2/-6)
tests/acceptance-tests/test_client_scaling.cpp (+9/-0)
tests/unit-tests/frontend/test_session_mediator.cpp (+2/-2)
tests/unit-tests/scene/test_application_session.cpp (+6/-6)
tests/unit-tests/scene/test_basic_surface.cpp (+33/-33)
tests/unit-tests/scene/test_surface_stack.cpp (+5/-5)
To merge this branch: bzr merge lp:~kdub/mir/unbreak-abi-0.21
Reviewer Review Type Date Requested Status
Mir development team Pending
Review via email: mp+289519@code.launchpad.net

Commit message

server: Unbreak the mirserver ABI at the expense of breaking some scaling tests for the NBS (which isn't on or used at this time).

Description of the change

server: Unbreak the mirserver ABI at the expense of breaking some scaling tests for the NBS (which isn't on or used at this time).

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/changelog'
2--- debian/changelog 2016-03-16 06:59:01 +0000
3+++ debian/changelog 2016-03-18 15:28:35 +0000
4@@ -1,14 +1,63 @@
5 mir (0.21.0-0ubuntu1) UNRELEASED; urgency=medium
6
7 * New upstream release 0.21.0 (https://launchpad.net/mir/+milestone/0.21.0)
8- - ABI summary:
9- . No ABI changes.
10+ - ABI summary: There are no ABI breaks at all since Mir 0.20:
11+ . mirclient ABI unchanged at 9
12+ . mirserver ABI unchanged at 38
13+ . mircommon ABI unchanged at 5
14+ . mirplatform ABI unchanged at 11
15+ . mirprotobuf ABI unchanged at 3
16+ . mirplatformgraphics ABI unchaged at 8
17+ . mirclientplatform ABI unchanged at 4
18+ . mirinputplatform ABI unchanged at 5
19 - Enhancements:
20- . TODO: Someone detail these
21+ . New display enumeration API
22+ . Added Android diagnostic tests to assist during porting to
23+ new devices
24+ . Added mir_demo_client_camera: a Video4Linux2 client
25 - Bugs fixed:
26- . TODO: List these after branching lp:mir/0.21
27+ . Mir crashed with exception 'failed to add sync point to command
28+ buffer' (LP: #1554635)
29+ . Mouse cursor is unusably slow in Unity 8 with a 1000Hz mouse
30+ (LP: #1539009)
31+ . Packaged mir_unit_tests binary is not suitable for general use
32+ (LP: #1547015)
33+ . [regression] Mir stops receiving input after a pause/resume
34+ cycle (LP: #1548989)
35+ . NBS (--nbuffers=0) causes software clients to crash with
36+ std::exception::what: Failed to mmap buffer 13, "Permission denied")
37+ (LP: #1550432)
38+ . Fullscreen clients freeze when using NBS with multiple monitors
39+ (LP: #1551536)
40+ . [ FAILED ] DisplayConfigurationTest.output_position_is_independent_of_
41+ orientation (LP: #1552065)
42+ . The server-side use of MIR_SOCKET is confusing (LP: #1290345)
43+ . [regression] FTBFS with -DMIR_LINK_TIME_OPTIMIZATION=on
44+ -Duse_debflags=on (LP: #1350343)
45+ . Mir On X (mesa-x11) keeps receiving mouse movement events even
46+ when not focused (LP: #1528110)
47+ . x11 platform: mouse cursor moves strange (LP: #1546324)
48+ . Cross compiling to wily/vivid doesn't work (LP: #1549152)
49+ . Rendering stutters when a new client establishes a connection
50+ (LP: #1549359)
51+ . 'mir_demo_server --test-client' crashes (SIGSEGV) when client
52+ dies (LP: #1555620)
53+ . [testfail] CI failure: TestClientInput.client_input_config_request_
54+ receives_all_attached_devices (LP: #1555708)
55+ . [regression] Mir FTBFS when MIR_ENABLE_TESTS=no (LP: #1556080)
56+ . Mir-on-X11 doesn't exit (until it gets an event) (LP: #1556210)
57+ . InputPlatformProbe.x11_platform_found_and_used_when_display_connection_
58+ works breaks with old input drivers present (LP: #1543049)
59+ . [regression] MIR_CLIENT_PERF_REPORT is missing window/surface
60+ names (LP: #1546933)
61+ . Installed binaries fail to run with mir_demo_server --test-client XXXX
62+ (LP: #1556160)
63+ . mir_demo_server --test-client [mir_demo_client_scroll|
64+ mir_demo_client_flicker] fails (LP: #1556205)
65+ . The contents of debian/mir-demos.examples are out of date and useless
66+ (LP: #1557446)
67
68- -- Daniel van Vugt <daniel.van.vugt@canonical.com> Tue, 15 Mar 2016 15:22:57 +0800
69+ -- Alberto Aguirre <alberto.aguirre@canonical.com> Thu, 17 Mar 2016 14:08:50 -0500
70
71 mir (0.20.2+16.04.20160307-0ubuntu1) xenial; urgency=medium
72
73
74=== modified file 'include/server/mir/scene/surface.h'
75--- include/server/mir/scene/surface.h 2016-03-14 10:13:49 +0000
76+++ include/server/mir/scene/surface.h 2016-03-18 15:28:35 +0000
77@@ -23,7 +23,6 @@
78 #include "mir/input/surface.h"
79 #include "mir/frontend/surface.h"
80 #include "mir/compositor/compositor_id.h"
81-#include "mir/optional_value.h"
82
83 #include <vector>
84 #include <list>
85@@ -41,7 +40,6 @@
86 {
87 std::shared_ptr<compositor::BufferStream> stream;
88 geometry::Displacement displacement;
89- optional_value<geometry::Size> size;
90 };
91
92 class SurfaceObserver;
93
94=== modified file 'include/server/mir/shell/surface_specification.h'
95--- include/server/mir/shell/surface_specification.h 2016-03-14 10:13:49 +0000
96+++ include/server/mir/shell/surface_specification.h 2016-03-18 15:28:35 +0000
97@@ -43,7 +43,6 @@
98 {
99 frontend::BufferStreamId stream_id;
100 geometry::Displacement displacement;
101- optional_value<geometry::Size> size;
102 };
103
104 /// Specification of surface properties requested by client
105
106=== modified file 'src/client/symbols.map'
107--- src/client/symbols.map 2016-03-17 11:34:33 +0000
108+++ src/client/symbols.map 2016-03-18 15:28:35 +0000
109@@ -222,9 +222,7 @@
110 mir_surface_spec_set_shell_chrome;
111 } MIR_CLIENT_9v18;
112
113-# The bumps to protobuf::current_protocol_version() and MIR_CLIENT_MINOR_VERSION
114-# corresponding to these APIs have been applied.
115-MIR_CLIENT_9_unreleased {
116+MIR_CLIENT_9v20 {
117 global:
118 mir_connection_apply_display_configuration;
119 mir_connection_create_display_configuration;
120
121=== modified file 'src/server/compositor/stream.cpp'
122--- src/server/compositor/stream.cpp 2016-03-14 10:13:49 +0000
123+++ src/server/compositor/stream.cpp 2016-03-18 15:28:35 +0000
124@@ -80,6 +80,7 @@
125 {
126 std::lock_guard<decltype(mutex)> lk(mutex);
127 first_frame_posted = true;
128+ size = buffer->size();
129 buffers->receive_buffer(buffer->id());
130 schedule->schedule((*buffers)[buffer->id()]);
131 if (buffers->client_owned_buffer_count() == 0)
132
133=== modified file 'src/server/frontend/session_mediator.cpp'
134--- src/server/frontend/session_mediator.cpp 2016-03-16 06:59:01 +0000
135+++ src/server/frontend/session_mediator.cpp 2016-03-18 15:28:35 +0000
136@@ -592,22 +592,10 @@
137 std::vector<msh::StreamSpecification> stream_spec;
138 for (auto& stream : surface_specification.stream())
139 {
140- if (stream.has_width() && stream.has_height())
141- {
142- stream_spec.emplace_back(
143- msh::StreamSpecification{
144- mf::BufferStreamId{stream.id().value()},
145- geom::Displacement{stream.displacement_x(), stream.displacement_y()},
146- geom::Size{stream.width(), stream.height()}});
147- }
148- else
149- {
150- stream_spec.emplace_back(
151- msh::StreamSpecification{
152- mf::BufferStreamId{stream.id().value()},
153- geom::Displacement{stream.displacement_x(), stream.displacement_y()},
154- {}});
155- }
156+ stream_spec.emplace_back(
157+ msh::StreamSpecification{
158+ mf::BufferStreamId{stream.id().value()},
159+ geom::Displacement{stream.displacement_x(), stream.displacement_y()}});
160 }
161 mods.streams = std::move(stream_spec);
162 }
163
164=== modified file 'src/server/scene/application_session.cpp'
165--- src/server/scene/application_session.cpp 2016-03-16 06:59:01 +0000
166+++ src/server/scene/application_session.cpp 2016-03-18 15:28:35 +0000
167@@ -370,7 +370,7 @@
168 for (auto& stream : streams)
169 {
170 auto s = checked_find(stream.stream_id)->second;
171- list.emplace_back(ms::StreamInfo{s, stream.displacement, stream.size});
172+ list.emplace_back(ms::StreamInfo{s, stream.displacement});
173 }
174 surface.set_streams(list);
175 }
176
177=== modified file 'src/server/scene/basic_surface.cpp'
178--- src/server/scene/basic_surface.cpp 2016-03-16 06:59:01 +0000
179+++ src/server/scene/basic_surface.cpp 2016-03-18 15:28:35 +0000
180@@ -222,7 +222,7 @@
181 cursor_image_(cursor_image),
182 report(report),
183 parent_(parent),
184- layers({StreamInfo{buffer_stream, {0,0}, {}}}),
185+ layers({StreamInfo{buffer_stream, {0,0}}}),
186 cursor_stream_adapter{std::make_unique<ms::CursorStreamImageAdapter>(*this)},
187 input_validator([this](MirEvent const& ev) { this->input_sender->send_event(ev, server_input_channel); })
188 {
189@@ -891,11 +891,7 @@
190 {
191 if (info.stream->has_submitted_buffer())
192 {
193- geom::Size size;
194- if (info.size.is_set())
195- size = info.size.value();
196- else
197- size = info.stream->stream_size();
198+ geom::Size size = info.stream->stream_size();
199
200 list.emplace_back(std::make_shared<SurfaceSnapshot>(
201 info.stream, id,
202
203=== modified file 'tests/acceptance-tests/test_client_scaling.cpp'
204--- tests/acceptance-tests/test_client_scaling.cpp 2016-03-14 10:13:49 +0000
205+++ tests/acceptance-tests/test_client_scaling.cpp 2016-03-18 15:28:35 +0000
206@@ -158,6 +158,15 @@
207
208 TEST_F(SurfaceScaling, compositor_sees_size_different_when_scaled)
209 {
210+ //FIXME: need an ABI break to get this to work for NBS. Temporarily disabled for a
211+ // no ABI break release.
212+ auto nbuffers_opt = getenv("MIR_SERVER_NBUFFERS");
213+ if (nbuffers_opt && !strcmp(nbuffers_opt, "0"))
214+ {
215+ SUCCEED() << "temporarily disabled test for MIR_SERVER_NBUFFERS=0";
216+ return;
217+ }
218+
219 using namespace std::literals::chrono_literals;
220 auto scale = 2.0f;
221 auto stream = mir_surface_get_buffer_stream(surface);
222
223=== modified file 'tests/unit-tests/frontend/test_session_mediator.cpp'
224--- tests/unit-tests/frontend/test_session_mediator.cpp 2016-03-16 06:59:01 +0000
225+++ tests/unit-tests/frontend/test_session_mediator.cpp 2016-03-18 15:28:35 +0000
226@@ -963,8 +963,8 @@
227 EXPECT_CALL(*shell, modify_surface(_,
228 mf::SurfaceId{surface_response.id().value()},
229 StreamsAre(std::vector<msh::StreamSpecification>{
230- {mf::BufferStreamId(streams[0].id().value()), displacement[0], {}},
231- {mf::BufferStreamId(streams[1].id().value()), displacement[1], {}},
232+ {mf::BufferStreamId(streams[0].id().value()), displacement[0]},
233+ {mf::BufferStreamId(streams[1].id().value()), displacement[1]},
234 })));
235
236 mediator.modify_surface(&mods, &null, null_callback.get());
237
238=== modified file 'tests/unit-tests/scene/test_application_session.cpp'
239--- tests/unit-tests/scene/test_application_session.cpp 2016-03-16 06:59:01 +0000
240+++ tests/unit-tests/scene/test_application_session.cpp 2016-03-18 15:28:35 +0000
241@@ -574,15 +574,15 @@
242 auto stream_id2 = session->create_buffer_stream(stream_properties);
243
244 std::list<ms::StreamInfo> info {
245- {streams[2], geom::Displacement{0,3}, {}},
246- {streams[0], geom::Displacement{-1,1}, {}},
247- {streams[1], geom::Displacement{0,2}, {}}
248+ {streams[2], geom::Displacement{0,3}},
249+ {streams[0], geom::Displacement{-1,1}},
250+ {streams[1], geom::Displacement{0,2}}
251 };
252 EXPECT_CALL(*mock_surface, set_streams(Pointwise(StreamEq(), info)));
253 session->configure_streams(*mock_surface, {
254- {stream_id2, geom::Displacement{0,3}, {}},
255- {stream_id0, geom::Displacement{-1,1}, {}},
256- {stream_id1, geom::Displacement{0,2}, {}}
257+ {stream_id2, geom::Displacement{0,3}},
258+ {stream_id0, geom::Displacement{-1,1}},
259+ {stream_id1, geom::Displacement{0,2}}
260 });
261 }
262
263
264=== modified file 'tests/unit-tests/scene/test_basic_surface.cpp'
265--- tests/unit-tests/scene/test_basic_surface.cpp 2016-03-16 06:59:01 +0000
266+++ tests/unit-tests/scene/test_basic_surface.cpp 2016-03-18 15:28:35 +0000
267@@ -811,10 +811,10 @@
268 auto buffer_stream2 = std::make_shared<NiceMock<mtd::MockBufferStream>>();
269
270 std::list<ms::StreamInfo> streams = {
271- { mock_buffer_stream, {0,0}, {}},
272- { buffer_stream0, d0, {} },
273- { buffer_stream1, d1, {} },
274- { buffer_stream2, d2, {} }
275+ { mock_buffer_stream, {0,0}},
276+ { buffer_stream0, d0 },
277+ { buffer_stream1, d1 },
278+ { buffer_stream2, d2 }
279 };
280 surface.set_streams(streams);
281
282@@ -835,8 +835,8 @@
283 auto buffer_stream = std::make_shared<NiceMock<mtd::MockBufferStream>>();
284
285 std::list<ms::StreamInfo> streams = {
286- { mock_buffer_stream, {0,0}, {} },
287- { buffer_stream, d, {} }
288+ { mock_buffer_stream, {0,0} },
289+ { buffer_stream, d }
290 };
291
292 surface.set_streams(streams);
293@@ -868,8 +868,8 @@
294 auto buffer_stream0 = std::make_shared<NiceMock<mtd::MockBufferStream>>();
295 auto buffer_stream1 = std::make_shared<NiceMock<mtd::MockBufferStream>>();
296 std::list<ms::StreamInfo> streams = {
297- { buffer_stream0, {0,0}, {} },
298- { buffer_stream1, {0,0}, {} }
299+ { buffer_stream0, {0,0} },
300+ { buffer_stream1, {0,0} }
301 };
302 surface.set_streams(streams);
303 auto renderables = surface.generate_renderables(this);
304@@ -909,18 +909,18 @@
305 .InSequence(seq1);
306
307 std::list<ms::StreamInfo> streams = {
308- { buffer_stream0, {0,0}, {} },
309- { buffer_stream1, {0,0}, {} },
310+ { buffer_stream0, {0,0} },
311+ { buffer_stream1, {0,0} },
312 };
313 surface.set_streams(streams);
314
315- streams = { { buffer_stream0, {0,0}, {} } };
316- surface.set_streams(streams);
317-
318- streams = { { buffer_stream1, {0,0}, {} } };
319- surface.set_streams(streams);
320-
321- streams = { { buffer_stream0, {0,0}, {} } };
322+ streams = { { buffer_stream0, {0,0} } };
323+ surface.set_streams(streams);
324+
325+ streams = { { buffer_stream1, {0,0} } };
326+ surface.set_streams(streams);
327+
328+ streams = { { buffer_stream0, {0,0} } };
329 surface.set_streams(streams);
330 }
331
332@@ -929,8 +929,8 @@
333 using namespace testing;
334 auto buffer_stream = std::make_shared<NiceMock<mtd::MockBufferStream>>();
335 std::list<ms::StreamInfo> streams = {
336- { mock_buffer_stream, {0,0}, {} },
337- { buffer_stream, {0,0}, {} }
338+ { mock_buffer_stream, {0,0} },
339+ { buffer_stream, {0,0} }
340 };
341 surface.set_streams(streams);
342
343@@ -950,8 +950,8 @@
344
345 auto buffer_stream = std::make_shared<NiceMock<mtd::MockBufferStream>>();
346 std::list<ms::StreamInfo> streams = {
347- { mock_buffer_stream, {0,0}, {} },
348- { buffer_stream, {0,0}, {} }
349+ { mock_buffer_stream, {0,0} },
350+ { buffer_stream, {0,0} }
351 };
352
353 surface.set_streams(streams);
354@@ -967,7 +967,7 @@
355 EXPECT_THAT(renderables[1], IsRenderableOfAlpha(alpha));
356 }
357
358-TEST_F(BasicSurfaceTest, setting_streams_with_size_changes_sizes)
359+TEST_F(BasicSurfaceTest, DISABLED_setting_streams_with_size_changes_sizes)
360 {
361 using namespace testing;
362
363@@ -980,8 +980,8 @@
364 ON_CALL(*buffer_stream, stream_size())
365 .WillByDefault(Return(bad_size));
366 std::list<ms::StreamInfo> streams = {
367- { mock_buffer_stream, {0,0}, size0 },
368- { buffer_stream, {0,0}, size1 }
369+ { mock_buffer_stream, {0,0} },
370+ { buffer_stream, {0,0} }
371 };
372
373 surface.set_streams(streams);
374@@ -997,8 +997,8 @@
375
376 auto buffer_stream = std::make_shared<NiceMock<mtd::MockBufferStream>>();
377 std::list<ms::StreamInfo> streams = {
378- { mock_buffer_stream, {0,0}, {} },
379- { buffer_stream, {0,0}, {} }
380+ { mock_buffer_stream, {0,0} },
381+ { buffer_stream, {0,0} }
382 };
383
384 EXPECT_CALL(*mock_buffer_stream, allow_framedropping(true));
385@@ -1020,8 +1020,8 @@
386 ON_CALL(*mock_buffer_stream1, has_submitted_buffer())
387 .WillByDefault(Invoke([&stream2_visible] { return stream2_visible; }));
388 std::list<ms::StreamInfo> streams = {
389- { mock_buffer_stream, {0,0}, {} },
390- { mock_buffer_stream1, displacement, {} },
391+ { mock_buffer_stream, {0,0} },
392+ { mock_buffer_stream1, displacement },
393 };
394 surface.set_streams(streams);
395
396@@ -1059,9 +1059,9 @@
397 .WillOnce(Return(1));
398
399 std::list<ms::StreamInfo> streams = {
400- { mock_buffer_stream, {0,0}, {} },
401- { buffer_stream0, {0,0}, {} },
402- { buffer_stream1, {0,0}, {} },
403+ { mock_buffer_stream, {0,0} },
404+ { buffer_stream0, {0,0} },
405+ { buffer_stream1, {0,0} },
406 };
407 surface.set_streams(streams);
408 EXPECT_THAT(surface.buffers_ready_for_compositor(this), Eq(3));
409@@ -1083,8 +1083,8 @@
410 .WillByDefault(Return(size1));
411
412 std::list<ms::StreamInfo> streams = {
413- { mock_buffer_stream, d0, {} },
414- { buffer_stream, d1, {} },
415+ { mock_buffer_stream, d0 },
416+ { buffer_stream, d1 },
417 };
418 surface.set_streams(streams);
419
420
421=== modified file 'tests/unit-tests/scene/test_surface_stack.cpp'
422--- tests/unit-tests/scene/test_surface_stack.cpp 2016-03-14 10:13:49 +0000
423+++ tests/unit-tests/scene/test_surface_stack.cpp 2016-03-18 15:28:35 +0000
424@@ -228,15 +228,15 @@
425 auto stub_stream1 = std::make_shared<mtd::StubBufferStream>();
426 auto stub_stream2 = std::make_shared<mtd::StubBufferStream>();
427 std::list<ms::StreamInfo> streams = {
428- { stub_surface1->buffer_stream(), {0,0}, {} },
429- { stub_stream0, {2,2}, {} },
430- { stub_stream1, {2,3}, {} },
431+ { stub_surface1->buffer_stream(), {0,0} },
432+ { stub_stream0, {2,2} },
433+ { stub_stream1, {2,3} },
434 };
435 stub_surface1->set_streams(streams);
436
437 streams = {
438- { stub_stream2, {2,4}, {} },
439- { stub_surface3->buffer_stream(), {0,0}, {} }
440+ { stub_stream2, {2,4} },
441+ { stub_surface3->buffer_stream(), {0,0} }
442 };
443 stub_surface3->set_streams(streams);
444

Subscribers

People subscribed via source and target branches