From: Emilio Pozuelo Monfort <[email protected]>

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.
---
 src/compositor-rpi.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

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, &param->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);
 
-- 
1.8.5.3

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to