From: Stephane Carrez Date: Sat, 21 Jul 2001 22:35:40 +0000 (+0000) Subject: * tuiIO.c (tui_initialize_io): Install tui_cont_sig signal handler X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d876a16bb342a6438a0e7627e1f919de85415d7;p=binutils-gdb.git * tuiIO.c (tui_initialize_io): Install tui_cont_sig signal handler if SIGCONT is defined. (tui_cont_sig): New function when SIGCONT is defined. (tui_setup_io): Save tty setting to restore by SIGCONT. --- diff --git a/gdb/tui/ChangeLog b/gdb/tui/ChangeLog index f00e8389ceb..85f317e6a88 100644 --- a/gdb/tui/ChangeLog +++ b/gdb/tui/ChangeLog @@ -1,3 +1,10 @@ +2001-07-22 Stephane Carrez + + * tuiIO.c (tui_initialize_io): Install tui_cont_sig signal handler + if SIGCONT is defined. + (tui_cont_sig): New function when SIGCONT is defined. + (tui_setup_io): Save tty setting to restore by SIGCONT. + 2001-07-22 Stephane Carrez * tui.h (tui_show_assembly): Declare. diff --git a/gdb/tui/tuiIO.c b/gdb/tui/tuiIO.c index c4d43a63a12..a0899292715 100644 --- a/gdb/tui/tuiIO.c +++ b/gdb/tui/tuiIO.c @@ -37,6 +37,7 @@ #include "ui-out.h" #include "cli-out.h" #include +#include /* This file controls the IO interactions between gdb and curses. When the TUI is enabled, gdb has two modes a curses and a standard @@ -267,6 +268,9 @@ tui_setup_io (int mode) gdb_stdlog = gdb_stdout; /* for moment */ gdb_stdtarg = gdb_stderr; /* for moment */ uiout = tui_out; + + /* Save tty for SIGCONT. */ + savetty (); } else { @@ -284,13 +288,38 @@ tui_setup_io (int mode) rl_getc_function = tui_old_rl_getc_function; rl_outstream = tui_old_rl_outstream; readline_echoing_p = tui_old_readline_echoing_p; + + /* Save tty for SIGCONT. */ + savetty (); } } +#ifdef SIGCONT +/* Catch SIGCONT to restore the terminal and refresh the screen. */ +static void +tui_cont_sig (int sig) +{ + if (tui_active) + { + /* Restore the terminal setting because another process (shell) + might have changed it. */ + resetty (); + + /* Force a refresh of the screen. */ + tuiRefreshAll (); + } + signal (sig, tui_cont_sig); +} +#endif + /* Initialize the IO for gdb in curses mode. */ void tui_initialize_io () { +#ifdef SIGCONT + signal (SIGCONT, tui_cont_sig); +#endif + /* Create tui output streams. */ tui_stdout = tui_fileopen (stdout); tui_stderr = tui_fileopen (stderr);