commit bf539e39c15e9a4ef4479d03c52263a3f020ef4a Author: Emilio Pozuelo Monfort Date: Mon Feb 3 16:57:27 2014 +0100 compositor-rpi: Fix input initialization The input initialization code assumes the outputs have already been initialized; thus create the outputs first. This fixes a segfault upon startup. It is also what the drm and fbdev backends do. diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c index 399090d..e7c0e0d 100644 --- a/src/compositor-rpi.c +++ b/src/compositor-rpi.c @@ -527,13 +527,6 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[], weston_log("Dispmanx planes are %s buffered.\n", 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++) weston_compositor_add_key_binding(&compositor->base, key, MODIFIER_CTRL | MODIFIER_ALT, @@ -549,19 +542,23 @@ rpi_compositor_create(struct wl_display *display, int *argc, char *argv[], bcm_host_init(); if (rpi_renderer_create(&compositor->base, ¶m->renderer) < 0) - goto out_udev_input; + goto out_launcher; if (rpi_output_create(compositor, param->output_transform) < 0) goto out_renderer; + if (udev_input_init(&compositor->input, + &compositor->base, + compositor->udev, "seat0") != 0) { + weston_log("Failed to initialize udev input.\n"); + goto out_renderer; + } + return &compositor->base; out_renderer: compositor->base.renderer->destroy(&compositor->base); -out_udev_input: - udev_input_destroy(&compositor->input); - out_launcher: weston_launcher_destroy(compositor->base.launcher);