Make target_terminal_inferior/ours almost nops on non-main UIs
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)
Since we always run the inferior in the main console (unless "set
inferior-tty" is in effect), when some UI other than the main one
calls target_terminal_inferior/target_terminal_inferior, then we only
register/unregister the UI's input from the event loop, but leave the
main UI's terminal settings as is.

gdb/ChangeLog:
2016-06-21  Pedro Alves  <palves@redhat.com>

* target.c (target_terminal_inferior): Bail out after
unregistering input_fd if not on the main UI.
(target_terminal_ours): Bail out after registering input_fd if not
on the main UI.
(target_terminal_ours_for_output): Bail out if not on the main UI.

gdb/ChangeLog
gdb/target.c

index d87a51b..4aa0b3c 100644 (file)
@@ -1,5 +1,13 @@
 2016-06-21  Pedro Alves  <palves@redhat.com>
 
+       * target.c (target_terminal_inferior): Bail out after
+       unregistering input_fd if not on the main UI.
+       (target_terminal_ours): Bail out after registering input_fd if not
+       on the main UI.
+       (target_terminal_ours_for_output): Bail out if not on the main UI.
+
+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.
index b53074a..8a83fba 100644 (file)
@@ -493,6 +493,14 @@ target_terminal_inferior (void)
      UI.  */
   delete_file_handler (ui->input_fd);
 
+  /* Since we always run the inferior in the main console (unless "set
+     inferior-tty" is in effect), when some UI other than the main one
+     calls target_terminal_inferior/target_terminal_inferior, then we
+     only register/unregister the UI's input from the event loop, but
+     leave the main UI's terminal settings as is.  */
+  if (ui != main_ui)
+    return;
+
   if (terminal_state == terminal_is_inferior)
     return;
 
@@ -519,6 +527,10 @@ target_terminal_ours (void)
      UI.  */
   add_file_handler (ui->input_fd, stdin_event_handler, ui);
 
+  /* See target_terminal_inferior.  */
+  if (ui != main_ui)
+    return;
+
   if (terminal_state == terminal_is_ours)
     return;
 
@@ -531,6 +543,12 @@ target_terminal_ours (void)
 void
 target_terminal_ours_for_output (void)
 {
+  struct ui *ui = current_ui;
+
+  /* See target_terminal_inferior.  */
+  if (ui != main_ui)
+    return;
+
   if (terminal_state != terminal_is_inferior)
     return;
   (*current_target.to_terminal_ours_for_output) (&current_target);