diff --git a/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp index 3ea99065e2..d2cbbfb0d9 100644 --- a/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp @@ -30,6 +30,7 @@ #include "Core/PowerPC/PPCSymbolDB.h" #include "Core/PowerPC/PowerPC.h" #include "DolphinQt/Debugger/PatchInstructionDialog.h" +#include "DolphinQt/Host.h" #include "DolphinQt/Resources.h" #include "DolphinQt/Settings.h" @@ -165,6 +166,10 @@ CodeViewWidget::CodeViewWidget() m_address = PC; Update(); }); + connect(Host::GetInstance(), &Host::UpdateDisasmDialog, this, [this] { + m_address = PC; + Update(); + }); connect(&Settings::Instance(), &Settings::ThemeChanged, this, &CodeViewWidget::Update); } diff --git a/Source/Core/DolphinQt/Debugger/JITWidget.cpp b/Source/Core/DolphinQt/Debugger/JITWidget.cpp index a10ad34c0b..c39a12caed 100644 --- a/Source/Core/DolphinQt/Debugger/JITWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/JITWidget.cpp @@ -15,6 +15,7 @@ #include "Core/PowerPC/PPCAnalyst.h" #include "UICommon/Disassembler.h" +#include "DolphinQt/Host.h" #include "DolphinQt/Settings.h" JITWidget::JITWidget(QWidget* parent) : QDockWidget(parent) @@ -47,6 +48,7 @@ JITWidget::JITWidget(QWidget* parent) : QDockWidget(parent) [this](bool enabled) { setHidden(!enabled || !Settings::Instance().IsJITVisible()); }); connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, &JITWidget::Update); + connect(Host::GetInstance(), &Host::UpdateDisasmDialog, this, &JITWidget::Update); ConnectWidgets(); diff --git a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp index 5e3d427e96..00070d2146 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp @@ -19,6 +19,7 @@ #include "Core/HW/AddressSpace.h" #include "Core/PowerPC/BreakPoints.h" #include "Core/PowerPC/PowerPC.h" +#include "DolphinQt/Host.h" #include "DolphinQt/Resources.h" #include "DolphinQt/Settings.h" @@ -37,6 +38,7 @@ MemoryViewWidget::MemoryViewWidget(QWidget* parent) : QTableWidget(parent) connect(&Settings::Instance(), &Settings::DebugFontChanged, this, &QWidget::setFont); connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this] { Update(); }); + connect(Host::GetInstance(), &Host::UpdateDisasmDialog, this, &MemoryViewWidget::Update); connect(this, &MemoryViewWidget::customContextMenuRequested, this, &MemoryViewWidget::OnContextMenu); connect(&Settings::Instance(), &Settings::ThemeChanged, this, &MemoryViewWidget::Update); diff --git a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp index d76e6b0b5a..774bf2c26d 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp @@ -25,6 +25,7 @@ #include "Core/ConfigManager.h" #include "Core/HW/AddressSpace.h" #include "DolphinQt/Debugger/MemoryViewWidget.h" +#include "DolphinQt/Host.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/Settings.h" @@ -54,6 +55,7 @@ MemoryWidget::MemoryWidget(QWidget* parent) : QDockWidget(parent) [this](bool enabled) { setHidden(!enabled || !Settings::Instance().IsMemoryVisible()); }); connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, &MemoryWidget::Update); + connect(Host::GetInstance(), &Host::UpdateDisasmDialog, this, &MemoryWidget::Update); LoadSettings(); diff --git a/Source/Core/DolphinQt/Debugger/WatchWidget.cpp b/Source/Core/DolphinQt/Debugger/WatchWidget.cpp index e8bc2b8610..7870334227 100644 --- a/Source/Core/DolphinQt/Debugger/WatchWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/WatchWidget.cpp @@ -17,6 +17,7 @@ #include "Core/PowerPC/MMU.h" #include "Core/PowerPC/PowerPC.h" +#include "DolphinQt/Host.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/Resources.h" #include "DolphinQt/Settings.h" @@ -49,6 +50,8 @@ WatchWidget::WatchWidget(QWidget* parent) : QDockWidget(parent) Update(); }); + connect(Host::GetInstance(), &Host::UpdateDisasmDialog, this, &WatchWidget::Update); + connect(&Settings::Instance(), &Settings::WatchVisibilityChanged, [this](bool visible) { setHidden(!visible); }); diff --git a/Source/Core/DolphinQt/Host.cpp b/Source/Core/DolphinQt/Host.cpp index fc53954195..11d4bbfb5f 100644 --- a/Source/Core/DolphinQt/Host.cpp +++ b/Source/Core/DolphinQt/Host.cpp @@ -19,6 +19,7 @@ #include "Core/Host.h" #include "Core/NetPlayProto.h" #include "Core/PowerPC/PowerPC.h" +#include "Core/State.h" #include "DolphinQt/QtUtils/QueueOnObject.h" #include "DolphinQt/Settings.h" @@ -30,7 +31,15 @@ #include "VideoCommon/RenderBase.h" #include "VideoCommon/VideoConfig.h" -Host::Host() = default; +Host::Host() +{ + State::SetOnAfterLoadCallback([this] { Host_UpdateDisasmDialog(); }); +} + +Host::~Host() +{ + State::SetOnAfterLoadCallback(nullptr); +} Host* Host::GetInstance() { diff --git a/Source/Core/DolphinQt/Host.h b/Source/Core/DolphinQt/Host.h index 9a25d217a9..03d46a7ee7 100644 --- a/Source/Core/DolphinQt/Host.h +++ b/Source/Core/DolphinQt/Host.h @@ -18,6 +18,8 @@ class Host final : public QObject Q_OBJECT public: + ~Host(); + static Host* GetInstance(); bool GetRenderFocus();