summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2012-01-15 14:29:09 -0500
committerKristian Høgsberg <krh@bitplanet.net>2012-01-15 15:25:05 -0500
commitc5b9ddb610611d236acde27c9d017bd92c5be52e (patch)
tree74cf517e98b724de7bc073abef7b5c6c6efe2db1
parent00513ab7ccb892aa71653b1e799466d85fd370db (diff)
compositor-drm: Fail, and fail early if we can't set up the tty
Typically a permissions problem. Weston should be setuid root or be launched by a setuid helper.
-rw-r--r--src/compositor-drm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 0d2fc57..8f6c8fc 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -840,6 +840,14 @@ drm_compositor_create(struct wl_display *display,
return NULL;
}
+ ec->base.wl_display = display;
+ ec->tty = tty_create(&ec->base, vt_func, tty);
+ if (!ec->tty) {
+ fprintf(stderr, "failed to initialize tty\n");
+ free(ec);
+ return NULL;
+ }
+
e = udev_enumerate_new(ec->udev);
udev_enumerate_add_match_subsystem(e, "drm");
udev_enumerate_add_match_sysname(e, "card[0-9]*");
@@ -865,7 +873,6 @@ drm_compositor_create(struct wl_display *display,
return NULL;
}
- ec->base.wl_display = display;
if (init_egl(ec, drm_device) < 0) {
fprintf(stderr, "failed to initialize egl\n");
return NULL;
@@ -901,7 +908,6 @@ drm_compositor_create(struct wl_display *display,
ec->drm_source =
wl_event_loop_add_fd(loop, ec->drm.fd,
WL_EVENT_READABLE, on_drm_input, ec);
- ec->tty = tty_create(&ec->base, vt_func, tty);
ec->udev_monitor = udev_monitor_new_from_netlink(ec->udev, "udev");
if (ec->udev_monitor == NULL) {