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; return -EINVAL;
kmscon_pty_close(term->pty); kmscon_pty_close(term->pty);
tsm_vte_hard_reset(term->vte);
width = tsm_screen_get_width(term->console); width = tsm_screen_get_width(term->console);
height = tsm_screen_get_height(term->console); height = tsm_screen_get_height(term->console);
ret = kmscon_pty_open(term->pty, width, height); 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); 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_vte_reset(vte);
tsm_screen_erase_screen(vte->con, false); tsm_screen_erase_screen(vte->con, false);
@ -992,7 +992,7 @@ static void do_esc(struct tsm_vte *vte, uint32_t data)
break; break;
case 'c': /* RIS */ case 'c': /* RIS */
/* hard reset */ /* hard reset */
hard_reset(vte); tsm_vte_hard_reset(vte);
break; break;
case '7': /* DECSC */ case '7': /* DECSC */
/* save console state */ /* 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); int tsm_vte_set_palette(struct tsm_vte *vte, const char *palette);
void tsm_vte_reset(struct tsm_vte *vte); 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); 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, bool tsm_vte_handle_keyboard(struct tsm_vte *vte, uint32_t keysym,
unsigned int mods, uint32_t unicode); unsigned int mods, uint32_t unicode);