summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/launcher-util.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/launcher-util.c b/src/launcher-util.c
index ac764dc8..ad81aef7 100644
--- a/src/launcher-util.c
+++ b/src/launcher-util.c
@@ -342,9 +342,21 @@ setup_tty(struct weston_launcher *launcher, int tty)
goto err_close;
}
+ /*
+ * SIGRTMIN is used as global VT-acquire+release signal. Note that
+ * SIGRT* must be tested on runtime, as their exact values are not
+ * known at compile-time. POSIX requires 32 of them to be available.
+ */
+ if (SIGRTMIN > SIGRTMAX) {
+ weston_log("not enough RT signals available: %u-%u\n",
+ SIGRTMIN, SIGRTMAX);
+ ret = -EINVAL;
+ goto err_close;
+ }
+
mode.mode = VT_PROCESS;
- mode.relsig = SIGUSR1;
- mode.acqsig = SIGUSR1;
+ mode.relsig = SIGRTMIN;
+ mode.acqsig = SIGRTMIN;
if (ioctl(launcher->tty, VT_SETMODE, &mode) < 0) {
weston_log("failed to take control of vt handling\n");
goto err_close;
@@ -352,7 +364,7 @@ setup_tty(struct weston_launcher *launcher, int tty)
loop = wl_display_get_event_loop(launcher->compositor->wl_display);
launcher->vt_source =
- wl_event_loop_add_signal(loop, SIGUSR1, vt_handler, launcher);
+ wl_event_loop_add_signal(loop, SIGRTMIN, vt_handler, launcher);
if (!launcher->vt_source)
goto err_close;