diff --git a/rpcs3/rpcs3qt/gs_frame.cpp b/rpcs3/rpcs3qt/gs_frame.cpp
index f893029180..1476e9a470 100644
--- a/rpcs3/rpcs3qt/gs_frame.cpp
+++ b/rpcs3/rpcs3qt/gs_frame.cpp
@@ -383,6 +383,14 @@ void gs_frame::handle_shortcut(gui::shortcuts::shortcut shortcut_key, const QKey
{
if (!m_disable_kb_hotkeys)
{
+ if (!g_cfg.savestate.suspend_emu)
+ {
+ Emu.after_kill_callback = []()
+ {
+ Emu.Restart();
+ };
+ }
+
Emu.Kill(false, true);
return;
}
diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp
index b17dd31a18..e318b543a9 100644
--- a/rpcs3/rpcs3qt/main_window.cpp
+++ b/rpcs3/rpcs3qt/main_window.cpp
@@ -57,6 +57,7 @@
#include "Emu/vfs_config.h"
#include "Emu/System.h"
#include "Emu/system_utils.hpp"
+#include "Emu/system_config.h"
#include "Crypto/unpkg.h"
#include "Crypto/unself.h"
@@ -2395,6 +2396,21 @@ void main_window::CreateConnects()
connect(ui->actionCreate_Savestate, &QAction::triggered, this, []()
{
gui_log.notice("User triggered savestate creation from utilities.");
+
+ if (!g_cfg.savestate.suspend_emu)
+ {
+ Emu.after_kill_callback = []()
+ {
+ Emu.Restart();
+ };
+ }
+
+ Emu.Kill(false, true);
+ });
+
+ connect(ui->actionCreate_Savestate_And_Exit, &QAction::triggered, this, []()
+ {
+ gui_log.notice("User triggered savestate creation and emulation stop from utilities.");
Emu.Kill(false, true);
});
diff --git a/rpcs3/rpcs3qt/main_window.ui b/rpcs3/rpcs3qt/main_window.ui
index 5a7c6b766d..7c5d338501 100644
--- a/rpcs3/rpcs3qt/main_window.ui
+++ b/rpcs3/rpcs3qt/main_window.ui
@@ -300,6 +300,7 @@
+