From 58c4fe52d4c522a7ca3c57614377fbe17d9cdfa8 Mon Sep 17 00:00:00 2001 From: Itamar Date: Sat, 18 Feb 2023 13:15:25 +0200 Subject: [PATCH] HackStudio: Fix event loop usage in debugger callbacks These callbacks are called from a different thread than the UI thread, so we need to explicitly use the Application's event loop to perform GUI logic. --- Userland/DevTools/HackStudio/HackStudioWidget.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Userland/DevTools/HackStudio/HackStudioWidget.cpp b/Userland/DevTools/HackStudio/HackStudioWidget.cpp index 1eb7e6ec52..55497033ed 100644 --- a/Userland/DevTools/HackStudio/HackStudioWidget.cpp +++ b/Userland/DevTools/HackStudio/HackStudioWidget.cpp @@ -1050,7 +1050,7 @@ void HackStudioWidget::initialize_debugger() } dbgln("Debugger stopped at source position: {}:{}", source_position.value().file_path, source_position.value().line_number); - deferred_invoke([this, source_position, ®s] { + GUI::Application::the()->event_loop().deferred_invoke([this, source_position, ®s] { m_current_editor_in_execution = get_editor_of_file(source_position.value().file_path); if (m_current_editor_in_execution) m_current_editor_in_execution->editor().set_execution_position(source_position.value().line_number - 1); @@ -1059,20 +1059,20 @@ void HackStudioWidget::initialize_debugger() m_disassembly_widget->update_state(*Debugger::the().session(), regs); HackStudioWidget::reveal_action_tab(*m_debug_info_widget); }); - Core::EventLoop::wake_current(); + GUI::Application::the()->event_loop().wake(); return Debugger::HasControlPassedToUser::Yes; }, [this]() { - deferred_invoke([this] { + GUI::Application::the()->event_loop().deferred_invoke([this] { m_debug_info_widget->set_debug_actions_enabled(false); if (m_current_editor_in_execution) m_current_editor_in_execution->editor().clear_execution_position(); }); - Core::EventLoop::wake_current(); + GUI::Application::the()->event_loop().wake(); }, [this]() { - deferred_invoke([this] { + GUI::Application::the()->event_loop().deferred_invoke([this] { m_debug_info_widget->set_debug_actions_enabled(false); if (m_current_editor_in_execution) m_current_editor_in_execution->editor().clear_execution_position(); @@ -1089,7 +1089,7 @@ void HackStudioWidget::initialize_debugger() HackStudioWidget::hide_action_tabs(); GUI::MessageBox::show(window(), "Program Exited"sv, "Debugger"sv, GUI::MessageBox::Type::Information); }); - Core::EventLoop::wake_current(); + GUI::Application::the()->event_loop().wake(); }); }