--- /dev/null
+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);
+