diff options
author | Kristian Høgsberg <krh@redhat.com> | 2009-10-01 16:43:54 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2009-10-01 16:43:54 -0400 |
commit | d2311cfba73ea92f91de1e709359ac85d564e9c7 (patch) | |
tree | 1519043f09f4d6f39f16b1d0a15fe93dd0081c63 | |
parent | beed22b9a39a3f0cb793b986a01f63d4b8695590 (diff) | |
download | wayland-d2311cfba73ea92f91de1e709359ac85d564e9c7.tar.gz wayland-d2311cfba73ea92f91de1e709359ac85d564e9c7.tar.xz wayland-d2311cfba73ea92f91de1e709359ac85d564e9c7.zip |
Set an drop drm master on enter and leave vt
This way we can vt switch between wayland and X.
-rw-r--r-- | wayland-system-compositor.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/wayland-system-compositor.c b/wayland-system-compositor.c index 9e8b50b..ee3c6d0 100644 --- a/wayland-system-compositor.c +++ b/wayland-system-compositor.c @@ -1355,10 +1355,16 @@ static void on_enter_vt(int signal_number, void *data) struct wlsc_output *output; int ret, fd; + fd = eglGetDisplayFD(ec->display); + ret = drmSetMaster(fd); + if (ret) { + fprintf(stderr, "failed to set drm master\n"); + return; + } + ioctl(ec->tty_fd, VT_RELDISP, VT_ACKACQ); ec->vt_active = TRUE; - fd = eglGetDisplayFD(ec->display); output = container_of(ec->output_list.next, struct wlsc_output, link); while (&output->link != &ec->output_list) { ret = drmModeSetCrtc(fd, output->crtc_id, @@ -1376,6 +1382,14 @@ static void on_enter_vt(int signal_number, void *data) static void on_leave_vt(int signal_number, void *data) { struct wlsc_compositor *ec = data; + int ret, fd; + + fd = eglGetDisplayFD(ec->display); + ret = drmDropMaster(fd); + if (ret) { + fprintf(stderr, "failed to drop drm master\n"); + return; + } ioctl (ec->tty_fd, VT_RELDISP, 1); ec->vt_active = FALSE; |