From 1796e33441cba5f00acf5a715e85da35ec407dd4 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sat, 1 Dec 2012 15:05:07 +0100 Subject: [PATCH] seat: register cdev session only when --cdev is given We cannot have multiple instances of kmscon running with cdev emulation, so disable it by default. A kmscon-system-daemon now needs --cdev if you want fake VTs to work. Signed-off-by: David Herrmann --- src/kmscon_conf.c | 2 ++ src/kmscon_conf.h | 2 ++ src/kmscon_seat.c | 12 +++++++----- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/kmscon_conf.c b/src/kmscon_conf.c index f68f4e1..5ae9c2b 100644 --- a/src/kmscon_conf.c +++ b/src/kmscon_conf.c @@ -71,6 +71,7 @@ static void print_help() "\t-s, --switchvt [on] Automatically switch to VT\n" "\t --seats [seat0] Select seats or pass 'all' to make\n" "\t kmscon run on all seats\n" + "\t --cdev [off] Emulate kernel VTs\n" "\n" "Session Options:\n" "\t --session-max [50] Maximum number of sessions\n" @@ -458,6 +459,7 @@ int kmscon_conf_new(struct conf_ctx **out) CONF_OPTION(0, 0, "vt", &conf_vt, NULL, NULL, NULL, &conf->vt, NULL), CONF_OPTION_BOOL('s', "switchvt", &conf->switchvt, true), CONF_OPTION_STRING_LIST(0, "seats", &conf->seats, def_seats), + CONF_OPTION_BOOL(0, "cdev", &conf->cdev, false), /* Session Options */ CONF_OPTION_UINT(0, "session-max", &conf->session_max, 50), diff --git a/src/kmscon_conf.h b/src/kmscon_conf.h index f5a1a14..1788a99 100644 --- a/src/kmscon_conf.h +++ b/src/kmscon_conf.h @@ -57,6 +57,8 @@ struct kmscon_conf_t { bool switchvt; /* seats */ char **seats; + /* cdev */ + bool cdev; /* Session Options */ /* sessions */ diff --git a/src/kmscon_seat.c b/src/kmscon_seat.c index 04cc8c3..092275c 100644 --- a/src/kmscon_seat.c +++ b/src/kmscon_seat.c @@ -690,11 +690,13 @@ int kmscon_seat_new(struct kmscon_seat **out, else kmscon_session_enable(s); - ret = kmscon_cdev_register(&s, seat); - if (ret == -EOPNOTSUPP) - log_notice("cdev sessions not compiled in"); - else if (ret) - log_error("cannot register cdev session: %d", ret); + if (seat->conf->cdev) { + ret = kmscon_cdev_register(&s, seat); + if (ret == -EOPNOTSUPP) + log_notice("cdev sessions not compiled in"); + else if (ret) + log_error("cannot register cdev session: %d", ret); + } ret = kmscon_compositor_register(&s, seat); if (ret == -EOPNOTSUPP)