rpi: launcher must init before udev-seat
udev-seat will call weston_launcher_open(), so we better init launcher first. Fixes a segfault. Cc: Jonas Ådahl <jadahl@gmail.com> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
committed by
Kristian Høgsberg
parent
53b41c7890
commit
477333285e
+12
-12
@@ -511,13 +511,6 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
|
|||||||
goto out_compositor;
|
goto out_compositor;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (udev_input_init(&compositor->input,
|
|
||||||
&compositor->base,
|
|
||||||
compositor->udev, "seat0") != 0) {
|
|
||||||
weston_log("Failed to initialize udev input.\n");
|
|
||||||
goto out_udev;
|
|
||||||
}
|
|
||||||
|
|
||||||
compositor->session_listener.notify = session_notify;
|
compositor->session_listener.notify = session_notify;
|
||||||
wl_signal_add(&compositor->base.session_signal,
|
wl_signal_add(&compositor->base.session_signal,
|
||||||
&compositor ->session_listener);
|
&compositor ->session_listener);
|
||||||
@@ -525,7 +518,7 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
|
|||||||
weston_launcher_connect(&compositor->base, param->tty, "seat0");
|
weston_launcher_connect(&compositor->base, param->tty, "seat0");
|
||||||
if (!compositor->base.launcher) {
|
if (!compositor->base.launcher) {
|
||||||
weston_log("Failed to initialize tty.\n");
|
weston_log("Failed to initialize tty.\n");
|
||||||
goto out_udev_input;
|
goto out_udev;
|
||||||
}
|
}
|
||||||
|
|
||||||
compositor->base.destroy = rpi_compositor_destroy;
|
compositor->base.destroy = rpi_compositor_destroy;
|
||||||
@@ -537,6 +530,13 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
|
|||||||
weston_log("Dispmanx planes are %s buffered.\n",
|
weston_log("Dispmanx planes are %s buffered.\n",
|
||||||
compositor->single_buffer ? "single" : "double");
|
compositor->single_buffer ? "single" : "double");
|
||||||
|
|
||||||
|
if (udev_input_init(&compositor->input,
|
||||||
|
&compositor->base,
|
||||||
|
compositor->udev, "seat0") != 0) {
|
||||||
|
weston_log("Failed to initialize udev input.\n");
|
||||||
|
goto out_launcher;
|
||||||
|
}
|
||||||
|
|
||||||
for (key = KEY_F1; key < KEY_F9; key++)
|
for (key = KEY_F1; key < KEY_F9; key++)
|
||||||
weston_compositor_add_key_binding(&compositor->base, key,
|
weston_compositor_add_key_binding(&compositor->base, key,
|
||||||
MODIFIER_CTRL | MODIFIER_ALT,
|
MODIFIER_CTRL | MODIFIER_ALT,
|
||||||
@@ -552,7 +552,7 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
|
|||||||
bcm_host_init();
|
bcm_host_init();
|
||||||
|
|
||||||
if (rpi_renderer_create(&compositor->base, ¶m->renderer) < 0)
|
if (rpi_renderer_create(&compositor->base, ¶m->renderer) < 0)
|
||||||
goto out_launcher;
|
goto out_udev_input;
|
||||||
|
|
||||||
if (rpi_output_create(compositor, param->output_transform) < 0)
|
if (rpi_output_create(compositor, param->output_transform) < 0)
|
||||||
goto out_renderer;
|
goto out_renderer;
|
||||||
@@ -562,12 +562,12 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[],
|
|||||||
out_renderer:
|
out_renderer:
|
||||||
compositor->base.renderer->destroy(&compositor->base);
|
compositor->base.renderer->destroy(&compositor->base);
|
||||||
|
|
||||||
out_launcher:
|
|
||||||
weston_launcher_destroy(compositor->base.launcher);
|
|
||||||
|
|
||||||
out_udev_input:
|
out_udev_input:
|
||||||
udev_input_destroy(&compositor->input);
|
udev_input_destroy(&compositor->input);
|
||||||
|
|
||||||
|
out_launcher:
|
||||||
|
weston_launcher_destroy(compositor->base.launcher);
|
||||||
|
|
||||||
out_udev:
|
out_udev:
|
||||||
udev_unref(compositor->udev);
|
udev_unref(compositor->udev);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user