From 0df401b164bbe2b0314b74f1fd6385e852bbe098 Mon Sep 17 00:00:00 2001 From: mitaclaw <140017135+mitaclaw@users.noreply.github.com> Date: Mon, 8 Apr 2024 20:33:55 -0700 Subject: [PATCH] Core::IsRunning: Avoid Global System Accessor --- Source/Android/jni/MainAndroid.cpp | 7 +++--- .../Core/ConfigLoaders/BaseConfigLoader.cpp | 5 ++-- Source/Core/Core/ConfigManager.cpp | 8 +++---- Source/Core/Core/Core.cpp | 11 ++++----- Source/Core/Core/Core.h | 2 +- .../Core/Core/Debugger/Debugger_SymbolMap.cpp | 5 ++-- Source/Core/Core/FifoPlayer/FifoPlayer.cpp | 2 +- Source/Core/Core/HW/ProcessorInterface.cpp | 4 ++-- Source/Core/Core/IOS/IOS.cpp | 2 +- Source/Core/Core/Movie.cpp | 4 ++-- Source/Core/Core/State.cpp | 2 +- .../AchievementSettingsWidget.cpp | 3 ++- .../DolphinQt/Config/CheatWarningWidget.cpp | 5 ++-- .../Config/GamecubeControllersWidget.cpp | 6 ++--- .../Config/Graphics/GeneralWidget.cpp | 2 +- .../Core/DolphinQt/Debugger/MemoryWidget.cpp | 4 ++-- .../Core/DolphinQt/Debugger/WatchWidget.cpp | 6 ++--- .../Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp | 5 ++-- Source/Core/DolphinQt/GameList/GameList.cpp | 17 +++++++------- Source/Core/DolphinQt/MainWindow.cpp | 18 ++++++++------- Source/Core/DolphinQt/MenuBar.cpp | 11 +++++---- .../Core/DolphinQt/NetPlay/NetPlayDialog.cpp | 7 +++--- .../Core/DolphinQt/Settings/GameCubePane.cpp | 23 +++++++++++-------- .../Core/DolphinQt/TAS/WiiTASInputWindow.cpp | 3 ++- Source/Core/VideoCommon/VideoBackendBase.cpp | 2 +- 25 files changed, 90 insertions(+), 74 deletions(-) diff --git a/Source/Android/jni/MainAndroid.cpp b/Source/Android/jni/MainAndroid.cpp index 1034406d7a85..7f7cf66ccc9b 100644 --- a/Source/Android/jni/MainAndroid.cpp +++ b/Source/Android/jni/MainAndroid.cpp @@ -118,7 +118,7 @@ void Host_Message(HostMessageID id) } else if (id == HostMessageID::WMUserStop) { - if (Core::IsRunning()) + if (Core::IsRunning(Core::System::GetInstance())) Core::QueueHostJob(&Core::Stop); } } @@ -272,7 +272,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetIsBooting JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunning(JNIEnv*, jclass) { - return s_is_booting.IsSet() || static_cast(Core::IsRunning()); + return s_is_booting.IsSet() || + static_cast(Core::IsRunning(Core::System::GetInstance())); } JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunningAndStarted(JNIEnv*, @@ -589,7 +590,7 @@ static void Run(JNIEnv* env, std::unique_ptr&& boot, bool riivol s_need_nonblocking_alert_msg = false; surface_guard.unlock(); - while (Core::IsRunning()) + while (Core::IsRunning(Core::System::GetInstance())) { host_identity_guard.Unlock(); s_update_main_frame_event.Wait(); diff --git a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp index 0b9aa61fd7a8..88fa7c06961a 100644 --- a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp @@ -27,12 +27,13 @@ #include "Core/IOS/IOS.h" #include "Core/IOS/USB/Bluetooth/BTBase.h" #include "Core/SysConf.h" +#include "Core/System.h" namespace ConfigLoaders { void SaveToSYSCONF(Config::LayerType layer, std::function predicate) { - if (Core::IsRunning()) + if (Core::IsRunning(Core::System::GetInstance())) return; IOS::HLE::Kernel ios; @@ -182,7 +183,7 @@ class BaseConfigLayerLoader final : public Config::ConfigLayerLoader private: void LoadFromSYSCONF(Config::Layer* layer) { - if (Core::IsRunning()) + if (Core::IsRunning(Core::System::GetInstance())) return; IOS::HLE::Kernel ios; diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index c8f86ef70c93..c27f135e0e5a 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -188,7 +188,7 @@ void SConfig::SetRunningGameMetadata(const std::string& game_id, const std::stri m_title_description = title_database.Describe(m_gametdb_id, language); NOTICE_LOG_FMT(CORE, "Active title: {}", m_title_description); Host_TitleChanged(); - if (Core::IsRunning()) + if (Core::IsRunning(system)) { Core::UpdateTitle(system); } @@ -196,16 +196,16 @@ void SConfig::SetRunningGameMetadata(const std::string& game_id, const std::stri Config::AddLayer(ConfigLoaders::GenerateGlobalGameConfigLoader(game_id, revision)); Config::AddLayer(ConfigLoaders::GenerateLocalGameConfigLoader(game_id, revision)); - if (Core::IsRunning()) + if (Core::IsRunning(system)) DolphinAnalytics::Instance().ReportGameStart(); } void SConfig::OnNewTitleLoad(const Core::CPUThreadGuard& guard) { - if (!Core::IsRunning()) + auto& system = guard.GetSystem(); + if (!Core::IsRunning(system)) return; - auto& system = guard.GetSystem(); auto& ppc_symbol_db = system.GetPPCSymbolDB(); if (!ppc_symbol_db.IsEmpty()) { diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp index 0498d1ba362d..18a2656e2302 100644 --- a/Source/Core/Core/Core.cpp +++ b/Source/Core/Core/Core.cpp @@ -190,7 +190,7 @@ std::string StopMessage(bool main_thread, std::string_view message) void DisplayMessage(std::string message, int time_in_ms) { - if (!IsRunning()) + if (!IsRunning(Core::System::GetInstance())) return; // Actually displaying non-ASCII could cause things to go pear-shaped @@ -200,9 +200,8 @@ void DisplayMessage(std::string message, int time_in_ms) OSD::AddMessage(std::move(message), time_in_ms); } -bool IsRunning() +bool IsRunning(Core::System& system) { - auto& system = Core::System::GetInstance(); return (GetState(system) != State::Uninitialized || s_hardware_initialized) && !s_is_stopping; } @@ -237,7 +236,7 @@ bool Init(Core::System& system, std::unique_ptr boot, const Wind { if (s_emu_thread.joinable()) { - if (IsRunning()) + if (IsRunning(system)) { PanicAlertFmtT("Emu Thread already running"); return false; @@ -842,7 +841,7 @@ static bool PauseAndLock(Core::System& system, bool do_lock, bool unpause_on_unl void RunOnCPUThread(Core::System& system, std::function function, bool wait_for_completion) { // If the CPU thread is not running, assume there is no active CPU thread we can race against. - if (!IsRunning() || IsCPUThread()) + if (!IsRunning(system) || IsCPUThread()) { function(); return; @@ -1038,7 +1037,7 @@ void HostDispatchJobs(Core::System& system) // Core::State::Uninitialized: s_is_booting -> s_hardware_initialized // We need to check variables in the same order as the state // transition, otherwise we race and get transient failures. - if (!job.run_after_stop && !s_is_booting.IsSet() && !IsRunning()) + if (!job.run_after_stop && !s_is_booting.IsSet() && !IsRunning(system)) continue; guard.unlock(); diff --git a/Source/Core/Core/Core.h b/Source/Core/Core/Core.h index 25e773b69051..57fb680eb117 100644 --- a/Source/Core/Core/Core.h +++ b/Source/Core/Core/Core.h @@ -134,7 +134,7 @@ void UndeclareAsHostThread(); std::string StopMessage(bool main_thread, std::string_view message); -bool IsRunning(); +bool IsRunning(Core::System& system); bool IsRunningAndStarted(); // is running and the CPU loop has been entered bool IsCPUThread(); // this tells us whether we are the CPU thread. bool IsGPUThread(); diff --git a/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp b/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp index 8a7aea10711e..d0abe78be0cd 100644 --- a/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp +++ b/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp @@ -55,10 +55,11 @@ static void WalkTheStack(const Core::CPUThreadGuard& guard, // instead of "pointing ahead" bool GetCallstack(const Core::CPUThreadGuard& guard, std::vector& output) { - auto& power_pc = guard.GetSystem().GetPowerPC(); + auto& system = guard.GetSystem(); + auto& power_pc = system.GetPowerPC(); const auto& ppc_state = power_pc.GetPPCState(); - if (!Core::IsRunning() || !PowerPC::MMU::HostIsRAMAddress(guard, ppc_state.gpr[1])) + if (!Core::IsRunning(system) || !PowerPC::MMU::HostIsRAMAddress(guard, ppc_state.gpr[1])) return false; if (LR(ppc_state) == 0) diff --git a/Source/Core/Core/FifoPlayer/FifoPlayer.cpp b/Source/Core/Core/FifoPlayer/FifoPlayer.cpp index 39377d7cdedb..83eae87b9e30 100644 --- a/Source/Core/Core/FifoPlayer/FifoPlayer.cpp +++ b/Source/Core/Core/FifoPlayer/FifoPlayer.cpp @@ -212,7 +212,7 @@ void FifoPlayer::Close() bool FifoPlayer::IsPlaying() const { - return GetFile() != nullptr && Core::IsRunning(); + return GetFile() != nullptr && Core::IsRunning(m_system); } class FifoPlayer::CPUCore final : public CPUCoreBase diff --git a/Source/Core/Core/HW/ProcessorInterface.cpp b/Source/Core/Core/HW/ProcessorInterface.cpp index 679f5d40926e..fc26896a5488 100644 --- a/Source/Core/Core/HW/ProcessorInterface.cpp +++ b/Source/Core/Core/HW/ProcessorInterface.cpp @@ -255,7 +255,7 @@ void ProcessorInterfaceManager::IOSNotifyPowerButtonCallback(Core::System& syste void ProcessorInterfaceManager::ResetButton_Tap() { - if (!Core::IsRunning()) + if (!Core::IsRunning(m_system)) return; auto& core_timing = m_system.GetCoreTiming(); @@ -268,7 +268,7 @@ void ProcessorInterfaceManager::ResetButton_Tap() void ProcessorInterfaceManager::PowerButton_Tap() { - if (!Core::IsRunning()) + if (!Core::IsRunning(m_system)) return; auto& core_timing = m_system.GetCoreTiming(); diff --git a/Source/Core/Core/IOS/IOS.cpp b/Source/Core/Core/IOS/IOS.cpp index b2a0a25b05c2..0e046b853446 100644 --- a/Source/Core/Core/IOS/IOS.cpp +++ b/Source/Core/Core/IOS/IOS.cpp @@ -533,7 +533,7 @@ bool EmulationKernel::BootIOS(const u64 ios_title_id, HangPPC hang_ppc, void EmulationKernel::InitIPC() { - if (!Core::IsRunning()) + if (!Core::IsRunning(m_system)) return; INFO_LOG_FMT(IOS, "IPC initialised."); diff --git a/Source/Core/Core/Movie.cpp b/Source/Core/Core/Movie.cpp index b19ebd6f7333..059eaa29fe5e 100644 --- a/Source/Core/Core/Movie.cpp +++ b/Source/Core/Core/Movie.cpp @@ -424,7 +424,7 @@ bool MovieManager::IsNetPlayRecording() const // NOTE: Host Thread void MovieManager::ChangePads() { - if (!Core::IsRunning()) + if (!Core::IsRunning(m_system)) return; ControllerTypeArray controllers{}; @@ -571,7 +571,7 @@ bool MovieManager::BeginRecordingInput(const ControllerTypeArray& controllers, ConfigLoaders::SaveToDTM(&header); Config::AddLayer(ConfigLoaders::GenerateMovieConfigLoader(&header)); - if (Core::IsRunning()) + if (Core::IsRunning(m_system)) Core::UpdateWantDeterminism(m_system); }; Core::RunOnCPUThread(m_system, start_recording, true); diff --git a/Source/Core/Core/State.cpp b/Source/Core/Core/State.cpp index 4b3d0edfd073..56b9035cb613 100644 --- a/Source/Core/Core/State.cpp +++ b/Source/Core/Core/State.cpp @@ -856,7 +856,7 @@ static void LoadFileStateData(const std::string& filename, std::vector& ret_ void LoadAs(Core::System& system, const std::string& filename) { - if (!Core::IsRunning()) + if (!Core::IsRunning(system)) return; if (NetPlay::IsNetPlayRunning()) diff --git a/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp b/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp index cc6a4c1c508e..a88ff4c9767c 100644 --- a/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp +++ b/Source/Core/DolphinQt/Achievements/AchievementSettingsWidget.cpp @@ -171,7 +171,8 @@ void AchievementSettingsWidget::LoadSettings() SignalBlocking(m_common_password_input)->setVisible(logged_out); SignalBlocking(m_common_password_input)->setEnabled(enabled); SignalBlocking(m_common_login_button)->setVisible(logged_out); - SignalBlocking(m_common_login_button)->setEnabled(enabled && !Core::IsRunning()); + SignalBlocking(m_common_login_button) + ->setEnabled(enabled && !Core::IsRunning(Core::System::GetInstance())); SignalBlocking(m_common_logout_button)->setVisible(!logged_out); SignalBlocking(m_common_logout_button)->setEnabled(enabled); diff --git a/Source/Core/DolphinQt/Config/CheatWarningWidget.cpp b/Source/Core/DolphinQt/Config/CheatWarningWidget.cpp index 58154c72584a..ee52bf9662df 100644 --- a/Source/Core/DolphinQt/Config/CheatWarningWidget.cpp +++ b/Source/Core/DolphinQt/Config/CheatWarningWidget.cpp @@ -11,6 +11,7 @@ #include "Core/ConfigManager.h" #include "Core/Core.h" +#include "Core/System.h" #include "DolphinQt/Settings.h" @@ -22,11 +23,11 @@ CheatWarningWidget::CheatWarningWidget(const std::string& game_id, bool restart_ ConnectWidgets(); connect(&Settings::Instance(), &Settings::EnableCheatsChanged, this, - [this] { Update(Core::IsRunning()); }); + [this] { Update(Core::IsRunning(Core::System::GetInstance())); }); connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this](Core::State state) { Update(state == Core::State::Running); }); - Update(Core::IsRunning()); + Update(Core::IsRunning(Core::System::GetInstance())); } void CheatWarningWidget::CreateWidgets() diff --git a/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp b/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp index 41c46707ba9c..d548724c7e31 100644 --- a/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp +++ b/Source/Core/DolphinQt/Config/GamecubeControllersWidget.cpp @@ -191,16 +191,16 @@ void GamecubeControllersWidget::SaveSettings() { Config::ConfigChangeCallbackGuard config_guard; + auto& system = Core::System::GetInstance(); for (size_t i = 0; i < m_gc_groups.size(); ++i) { const SerialInterface::SIDevices si_device = FromGCMenuIndex(m_gc_controller_boxes[i]->currentIndex()); Config::SetBaseOrCurrent(Config::GetInfoForSIDevice(static_cast(i)), si_device); - if (Core::IsRunning()) + if (Core::IsRunning(system)) { - Core::System::GetInstance().GetSerialInterface().ChangeDevice(si_device, - static_cast(i)); + system.GetSerialInterface().ChangeDevice(si_device, static_cast(i)); } } } diff --git a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp index 5f914169ff45..52f09a6f4147 100644 --- a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp @@ -361,7 +361,7 @@ void GeneralWidget::OnBackendChanged(const QString& backend_name) const bool supports_adapters = !adapters.empty(); m_adapter_combo->setCurrentIndex(g_Config.iAdapter); - m_adapter_combo->setEnabled(supports_adapters && !Core::IsRunning()); + m_adapter_combo->setEnabled(supports_adapters && !Core::IsRunning(Core::System::GetInstance())); static constexpr char TR_ADAPTER_AVAILABLE_DESCRIPTION[] = QT_TR_NOOP("Selects a hardware adapter to use.

" diff --git a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp index 4a89ce4316b6..f5faea68bee9 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp @@ -629,7 +629,7 @@ QByteArray MemoryWidget::GetInputData() const void MemoryWidget::OnSetValue() { - if (!Core::IsRunning()) + if (!Core::IsRunning(m_system)) return; auto target_addr = GetTargetAddress(); @@ -675,7 +675,7 @@ void MemoryWidget::OnSetValue() void MemoryWidget::OnSetValueFromFile() { - if (!Core::IsRunning()) + if (!Core::IsRunning(m_system)) return; auto target_addr = GetTargetAddress(); diff --git a/Source/Core/DolphinQt/Debugger/WatchWidget.cpp b/Source/Core/DolphinQt/Debugger/WatchWidget.cpp index 788feb798357..45f2f1f7e23a 100644 --- a/Source/Core/DolphinQt/Debugger/WatchWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/WatchWidget.cpp @@ -143,7 +143,7 @@ void WatchWidget::UpdateButtonsEnabled() if (!isVisible()) return; - const bool is_enabled = Core::IsRunning(); + const bool is_enabled = Core::IsRunning(m_system); m_new->setEnabled(is_enabled); m_delete->setEnabled(is_enabled); m_clear->setEnabled(is_enabled); @@ -195,10 +195,10 @@ void WatchWidget::Update() QBrush brush = QPalette().brush(QPalette::Text); - if (!Core::IsRunning() || !PowerPC::MMU::HostIsRAMAddress(guard, entry.address)) + if (!Core::IsRunning(m_system) || !PowerPC::MMU::HostIsRAMAddress(guard, entry.address)) brush.setColor(Qt::red); - if (Core::IsRunning()) + if (Core::IsRunning(m_system)) { if (PowerPC::MMU::HostIsRAMAddress(guard, entry.address)) { diff --git a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp index 1071a88f8c87..4d2cadb6ca77 100644 --- a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp +++ b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp @@ -23,6 +23,7 @@ #include "Core/FifoPlayer/FifoDataFile.h" #include "Core/FifoPlayer/FifoPlayer.h" #include "Core/FifoPlayer/FifoRecorder.h" +#include "Core/System.h" #include "DolphinQt/Config/ToolTipControls/ToolTipCheckBox.h" #include "DolphinQt/FIFO/FIFOAnalyzer.h" @@ -316,7 +317,7 @@ void FIFOPlayerWindow::UpdateInfo() return; } - if (Core::IsRunning() && m_fifo_recorder.IsRecording()) + if (Core::IsRunning(Core::System::GetInstance()) && m_fifo_recorder.IsRecording()) { m_info_label->setText(tr("Recording...")); return; @@ -375,7 +376,7 @@ void FIFOPlayerWindow::UpdateLimits() void FIFOPlayerWindow::UpdateControls() { - bool running = Core::IsRunning(); + bool running = Core::IsRunning(Core::System::GetInstance()); bool is_recording = m_fifo_recorder.IsRecording(); bool is_playing = m_fifo_player.IsPlaying(); diff --git a/Source/Core/DolphinQt/GameList/GameList.cpp b/Source/Core/DolphinQt/GameList/GameList.cpp index 4e1da45033d6..c9656fb83d8e 100644 --- a/Source/Core/DolphinQt/GameList/GameList.cpp +++ b/Source/Core/DolphinQt/GameList/GameList.cpp @@ -370,6 +370,7 @@ void GameList::ShowContextMenu(const QPoint&) { if (!GetSelectedGame()) return; + auto& system = Core::System::GetInstance(); QMenu* menu = new QMenu(this); @@ -421,8 +422,8 @@ void GameList::ShowContextMenu(const QPoint&) QAction* change_disc = menu->addAction(tr("Change &Disc"), this, &GameList::ChangeDisc); connect(&Settings::Instance(), &Settings::EmulationStateChanged, change_disc, - [change_disc] { change_disc->setEnabled(Core::IsRunning()); }); - change_disc->setEnabled(Core::IsRunning()); + [&system, change_disc] { change_disc->setEnabled(Core::IsRunning(system)); }); + change_disc->setEnabled(Core::IsRunning(system)); menu->addSeparator(); } @@ -436,7 +437,7 @@ void GameList::ShowContextMenu(const QPoint&) // system menu, trigger a refresh. Settings::Instance().NANDRefresh(); }); - perform_disc_update->setEnabled(!Core::IsRunning() || !Core::System::GetInstance().IsWii()); + perform_disc_update->setEnabled(!Core::IsRunning(system) || !system.IsWii()); } if (!is_mod_descriptor && platform == DiscIO::Platform::WiiWAD) @@ -449,10 +450,10 @@ void GameList::ShowContextMenu(const QPoint&) for (QAction* a : {wad_install_action, wad_uninstall_action}) { - a->setEnabled(!Core::IsRunning()); + a->setEnabled(!Core::IsRunning(system)); menu->addAction(a); } - if (!Core::IsRunning()) + if (!Core::IsRunning(system)) wad_uninstall_action->setEnabled(WiiUtils::IsTitleInstalled(game->GetTitleID())); connect(&Settings::Instance(), &Settings::EmulationStateChanged, menu, @@ -473,8 +474,8 @@ void GameList::ShowContextMenu(const QPoint&) QAction* export_wii_save = menu->addAction(tr("Export Wii Save"), this, &GameList::ExportWiiSave); - open_wii_save_folder->setEnabled(!Core::IsRunning()); - export_wii_save->setEnabled(!Core::IsRunning()); + open_wii_save_folder->setEnabled(!Core::IsRunning(system)); + export_wii_save->setEnabled(!Core::IsRunning(system)); menu->addSeparator(); } @@ -531,7 +532,7 @@ void GameList::ShowContextMenu(const QPoint&) connect(&Settings::Instance(), &Settings::EmulationStateChanged, menu, [=](Core::State state) { netplay_host->setEnabled(state == Core::State::Uninitialized); }); - netplay_host->setEnabled(!Core::IsRunning()); + netplay_host->setEnabled(!Core::IsRunning(system)); menu->addAction(netplay_host); } diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index f1c6951595b8..a96b8be8093e 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -901,7 +901,7 @@ void MainWindow::OnStopComplete() bool MainWindow::RequestStop() { - if (!Core::IsRunning()) + if (!Core::IsRunning(Core::System::GetInstance())) { Core::QueueHostJob([this](Core::System&) { OnStopComplete(); }, true); return true; @@ -1532,7 +1532,7 @@ void MainWindow::NetPlayInit() bool MainWindow::NetPlayJoin() { - if (Core::IsRunning()) + if (Core::IsRunning(Core::System::GetInstance())) { ModalMessageBox::critical(nullptr, tr("Error"), tr("Can't start a NetPlay Session while a game is still running!")); @@ -1599,7 +1599,7 @@ bool MainWindow::NetPlayJoin() bool MainWindow::NetPlayHost(const UICommon::GameFile& game) { - if (Core::IsRunning()) + if (Core::IsRunning(Core::System::GetInstance())) { ModalMessageBox::critical(nullptr, tr("Error"), tr("Can't start a NetPlay Session while a game is still running!")); @@ -1846,7 +1846,7 @@ void MainWindow::OnImportNANDBackup() result.wait(); - m_menu_bar->UpdateToolsMenu(Core::IsRunning()); + m_menu_bar->UpdateToolsMenu(Core::IsRunning(Core::System::GetInstance())); } void MainWindow::OnPlayRecording() @@ -1876,8 +1876,9 @@ void MainWindow::OnPlayRecording() void MainWindow::OnStartRecording() { - auto& movie = Core::System::GetInstance().GetMovie(); - if ((!Core::IsRunningAndStarted() && Core::IsRunning()) || movie.IsRecordingInput() || + auto& system = Core::System::GetInstance(); + auto& movie = system.GetMovie(); + if ((!Core::IsRunningAndStarted() && Core::IsRunning(system)) || movie.IsRecordingInput() || movie.IsPlayingInput()) { return; @@ -1909,7 +1910,7 @@ void MainWindow::OnStartRecording() { emit RecordingStatusChanged(true); - if (!Core::IsRunning()) + if (!Core::IsRunning(system)) Play(); } } @@ -1970,10 +1971,11 @@ void MainWindow::ShowTASInput() } } + auto& system = Core::System::GetInstance(); for (int i = 0; i < num_wii_controllers; i++) { if (Config::Get(Config::GetInfoForWiimoteSource(i)) == WiimoteSource::Emulated && - (!Core::IsRunning() || Core::System::GetInstance().IsWii())) + (!Core::IsRunning(system) || system.IsWii())) { SetQWidgetWindowDecorations(m_wii_tas_input_windows[i]); m_wii_tas_input_windows[i]->show(); diff --git a/Source/Core/DolphinQt/MenuBar.cpp b/Source/Core/DolphinQt/MenuBar.cpp index 46bd68b6d450..fc94065624a5 100644 --- a/Source/Core/DolphinQt/MenuBar.cpp +++ b/Source/Core/DolphinQt/MenuBar.cpp @@ -1265,14 +1265,17 @@ void MenuBar::OnSelectionChanged(std::shared_ptr game_ { m_game_selected = !!game_file; - m_recording_play->setEnabled(m_game_selected && !Core::IsRunning()); - m_recording_start->setEnabled((m_game_selected || Core::IsRunning()) && - !Core::System::GetInstance().GetMovie().IsPlayingInput()); + auto& system = Core::System::GetInstance(); + const bool core_is_running = Core::IsRunning(system); + m_recording_play->setEnabled(m_game_selected && !core_is_running); + m_recording_start->setEnabled((m_game_selected || core_is_running) && + !system.GetMovie().IsPlayingInput()); } void MenuBar::OnRecordingStatusChanged(bool recording) { - m_recording_start->setEnabled(!recording && (m_game_selected || Core::IsRunning())); + auto& system = Core::System::GetInstance(); + m_recording_start->setEnabled(!recording && (m_game_selected || Core::IsRunning(system))); m_recording_stop->setEnabled(recording); m_recording_export->setEnabled(recording); } diff --git a/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp b/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp index d7323b59e386..4ae4b5f315f6 100644 --- a/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp +++ b/Source/Core/DolphinQt/NetPlay/NetPlayDialog.cpp @@ -43,6 +43,7 @@ #include "Core/IOS/FS/FileSystem.h" #include "Core/NetPlayServer.h" #include "Core/SyncIdentifier.h" +#include "Core/System.h" #include "DolphinQt/NetPlay/ChunkedProgressDialog.h" #include "DolphinQt/NetPlay/GameDigestDialog.h" @@ -578,7 +579,7 @@ void NetPlayDialog::UpdateDiscordPresence() m_current_game_name); }; - if (Core::IsRunning()) + if (Core::IsRunning(Core::System::GetInstance())) return use_default(); if (IsHosting()) @@ -802,7 +803,7 @@ void NetPlayDialog::DisplayMessage(const QString& msg, const std::string& color, QColor c(color.empty() ? QStringLiteral("white") : QString::fromStdString(color)); - if (g_ActiveConfig.bShowNetPlayMessages && Core::IsRunning()) + if (g_ActiveConfig.bShowNetPlayMessages && Core::IsRunning(Core::System::GetInstance())) g_netplay_chat_ui->AppendChat(msg.toStdString(), {static_cast(c.redF()), static_cast(c.greenF()), static_cast(c.blueF())}); @@ -902,7 +903,7 @@ void NetPlayDialog::OnMsgStopGame() void NetPlayDialog::OnMsgPowerButton() { - if (!Core::IsRunning()) + if (!Core::IsRunning(Core::System::GetInstance())) return; QueueOnObject(this, [] { UICommon::TriggerSTMPowerEvent(); }); } diff --git a/Source/Core/DolphinQt/Settings/GameCubePane.cpp b/Source/Core/DolphinQt/Settings/GameCubePane.cpp index c2686259594f..07abe76a65ec 100644 --- a/Source/Core/DolphinQt/Settings/GameCubePane.cpp +++ b/Source/Core/DolphinQt/Settings/GameCubePane.cpp @@ -514,7 +514,8 @@ bool GameCubePane::SetMemcard(ExpansionInterface::Slot slot, const QString& file const std::string old_eu_path = Config::GetMemcardPath(slot, DiscIO::Region::PAL); Config::SetBase(Config::GetInfoForMemcardPath(slot), raw_path); - if (Core::IsRunning()) + auto& system = Core::System::GetInstance(); + if (Core::IsRunning(system)) { // If emulation is running and the new card is different from the old one, notify the system to // eject the old and insert the new card. @@ -523,8 +524,8 @@ bool GameCubePane::SetMemcard(ExpansionInterface::Slot slot, const QString& file { // ChangeDevice unplugs the device for 1 second, which means that games should notice that // the path has changed and thus the memory card contents have changed - Core::System::GetInstance().GetExpansionInterface().ChangeDevice( - slot, ExpansionInterface::EXIDeviceType::MemoryCard); + system.GetExpansionInterface().ChangeDevice(slot, + ExpansionInterface::EXIDeviceType::MemoryCard); } } @@ -620,7 +621,8 @@ bool GameCubePane::SetGCIFolder(ExpansionInterface::Slot slot, const QString& pa Config::SetBase(Config::GetInfoForGCIPath(slot), raw_path); - if (Core::IsRunning()) + auto& system = Core::System::GetInstance(); + if (Core::IsRunning(system)) { // If emulation is running and the new card is different from the old one, notify the system to // eject the old and insert the new card. @@ -629,7 +631,7 @@ bool GameCubePane::SetGCIFolder(ExpansionInterface::Slot slot, const QString& pa { // ChangeDevice unplugs the device for 1 second, which means that games should notice that // the path has changed and thus the memory card contents have changed - Core::System::GetInstance().GetExpansionInterface().ChangeDevice( + system.GetExpansionInterface().ChangeDevice( slot, ExpansionInterface::EXIDeviceType::MemoryCardFolder); } } @@ -660,14 +662,14 @@ void GameCubePane::SetAGPRom(ExpansionInterface::Slot slot, const QString& filen Config::SetBase(Config::GetInfoForAGPCartPath(slot), path_abs.toStdString()); - if (Core::IsRunning() && path_abs != path_old) + auto& system = Core::System::GetInstance(); + if (Core::IsRunning(system) && path_abs != path_old) { // ChangeDevice unplugs the device for 1 second. For an actual AGP, you can remove the // cartridge without unplugging it, and it's not clear if the AGP software actually notices // that it's been unplugged or the cartridge has changed, but this was done for memcards so // we might as well do it for the AGP too. - Core::System::GetInstance().GetExpansionInterface().ChangeDevice( - slot, ExpansionInterface::EXIDeviceType::AGP); + system.GetExpansionInterface().ChangeDevice(slot, ExpansionInterface::EXIDeviceType::AGP); } LoadSettings(); @@ -781,6 +783,7 @@ void GameCubePane::SaveSettings() Config::SetBaseOrCurrent(Config::MAIN_SKIP_IPL, m_skip_main_menu->isChecked()); Config::SetBaseOrCurrent(Config::MAIN_GC_LANGUAGE, m_language_combo->currentData().toInt()); + auto& system = Core::System::GetInstance(); // Device Settings for (ExpansionInterface::Slot slot : ExpansionInterface::SLOTS) { @@ -789,9 +792,9 @@ void GameCubePane::SaveSettings() const ExpansionInterface::EXIDeviceType current_exi_device = Config::Get(Config::GetInfoForEXIDevice(slot)); - if (Core::IsRunning() && current_exi_device != dev) + if (Core::IsRunning(system) && current_exi_device != dev) { - Core::System::GetInstance().GetExpansionInterface().ChangeDevice(slot, dev); + system.GetExpansionInterface().ChangeDevice(slot, dev); } Config::SetBaseOrCurrent(Config::GetInfoForEXIDevice(slot), dev); diff --git a/Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp b/Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp index 2f5b1987e15c..08c3431fd8ef 100644 --- a/Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp +++ b/Source/Core/DolphinQt/TAS/WiiTASInputWindow.cpp @@ -25,6 +25,7 @@ #include "Core/HW/WiimoteEmu/MotionPlus.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" #include "Core/HW/WiimoteReal/WiimoteReal.h" +#include "Core/System.h" #include "DolphinQt/QtUtils/AspectRatioWidget.h" #include "DolphinQt/QtUtils/QueueOnObject.h" @@ -347,7 +348,7 @@ WiiTASInputWindow::WiiTASInputWindow(QWidget* parent, int num) : TASInputWindow( setLayout(layout); - if (Core::IsRunning()) + if (Core::IsRunning(Core::System::GetInstance())) { m_active_extension = GetWiimote()->GetActiveExtensionNumber(); m_is_motion_plus_attached = GetWiimote()->IsMotionPlusAttached(); diff --git a/Source/Core/VideoCommon/VideoBackendBase.cpp b/Source/Core/VideoCommon/VideoBackendBase.cpp index 91492321f4b0..a5d309cc9636 100644 --- a/Source/Core/VideoCommon/VideoBackendBase.cpp +++ b/Source/Core/VideoCommon/VideoBackendBase.cpp @@ -299,7 +299,7 @@ void VideoBackendBase::PopulateBackendInfoFromUI(const WindowSystemInfo& wsi) { // If the core is running, the backend info will have been populated already. // If we did it here, the UI thread can race with the with the GPU thread. - if (!Core::IsRunning()) + if (!Core::IsRunning(Core::System::GetInstance())) PopulateBackendInfo(wsi); }