Set an drop drm master on enter and leave vt

This way we can vt switch between wayland and X.
This commit is contained in:
Kristian Høgsberg 2009-10-01 16:43:54 -04:00
parent beed22b9a3
commit d2311cfba7

View File

@ -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;