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 (!g_cfg.savestate.suspend_emu)
{
Emu.after_kill_callback = []()
{
Emu.Restart();
};
}
Emu.Kill(false, true);
return;
}

View File

@ -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);
});

View File

@ -300,6 +300,7 @@
<addaction name="separator"/>
<addaction name="actionCreate_RSX_Capture"/>
<addaction name="actionCreate_Savestate"/>
<addaction name="actionCreate_Savestate_And_Exit"/>
</widget>
<widget class="QMenu" name="menuView">
<property name="title">
@ -1192,6 +1193,14 @@
<property name="text">
<string>Create Savestate</string>
</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 name="actionManage_Game_Patches">
<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);
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);
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);
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
m_emu_settings->EnhanceCheckBox(ui->alwaysStart, emu_settings_type::StartOnBoot);
SubscribeTooltip(ui->alwaysStart, tooltips.settings.start_on_boot);