From c61db772bf5dc21bf8e0db9acfa8796804f945ab Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 21 Jun 2016 01:11:49 +0100 Subject: [PATCH] Always process target events in the main UI This makes target events always be always processed with the main UI as current UI. This way, warnings, debug output, etc. are always consistently sent to the main console. gdb/ChangeLog: 2016-06-21 Pedro Alves * event-top.c (restore_ui_cleanup): Make extern. * infrun.c (fetch_inferior_event): Always switch to the main UI. * top.h (restore_ui_cleanup): Declare. --- gdb/ChangeLog | 6 ++++++ gdb/event-top.c | 4 ++-- gdb/infrun.c | 6 ++++++ gdb/top.h | 3 +++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c60ac72d063..d87a51b79cc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2016-06-21 Pedro Alves + + * event-top.c (restore_ui_cleanup): Make extern. + * infrun.c (fetch_inferior_event): Always switch to the main UI. + * top.h (restore_ui_cleanup): Declare. + 2016-06-21 Pedro Alves PR mi/20034 diff --git a/gdb/event-top.c b/gdb/event-top.c index c84b3f4aa68..e90d00df6e7 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -456,9 +456,9 @@ struct ui *main_ui = &main_ui_; struct ui *current_ui = &main_ui_; struct ui *ui_list = &main_ui_; -/* Cleanup that restores the current UI. */ +/* See top.h. */ -static void +void restore_ui_cleanup (void *data) { current_ui = (struct ui *) data; diff --git a/gdb/infrun.c b/gdb/infrun.c index 0925f41612b..1e9c28ef4f0 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -3879,6 +3879,12 @@ fetch_inferior_event (void *client_data) memset (ecs, 0, sizeof (*ecs)); + /* Events are always processed with the main UI as current UI. This + way, warnings, debug output, etc. are always consistently sent to + the main console. */ + make_cleanup (restore_ui_cleanup, current_ui); + current_ui = main_ui; + /* End up with readline processing input, if necessary. */ make_cleanup (reinstall_readline_callback_handler_cleanup, NULL); diff --git a/gdb/top.h b/gdb/top.h index 11825b09738..009fdb75e8c 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -141,6 +141,9 @@ extern void switch_thru_all_uis_next (struct switch_thru_all_uis *state); switch_thru_all_uis_cond (&STATE); \ switch_thru_all_uis_next (&STATE)) +/* Cleanup that restores the current UI. */ +extern void restore_ui_cleanup (void *data); + /* From top.c. */ extern char *saved_command_line; extern int in_user_command; -- 2.30.2