Always process target events in the main UI
authorPedro Alves <palves@redhat.com>
Tue, 21 Jun 2016 00:11:49 +0000 (01:11 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 21 Jun 2016 00:11:49 +0000 (01:11 +0100)
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  <palves@redhat.com>

* 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
gdb/event-top.c
gdb/infrun.c
gdb/top.h

index c60ac72d063c5f098513d0e304b75010802ccde1..d87a51b79cc8dfd737426c895b6f18e5dffc2ed3 100644 (file)
@@ -1,3 +1,9 @@
+2016-06-21  Pedro Alves  <palves@redhat.com>
+
+       * 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  <palves@redhat.com>
 
        PR mi/20034
index c84b3f4aa68ae266f685edc525c585ae39fde412..e90d00df6e7104758b8a9d4d8a69da1d37f3d451 100644 (file)
@@ -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;
index 0925f41612bc3a9def74c58431d0fc8396b1eb55..1e9c28ef4f0f203b2c4dfdc4fcbe305702743846 100644 (file)
@@ -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);
 
index 11825b0973808c9aa275cebd35fa3b5f93734043..009fdb75e8c6d50fcfedf46553e90499d4a2e7aa 100644 (file)
--- 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;