terminal: perform hard-reset on exit

Before starting a pty on a terminal, we now perform a hard-reset to avoid
any left-overs from the previous pty.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
David Herrmann 2012-10-02 13:02:44 +02:00
parent bf3415c5b4
commit 6bf4723b04
3 changed files with 4 additions and 2 deletions

View File

@ -548,6 +548,7 @@ int kmscon_terminal_open(struct kmscon_terminal *term,
return -EINVAL;
kmscon_pty_close(term->pty);
tsm_vte_hard_reset(term->vte);
width = tsm_screen_get_width(term->console);
height = tsm_screen_get_height(term->console);
ret = kmscon_pty_open(term->pty, width, height);

View File

@ -619,7 +619,7 @@ void tsm_vte_reset(struct tsm_vte *vte)
reset_state(vte);
}
static void hard_reset(struct tsm_vte *vte)
void tsm_vte_hard_reset(struct tsm_vte *vte)
{
tsm_vte_reset(vte);
tsm_screen_erase_screen(vte->con, false);
@ -992,7 +992,7 @@ static void do_esc(struct tsm_vte *vte, uint32_t data)
break;
case 'c': /* RIS */
/* hard reset */
hard_reset(vte);
tsm_vte_hard_reset(vte);
break;
case '7': /* DECSC */
/* save console state */

View File

@ -76,6 +76,7 @@ void tsm_vte_unref(struct tsm_vte *vte);
int tsm_vte_set_palette(struct tsm_vte *vte, const char *palette);
void tsm_vte_reset(struct tsm_vte *vte);
void tsm_vte_hard_reset(struct tsm_vte *vte);
void tsm_vte_input(struct tsm_vte *vte, const char *u8, size_t len);
bool tsm_vte_handle_keyboard(struct tsm_vte *vte, uint32_t keysym,
unsigned int mods, uint32_t unicode);