mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 17:18:55 +00:00
Remove ui_register_input_event_handler
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.
This commit is contained in:
@@ -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 ();
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
12
gdb/top.h
12
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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user