summaryrefslogtreecommitdiff
path: root/src/launcher-util.c
diff options
context:
space:
mode:
authorAdrian Negreanu <adrian.m.negreanu@intel.com>2013-09-27 20:58:45 +0300
committerKristian Høgsberg <krh@bitplanet.net>2013-09-30 15:38:15 -0700
commit908e6d0b8f76b6a49085e35bbbafbbf95405540c (patch)
tree80ec136036fe0d0eec08c868f546fef642f467ff /src/launcher-util.c
parenta356f7b1ef08fd9c2ad69cada89d68841e71a6bb (diff)
downloadweston-908e6d0b8f76b6a49085e35bbbafbbf95405540c.tar.gz
launcher-util: pull in drm only for compositor-drm
Add drm_set_master and drm_drop_master as wrappers for drm(Set|Drop)Master, when building compositor-drm or as empty functions otherwise. Signed-off-by: Adrian Negreanu <adrian.m.negreanu@intel.com>
Diffstat (limited to 'src/launcher-util.c')
-rw-r--r--src/launcher-util.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/launcher-util.c b/src/launcher-util.c
index a2ad0ec2..bdddbb85 100644
--- a/src/launcher-util.c
+++ b/src/launcher-util.c
@@ -40,7 +40,9 @@
#include <linux/kd.h>
#include <linux/major.h>
+#ifdef BUILD_DRM_COMPOSITOR
#include <xf86drm.h>
+#endif
#include "compositor.h"
#include "launcher-util.h"
@@ -196,6 +198,26 @@ weston_launcher_data(int fd, uint32_t mask, void *data)
return 1;
}
+#ifdef BUILD_DRM_COMPOSITOR
+static int
+drm_drop_master(int drm_fd)
+{
+ if (drm_fd != -1)
+ return drmDropMaster(drm_fd);
+ return -EBADF;
+}
+static int
+drm_set_master(int drm_fd)
+{
+ if (drm_fd != -1)
+ return drmSetMaster(drm_fd);
+ return -EBADF;
+}
+#else
+static int drm_drop_master(int drm_fd) {return 0;}
+static int drm_set_master(int drm_fd) {return 0;}
+#endif
+
static int
vt_handler(int signal_number, void *data)
{
@@ -205,13 +227,11 @@ vt_handler(int signal_number, void *data)
if (compositor->session_active) {
compositor->session_active = 0;
wl_signal_emit(&compositor->session_signal, compositor);
- if (launcher->drm_fd != -1)
- drmDropMaster(launcher->drm_fd);
+ drm_drop_master(launcher->drm_fd);
ioctl(launcher->tty, VT_RELDISP, 1);
} else {
ioctl(launcher->tty, VT_RELDISP, VT_ACKACQ);
- if (launcher->drm_fd != -1)
- drmSetMaster(launcher->drm_fd);
+ drm_set_master(launcher->drm_fd);
compositor->session_active = 1;
wl_signal_emit(&compositor->session_signal, compositor);
}