Make xserver-launcher a module
diff --git a/src/compositor.c b/src/compositor.c
index 1be1e10..3e0139d 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2509,8 +2509,9 @@
struct wl_event_source *signals[4];
struct wl_event_loop *loop;
struct sigaction segv_action;
- void *shell_module, *backend_module;
+ void *shell_module, *backend_module, *xserver_module;
int (*shell_init)(struct weston_compositor *ec);
+ int (*xserver_init)(struct weston_compositor *ec);
struct weston_compositor
*(*backend_init)(struct wl_display *display,
int argc, char *argv[]);
@@ -2600,14 +2601,17 @@
ec->option_idle_time = idle_time;
ec->idle_time = idle_time;
-#ifdef BUILD_XSERVER_LAUNCHER
- if (xserver)
- weston_xserver_init(ec);
-#endif
-
if (shell_init(ec) < 0)
exit(EXIT_FAILURE);
+ xserver_init = NULL;
+ if (xserver)
+ xserver_init = load_module("xserver-launcher.so",
+ "weston_xserver_init",
+ &xserver_module);
+ if (xserver_init)
+ xserver_init(ec);
+
if (wl_display_add_socket(display, socket_name)) {
fprintf(stderr, "failed to add socket: %m\n");
exit(EXIT_FAILURE);