diff options
author | Gus Caplan <me@gus.host> | 2022-07-15 03:42:56 +0200 |
---|---|---|
committer | Gus Caplan <me@gus.host> | 2022-07-18 07:35:07 +0200 |
commit | 742f67908c191a71b204519a353fb5e42a9dea56 (patch) | |
tree | 73da44972adc2b3c2bd9f427c9afd9108673547f /src | |
parent | Merge pull request #8569 from merryhime/watchpoints (diff) | |
download | yuzu-742f67908c191a71b204519a353fb5e42a9dea56.tar yuzu-742f67908c191a71b204519a353fb5e42a9dea56.tar.gz yuzu-742f67908c191a71b204519a353fb5e42a9dea56.tar.bz2 yuzu-742f67908c191a71b204519a353fb5e42a9dea56.tar.lz yuzu-742f67908c191a71b204519a353fb5e42a9dea56.tar.xz yuzu-742f67908c191a71b204519a353fb5e42a9dea56.tar.zst yuzu-742f67908c191a71b204519a353fb5e42a9dea56.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/am/am.cpp | 4 | ||||
-rw-r--r-- | src/core/hle/service/am/am.h | 1 | ||||
-rw-r--r-- | src/yuzu/main.cpp | 17 | ||||
-rw-r--r-- | src/yuzu/main.h | 1 |
4 files changed, 23 insertions, 0 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 9c62ebc60..9116dd77c 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -636,6 +636,10 @@ void AppletMessageQueue::RequestExit() { PushMessage(AppletMessage::Exit); } +void AppletMessageQueue::RequestResume() { + PushMessage(AppletMessage::Resume); +} + void AppletMessageQueue::FocusStateChanged() { PushMessage(AppletMessage::FocusStateChanged); } diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h index 988ead215..53144427b 100644 --- a/src/core/hle/service/am/am.h +++ b/src/core/hle/service/am/am.h @@ -90,6 +90,7 @@ public: AppletMessage PopMessage(); std::size_t GetMessageCount() const; void RequestExit(); + void RequestResume(); void FocusStateChanged(); void OperationModeChanged(); diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index ed802d329..e60d84054 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -1131,6 +1131,7 @@ void GMainWindow::OnAppFocusStateChanged(Qt::ApplicationState state) { OnPauseGame(); } else if (!emu_thread->IsRunning() && auto_paused && state == Qt::ApplicationActive) { auto_paused = false; + RequestGameResume(); OnStartGame(); } } @@ -2570,6 +2571,7 @@ void GMainWindow::OnPauseContinueGame() { if (emu_thread->IsRunning()) { OnPauseGame(); } else { + RequestGameResume(); OnStartGame(); } } @@ -3749,6 +3751,21 @@ void GMainWindow::RequestGameExit() { } } +void GMainWindow::RequestGameResume() { + auto& sm{system->ServiceManager()}; + auto applet_oe = sm.GetService<Service::AM::AppletOE>("appletOE"); + auto applet_ae = sm.GetService<Service::AM::AppletAE>("appletAE"); + + if (applet_oe != nullptr) { + applet_oe->GetMessageQueue()->RequestResume(); + return; + } + + if (applet_ae != nullptr) { + applet_ae->GetMessageQueue()->RequestResume(); + } +} + void GMainWindow::filterBarSetChecked(bool state) { ui->action_Show_Filter_Bar->setChecked(state); emit(OnToggleFilterBar()); diff --git a/src/yuzu/main.h b/src/yuzu/main.h index 8cf224c9c..09e37f152 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -244,6 +244,7 @@ private: bool ConfirmChangeGame(); bool ConfirmForceLockedExit(); void RequestGameExit(); + void RequestGameResume(); void closeEvent(QCloseEvent* event) override; private slots: |