compositor: Generalize VT switching as a session_signal
Instead of a callback from the tty module, we now have a compositor level
signal that fires when our session is activated or deactivated.
diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
index 495c3a3..9fa4217 100644
--- a/src/compositor-fbdev.c
+++ b/src/compositor-fbdev.c
@@ -53,6 +53,7 @@
struct tty *tty;
struct udev_input input;
int use_pixman;
+ struct wl_listener session_listener;
};
struct fbdev_screeninfo {
@@ -804,13 +805,12 @@
}
static void
-vt_func(struct weston_compositor *base, int event)
+session_notify(struct wl_listener *listener, void *data)
{
- struct fbdev_compositor *compositor = to_fbdev_compositor(base);
+ struct fbdev_compositor *compositor = data;
struct weston_output *output;
- switch (event) {
- case TTY_ENTER_VT:
+ if (compositor->base.session_active) {
weston_log("entering VT\n");
compositor->base.focus = 1;
compositor->base.state = compositor->prev_state;
@@ -822,8 +822,7 @@
weston_compositor_damage_all(&compositor->base);
udev_input_enable(&compositor->input, compositor->udev);
- break;
- case TTY_LEAVE_VT:
+ } else {
weston_log("leaving VT\n");
udev_input_disable(&compositor->input);
@@ -846,8 +845,6 @@
&compositor->base.output_list, link) {
output->repaint_needed = 0;
}
-
- break;
};
}
@@ -901,7 +898,10 @@
}
/* Set up the TTY. */
- compositor->tty = tty_create(&compositor->base, vt_func, param->tty);
+ compositor->session_listener.notify = session_notify;
+ wl_signal_add(&compositor->base.session_signal,
+ &compositor->session_listener);
+ compositor->tty = tty_create(&compositor->base, param->tty);
if (!compositor->tty) {
weston_log("Failed to initialize tty.\n");
goto out_udev;