kmscon: pass vtnr to pty so XDG_VTNR is set

We need to correctly set the VTNR for each new pty, otherwise the pty
cannot set the XDG_VTNR correctly. Note that we do this only for real VTs,
that is, vtnr > 0.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
This commit is contained in:
David Herrmann 2013-06-12 15:53:03 +02:00
parent 35eb595863
commit 4962213bac
3 changed files with 15 additions and 5 deletions

@ -614,7 +614,8 @@ static void seat_input_event(struct uterm_input *input,
ev->handled = true;
if (!seat->conf->session_control)
return;
ret = kmscon_terminal_register(&s, seat);
ret = kmscon_terminal_register(&s, seat,
uterm_vt_get_num(seat->vt));
if (ret == -EOPNOTSUPP) {
log_notice("terminal support not compiled in");
} else if (ret) {
@ -791,7 +792,8 @@ void kmscon_seat_startup(struct kmscon_seat *seat)
}
if (seat->conf->terminal_session) {
ret = kmscon_terminal_register(&s, seat);
ret = kmscon_terminal_register(&s, seat,
uterm_vt_get_num(seat->vt));
if (ret == -EOPNOTSUPP)
log_notice("terminal support not compiled in");
else if (ret)

@ -580,7 +580,7 @@ static void write_event(struct tsm_vte *vte, const char *u8, size_t len,
}
int kmscon_terminal_register(struct kmscon_session **out,
struct kmscon_seat *seat)
struct kmscon_seat *seat, unsigned int vtnr)
{
struct kmscon_terminal *term;
int ret;
@ -646,6 +646,12 @@ int kmscon_terminal_register(struct kmscon_session **out,
if (ret)
goto err_pty;
if (vtnr > 0) {
ret = kmscon_pty_set_vtnr(term->pty, vtnr);
if (ret)
goto err_pty;
}
ret = ev_eloop_new_fd(term->eloop, &term->ptyfd,
kmscon_pty_get_fd(term->pty),
EV_READABLE, pty_event, term);

@ -40,12 +40,14 @@
#ifdef BUILD_ENABLE_SESSION_TERMINAL
int kmscon_terminal_register(struct kmscon_session **out,
struct kmscon_seat *seat);
struct kmscon_seat *seat,
unsigned int vtnr);
#else /* !BUILD_ENABLE_SESSION_TERMINAL */
static inline int kmscon_terminal_register(struct kmscon_session **out,
struct kmscon_seat *seat)
struct kmscon_seat *seat,
unsigned int vtnr)
{
return -EOPNOTSUPP;
}