Mir

Merge lp:~afrantzis/mir/glib-main-loop-default into lp:mir

Proposed by Alexandros Frantzis
Status: Merged
Approved by: Alberto Aguirre
Approved revision: no longer in the source branch.
Merged at revision: 2072
Proposed branch: lp:~afrantzis/mir/glib-main-loop-default
Merge into: lp:mir
Prerequisite: lp:~afrantzis/mir/glib-main-loop-exception-handling
Diff against target: 206 lines (+29/-24)
9 files modified
include/platform/mir/options/configuration.h (+1/-0)
include/server/mir/default_server_configuration.h (+1/-2)
platform-ABI-sha1sums (+1/-1)
server-ABI-sha1sums (+2/-2)
src/include/server/mir/glib_main_loop.h (+12/-12)
src/platform/options/default_configuration.cpp (+3/-1)
src/platform/symbols.map (+1/-0)
src/server/default_server_configuration.cpp (+6/-4)
tests/unit-tests/graphics/mesa/test_display.cpp (+2/-2)
To merge this branch: bzr merge lp:~afrantzis/mir/glib-main-loop-default
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Cemil Azizoglu (community) Approve
Alan Griffiths Approve
Kevin DuBois (community) Approve
Review via email: mp+241963@code.launchpad.net

This proposal supersedes a proposal from 2014-11-17.

Commit message

server: Use the GLibMainLoop implementation by default

This MP also adds an option of using the AsioMainLoop implementation (--use-asio-main-loop or MIR_SERVER_USE_ASIO_MAIN_LOOP) for easier comparative testing.

Description of the change

server: Use the GLibMainLoop implementation by default

This MP also adds an option of using the AsioMainLoop implementation (--use-asio-main-loop or MIR_SERVER_USE_ASIO_MAIN_LOOP) for easier comparative testing.

The plan is to completely remove the AsioMainLoop code and option when we gain sufficient confidence in the GLib-based implementation.

To post a comment you must log in.
Revision history for this message
Kevin DuBois (kdub) wrote :

looks good by me, perhaps though we could indicate in the help string for the option that the option will go away soon.

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

Looks good.

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

> The following tests FAILED:
> 3 - server-ABI-unchanged (Failed)
> 6 - platform-ABI-unchanged (Failed)

Syncing with lp:mir should fix this.

Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

> Syncing with lp:mir should fix this.

Turns out I had forgotten to commit the options/configuration.h updated sha1sum.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Alberto Aguirre (albaguirre) wrote :

Looks good, tested with unity8 stack on a Nexus 4.

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

Tested. Works fine with or without asio option set.

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Alberto Aguirre (albaguirre) wrote :

^-- Couldn't replicate it locally. Let's try TA'ing again.

Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'include/platform/mir/options/configuration.h'
2--- include/platform/mir/options/configuration.h 2014-11-12 11:41:58 +0000
3+++ include/platform/mir/options/configuration.h 2014-11-18 12:53:20 +0000
4@@ -44,6 +44,7 @@
5 extern char const* const touchspots_opt;
6 extern char const* const fatal_abort_opt;
7 extern char const* const debug_opt;
8+extern char const* const use_asio_main_loop_opt;
9
10 extern char const* const name_opt;
11 extern char const* const offscreen_opt;
12
13=== modified file 'include/server/mir/default_server_configuration.h'
14--- include/server/mir/default_server_configuration.h 2014-11-18 03:21:20 +0000
15+++ include/server/mir/default_server_configuration.h 2014-11-18 12:53:20 +0000
16@@ -414,8 +414,7 @@
17 CachedPtr<compositor::CompositorReport> compositor_report;
18 CachedPtr<logging::Logger> logger;
19 CachedPtr<graphics::DisplayReport> display_report;
20- // static to workaround the singleton clock in AsioMainLoop when running multiple servers
21- static CachedPtr<time::Clock> clock;
22+ CachedPtr<time::Clock> clock;
23 CachedPtr<MainLoop> main_loop;
24 CachedPtr<ServerStatusListener> server_status_listener;
25 CachedPtr<graphics::DisplayConfigurationPolicy> display_configuration_policy;
26
27=== modified file 'platform-ABI-sha1sums'
28--- platform-ABI-sha1sums 2014-11-18 03:21:20 +0000
29+++ platform-ABI-sha1sums 2014-11-18 12:53:20 +0000
30@@ -40,7 +40,7 @@
31 3b3463d2513f4c3985f2400496dab333518f9a13 include/platform/mir/graphics/platform_ipc_operations.h
32 1b77fb3290af00dc7d1c11dcc5388972dacb9ec3 include/platform/mir/graphics/platform_ipc_package.h
33 84c063346b3bd51b4624d9f940008d4c3f8be066 include/platform/mir/graphics/renderable.h
34-e21ddf2958273a8719550ca97e18602c9b9daa10 include/platform/mir/options/configuration.h
35+abeb45a8c6bfc81a12136f25e455e9803c32c10e include/platform/mir/options/configuration.h
36 47007c783c174f8e94d332c4b13c6b01358b48fb include/platform/mir/options/default_configuration.h
37 b45f14082c4f8b29efaa1b13de795dcb29deb738 include/platform/mir/options/option.h
38 3c37cc31e8b290b89c311d82f02e07d342766451 include/platform/mir/options/program_option.h
39
40=== modified file 'server-ABI-sha1sums'
41--- server-ABI-sha1sums 2014-11-18 03:21:20 +0000
42+++ server-ABI-sha1sums 2014-11-18 12:53:20 +0000
43@@ -40,7 +40,7 @@
44 3b3463d2513f4c3985f2400496dab333518f9a13 include/platform/mir/graphics/platform_ipc_operations.h
45 1b77fb3290af00dc7d1c11dcc5388972dacb9ec3 include/platform/mir/graphics/platform_ipc_package.h
46 84c063346b3bd51b4624d9f940008d4c3f8be066 include/platform/mir/graphics/renderable.h
47-e21ddf2958273a8719550ca97e18602c9b9daa10 include/platform/mir/options/configuration.h
48+abeb45a8c6bfc81a12136f25e455e9803c32c10e include/platform/mir/options/configuration.h
49 47007c783c174f8e94d332c4b13c6b01358b48fb include/platform/mir/options/default_configuration.h
50 b45f14082c4f8b29efaa1b13de795dcb29deb738 include/platform/mir/options/option.h
51 3c37cc31e8b290b89c311d82f02e07d342766451 include/platform/mir/options/program_option.h
52@@ -50,7 +50,7 @@
53 d49eae4f986645b32e29ce2c1f99f524703ba3c0 include/server/mir/compositor/display_buffer_compositor.h
54 878ab5c4007d16dac213a3eb0105421d8ffad206 include/server/mir/compositor/scene_element.h
55 4fcf34e424128b87ddc76733594e32e09ebbd486 include/server/mir/compositor/scene.h
56-bd13887133bab2dfaab764077983311485b233d0 include/server/mir/default_server_configuration.h
57+4b2f91f817b130a44bb0b40400d1086e86eeaecf include/server/mir/default_server_configuration.h
58 af1ff0714be973ac76d56006a2e5991f68cd1dec include/server/mir/display_server.h
59 a35c5495d8fd28fc0e375b17495fc5caab51b329 include/server/mir/emergency_cleanup.h
60 938de641cb0e01e1098b007b39b151a7dfe4adc1 include/server/mir/frontend/display_changer.h
61
62=== modified file 'src/include/server/mir/glib_main_loop.h'
63--- src/include/server/mir/glib_main_loop.h 2014-11-18 12:53:20 +0000
64+++ src/include/server/mir/glib_main_loop.h 2014-11-18 12:53:20 +0000
65@@ -47,7 +47,7 @@
66
67 }
68
69-class GLibMainLoop
70+class GLibMainLoop : public MainLoop
71 {
72 public:
73 GLibMainLoop(std::shared_ptr<time::Clock> const& clock);
74@@ -57,29 +57,29 @@
75
76 void register_signal_handler(
77 std::initializer_list<int> signals,
78- std::function<void(int)> const& handler);
79+ std::function<void(int)> const& handler) override;
80
81 void register_fd_handler(
82 std::initializer_list<int> fds,
83 void const* owner,
84- std::function<void(int)> const& handler);
85-
86- void unregister_fd_handler(void const* owner);
87-
88- void enqueue(void const* owner, ServerAction const& action);
89- void pause_processing_for(void const* owner);
90- void resume_processing_for(void const* owner);
91+ std::function<void(int)> const& handler) override;
92+
93+ void unregister_fd_handler(void const* owner) override;
94+
95+ void enqueue(void const* owner, ServerAction const& action) override;
96+ void pause_processing_for(void const* owner) override;
97+ void resume_processing_for(void const* owner) override;
98
99 std::unique_ptr<mir::time::Alarm> notify_in(
100 std::chrono::milliseconds delay,
101- std::function<void()> callback);
102+ std::function<void()> callback) override;
103
104 std::unique_ptr<mir::time::Alarm> notify_at(
105 mir::time::Timestamp t,
106- std::function<void()> callback);
107+ std::function<void()> callback) override;
108
109 std::unique_ptr<mir::time::Alarm> create_alarm(
110- std::function<void()> callback);
111+ std::function<void()> callback) override;
112
113 void reprocess_all_sources();
114
115
116=== modified file 'src/platform/options/default_configuration.cpp'
117--- src/platform/options/default_configuration.cpp 2014-11-12 11:41:58 +0000
118+++ src/platform/options/default_configuration.cpp 2014-11-18 12:53:20 +0000
119@@ -46,6 +46,7 @@
120 char const* const mo::touchspots_opt = "enable-touchspots";
121 char const* const mo::fatal_abort_opt = "on-fatal-error-abort";
122 char const* const mo::debug_opt = "debug";
123+char const* const mo::use_asio_main_loop_opt = "use-asio-main-loop";
124
125 char const* const mo::off_opt_value = "off";
126 char const* const mo::log_opt_value = "log";
127@@ -145,7 +146,8 @@
128 (fatal_abort_opt, "On \"fatal error\" conditions [e.g. drivers behaving "
129 "in unexpected ways] abort (to get a core dump)")
130 (debug_opt, "Enable extra development debugging. "
131- "This is only interesting for people doing Mir server or client development.");
132+ "This is only interesting for people doing Mir server or client development.")
133+ (use_asio_main_loop_opt, "Use the ASIO main loop implementation");
134
135 add_platform_options();
136 }
137
138=== modified file 'src/platform/symbols.map'
139--- src/platform/symbols.map 2014-11-18 03:21:20 +0000
140+++ src/platform/symbols.map 2014-11-18 12:53:20 +0000
141@@ -181,6 +181,7 @@
142 mir::options::server_socket_opt*;
143 mir::options::session_mediator_report_opt*;
144 mir::options::touchspots_opt*;
145+ mir::options::use_asio_main_loop_opt*;
146 non-virtual?thunk?to?mir::graphics::BasicPlatform::?BasicPlatform*;
147 non-virtual?thunk?to?mir::graphics::Cursor::?Cursor*;
148 non-virtual?thunk?to?mir::graphics::CursorImage::?CursorImage*;
149
150=== modified file 'src/server/default_server_configuration.cpp'
151--- src/server/default_server_configuration.cpp 2014-11-14 09:45:12 +0000
152+++ src/server/default_server_configuration.cpp 2014-11-18 12:53:20 +0000
153@@ -20,6 +20,7 @@
154 #include "mir/fatal.h"
155 #include "mir/options/default_configuration.h"
156 #include "mir/abnormal_exit.h"
157+#include "mir/glib_main_loop.h"
158 #include "mir/asio_main_loop.h"
159 #include "mir/default_server_status_listener.h"
160 #include "mir/emergency_cleanup.h"
161@@ -152,8 +153,6 @@
162 });
163 }
164
165-mir::CachedPtr<mir::time::Clock> mir::DefaultServerConfiguration::clock;
166-
167 std::shared_ptr<mir::time::Clock> mir::DefaultServerConfiguration::the_clock()
168 {
169 return clock(
170@@ -166,9 +165,12 @@
171 std::shared_ptr<mir::MainLoop> mir::DefaultServerConfiguration::the_main_loop()
172 {
173 return main_loop(
174- [this]()
175+ [this]() -> std::shared_ptr<mir::MainLoop>
176 {
177- return std::make_shared<mir::AsioMainLoop>(the_clock());
178+ if (the_options()->is_set(options::use_asio_main_loop_opt))
179+ return std::make_shared<mir::AsioMainLoop>(the_clock());
180+ else
181+ return std::make_shared<mir::GLibMainLoop>(the_clock());
182 });
183 }
184
185
186=== modified file 'tests/unit-tests/graphics/mesa/test_display.cpp'
187--- tests/unit-tests/graphics/mesa/test_display.cpp 2014-11-03 13:44:52 +0000
188+++ tests/unit-tests/graphics/mesa/test_display.cpp 2014-11-18 12:53:20 +0000
189@@ -24,7 +24,7 @@
190 #include "mir/graphics/display_buffer.h"
191 #include "src/server/graphics/default_display_configuration_policy.h"
192 #include "mir/time/steady_clock.h"
193-#include "mir/asio_main_loop.h"
194+#include "mir/glib_main_loop.h"
195
196 #include "mir_test_doubles/mock_egl.h"
197 #include "mir_test_doubles/mock_gl.h"
198@@ -717,7 +717,7 @@
199
200 auto display = create_display(create_platform());
201
202- mir::AsioMainLoop ml{std::make_shared<mir::time::SteadyClock>()};
203+ mir::GLibMainLoop ml{std::make_shared<mir::time::SteadyClock>()};
204 std::condition_variable done;
205
206 int const device_add_count{1};

Subscribers

People subscribed via source and target branches