Remove ui_register_input_event_handler
authorTom Tromey <tromey@adacore.com>
Thu, 23 Jun 2022 17:05:39 +0000 (11:05 -0600)
committerTom Tromey <tromey@adacore.com>
Mon, 18 Jul 2022 14:49:55 +0000 (08:49 -0600)
This patch removes ui_register_input_event_handler and
ui_unregister_input_event_handler, replacing them with methods on
'ui'.  It also changes gdb to use these methods everywhere, rather
than sometimes reaching in to the ui to manage the file descriptor
directly.

gdb/event-top.c
gdb/infcall.c
gdb/infrun.c
gdb/top.h
gdb/utils.c

index 74960c8ed3cc586338538c2dc9672936ce099a11..2863a8aff699567901c985a906571518b701029c 100644 (file)
@@ -491,7 +491,7 @@ stdin_event_handler (int error, gdb_client_data client_data)
       /* Switch to the main UI, so diagnostics always go there.  */
       current_ui = main_ui;
 
-      delete_file_handler (ui->input_fd);
+      ui->unregister_file_handler ();
       if (main_ui == ui)
        {
          /* If stdin died, we may as well kill gdb.  */
@@ -531,18 +531,18 @@ stdin_event_handler (int error, gdb_client_data client_data)
 /* See top.h.  */
 
 void
-ui_register_input_event_handler (struct ui *ui)
+ui::register_file_handler ()
 {
-  add_file_handler (ui->input_fd, stdin_event_handler, ui,
-                   string_printf ("ui-%d", ui->num), true);
+  add_file_handler (input_fd, stdin_event_handler, this,
+                   string_printf ("ui-%d", num), true);
 }
 
 /* See top.h.  */
 
 void
-ui_unregister_input_event_handler (struct ui *ui)
+ui::unregister_file_handler ()
 {
-  delete_file_handler (ui->input_fd);
+  delete_file_handler (input_fd);
 }
 
 /* Re-enable stdin after the end of an execution command in
@@ -557,7 +557,7 @@ async_enable_stdin (void)
   if (ui->prompt_state == PROMPT_BLOCKED)
     {
       target_terminal::ours ();
-      ui_register_input_event_handler (ui);
+      ui->register_file_handler ();
       ui->prompt_state = PROMPT_NEEDED;
     }
 }
@@ -571,7 +571,7 @@ async_disable_stdin (void)
   struct ui *ui = current_ui;
 
   ui->prompt_state = PROMPT_BLOCKED;
-  delete_file_handler (ui->input_fd);
+  ui->unregister_file_handler ();
 }
 \f
 
@@ -1366,7 +1366,7 @@ gdb_setup_readline (int editing)
      Another source is going to be the target program (inferior), but
      that must be registered only when it actually exists (I.e. after
      we say 'run' or after we connect to a remote target.  */
-  ui_register_input_event_handler (ui);
+  ui->register_file_handler ();
 }
 
 /* Disable command input through the standard CLI channels.  Used in
@@ -1393,7 +1393,7 @@ gdb_disable_readline (void)
 
   if (ui->command_editing)
     gdb_rl_callback_handler_remove ();
-  delete_file_handler (ui->input_fd);
+  ui->unregister_file_handler ();
 }
 
 scoped_segv_handler_restore::scoped_segv_handler_restore (segv_handler_t new_handler)
index 9334648ac0e0bc00f4b8575a8a08c08abc5af0fc..2acceed4b07692407c047cf0f80f1374a615cd75 100644 (file)
@@ -581,7 +581,7 @@ run_inferior_call (std::unique_ptr<call_thread_fsm> sm,
   ptid_t call_thread_ptid = call_thread->ptid;
   int was_running = call_thread->state == THREAD_RUNNING;
 
-  delete_file_handler (current_ui->input_fd);
+  current_ui->unregister_file_handler ();
 
   scoped_restore restore_in_infcall
     = make_scoped_restore (&call_thread->control.in_infcall, 1);
@@ -624,9 +624,9 @@ run_inferior_call (std::unique_ptr<call_thread_fsm> sm,
      state again here.  In other cases, stdin will be re-enabled by
      inferior_event_handler, when an exception is thrown.  */
   if (current_ui->prompt_state == PROMPT_BLOCKED)
-    delete_file_handler (current_ui->input_fd);
+    current_ui->unregister_file_handler ();
   else
-    ui_register_input_event_handler (current_ui);
+    current_ui->register_file_handler ();
 
   /* If the infcall does NOT succeed, normal_stop will have already
      finished the thread states.  However, on success, normal_stop
index 02c98b50c8cf47eda8c905a31504c68d3a238c76..a6694230d2937c2a663fc1b8ba39f56545a0f666 100644 (file)
@@ -4096,7 +4096,7 @@ check_curr_ui_sync_execution_done (void)
     {
       target_terminal::ours ();
       gdb::observers::sync_execution_done.notify ();
-      ui_register_input_event_handler (ui);
+      ui->register_file_handler ();
     }
 }
 
index b26209e8c8d16337545aeb54a6422876e9aa7e33..18c49cc55138ffe8b53e383ce078edf6cf09407c 100644 (file)
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -148,6 +148,12 @@ struct ui
 
   /* The current ui_out.  */
   struct ui_out *m_current_uiout;
+
+  /* Register the UI's input file descriptor in the event loop.  */
+  void register_file_handler ();
+
+  /* Unregister the UI's input file descriptor from the event loop.  */
+  void unregister_file_handler ();
 };
 
 /* The main UI.  This is the UI that is bound to stdin/stdout/stderr.
@@ -211,12 +217,6 @@ ui_range all_uis ()
   return ui_range (ui_list);
 }
 
-/* Register the UI's input file descriptor in the event loop.  */
-extern void ui_register_input_event_handler (struct ui *ui);
-
-/* Unregister the UI's input file descriptor from the event loop.  */
-extern void ui_unregister_input_event_handler (struct ui *ui);
-
 /* From top.c.  */
 extern bool confirm;
 extern int inhibit_gdbinit;
index 413a4f4d53b6a931858a01f6bfcca60695a4f921..5503acfd6bc0e32499140db7a0eef56e4fb27fbf 100644 (file)
@@ -799,7 +799,7 @@ public:
       m_ui (NULL)
   {
     target_terminal::ours ();
-    ui_register_input_event_handler (current_ui);
+    current_ui->register_file_handler ();
     if (current_ui->prompt_state == PROMPT_BLOCKED)
       m_ui = current_ui;
   }
@@ -807,7 +807,7 @@ public:
   ~scoped_input_handler ()
   {
     if (m_ui != NULL)
-      ui_unregister_input_event_handler (m_ui);
+      m_ui->unregister_file_handler ();
   }
 
   DISABLE_COPY_AND_ASSIGN (scoped_input_handler);