diff options
-rw-r--r-- | gdb/tui/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/tui/tuiIO.c | 29 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gdb/tui/ChangeLog b/gdb/tui/ChangeLog index f00e838..85f317e 100644 --- a/gdb/tui/ChangeLog +++ b/gdb/tui/ChangeLog @@ -1,5 +1,12 @@ 2001-07-22 Stephane Carrez <Stephane.Carrez@worldnet.fr> + * 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 <Stephane.Carrez@worldnet.fr> + * tui.h (tui_show_assembly): Declare. (tui_is_window_visible): Declare. * tui.c (tui_show_assembly): New function. diff --git a/gdb/tui/tuiIO.c b/gdb/tui/tuiIO.c index c4d43a6..a089929 100644 --- a/gdb/tui/tuiIO.c +++ b/gdb/tui/tuiIO.c @@ -37,6 +37,7 @@ #include "ui-out.h" #include "cli-out.h" #include <fcntl.h> +#include <signal.h> /* 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); |