| commit bf539e39c15e9a4ef4479d03c52263a3f020ef4a |
| Author: Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> |
| 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); |
| |