Savestates: Fix restart when suspend mode is off

Add a new menu button for explicit exit (mostly for debug purposes)
This commit is contained in:
Eladash 2024-01-20 21:25:10 +02:00 committed by Elad.Ash
parent 01ee119c59
commit f19744ae88
4 changed files with 34 additions and 4 deletions

View File

@ -383,6 +383,14 @@ void gs_frame::handle_shortcut(gui::shortcuts::shortcut shortcut_key, const QKey
{ {
if (!m_disable_kb_hotkeys) if (!m_disable_kb_hotkeys)
{ {
if (!g_cfg.savestate.suspend_emu)
{
Emu.after_kill_callback = []()
{
Emu.Restart();
};
}
Emu.Kill(false, true); Emu.Kill(false, true);
return; return;
} }

View File

@ -57,6 +57,7 @@
#include "Emu/vfs_config.h" #include "Emu/vfs_config.h"
#include "Emu/System.h" #include "Emu/System.h"
#include "Emu/system_utils.hpp" #include "Emu/system_utils.hpp"
#include "Emu/system_config.h"
#include "Crypto/unpkg.h" #include "Crypto/unpkg.h"
#include "Crypto/unself.h" #include "Crypto/unself.h"
@ -2395,6 +2396,21 @@ void main_window::CreateConnects()
connect(ui->actionCreate_Savestate, &QAction::triggered, this, []() connect(ui->actionCreate_Savestate, &QAction::triggered, this, []()
{ {
gui_log.notice("User triggered savestate creation from utilities."); 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); Emu.Kill(false, true);
}); });

View File

@ -300,6 +300,7 @@
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionCreate_RSX_Capture"/> <addaction name="actionCreate_RSX_Capture"/>
<addaction name="actionCreate_Savestate"/> <addaction name="actionCreate_Savestate"/>
<addaction name="actionCreate_Savestate_And_Exit"/>
</widget> </widget>
<widget class="QMenu" name="menuView"> <widget class="QMenu" name="menuView">
<property name="title"> <property name="title">
@ -1192,6 +1193,14 @@
<property name="text"> <property name="text">
<string>Create Savestate</string> <string>Create Savestate</string>
</property> </property>
</action>
<action name="actionCreate_Savestate_And_Exit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Stop And Create Savestate</string>
</property>
</action> </action>
<action name="actionManage_Game_Patches"> <action name="actionManage_Game_Patches">
<property name="text"> <property name="text">

View File

@ -962,7 +962,7 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
const std::string selected_device = m_emu_settings->GetSetting(emu_settings_type::AudioDevice); const std::string selected_device = m_emu_settings->GetSetting(emu_settings_type::AudioDevice);
int device_index = 0; int device_index = 0;
for (const audio_device_enumerator::audio_device& dev : dev_array) for (auto& dev : dev_array)
{ {
const QString cur_item = qstr(dev.id); const QString cur_item = qstr(dev.id);
ui->audioDeviceBox->addItem(qstr(dev.name), cur_item); ui->audioDeviceBox->addItem(qstr(dev.name), cur_item);
@ -2308,9 +2308,6 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
m_emu_settings->EnhanceCheckBox(ui->disableVertexCache, emu_settings_type::DisableVertexCache); m_emu_settings->EnhanceCheckBox(ui->disableVertexCache, emu_settings_type::DisableVertexCache);
SubscribeTooltip(ui->disableVertexCache, tooltips.settings.disable_vertex_cache); SubscribeTooltip(ui->disableVertexCache, tooltips.settings.disable_vertex_cache);
m_emu_settings->EnhanceCheckBox(ui->forceHwMSAAResolve, emu_settings_type::ForceHwMSAAResolve);
SubscribeTooltip(ui->forceHwMSAAResolve, tooltips.settings.force_hw_MSAA);
// Checkboxes: core debug options // Checkboxes: core debug options
m_emu_settings->EnhanceCheckBox(ui->alwaysStart, emu_settings_type::StartOnBoot); m_emu_settings->EnhanceCheckBox(ui->alwaysStart, emu_settings_type::StartOnBoot);
SubscribeTooltip(ui->alwaysStart, tooltips.settings.start_on_boot); SubscribeTooltip(ui->alwaysStart, tooltips.settings.start_on_boot);