mirror of
https://github.com/stenzek/duckstation.git
synced 2026-02-14 02:14:35 +00:00
Qt: Fix inability to exit with HC mode active
This commit is contained in:
@@ -143,7 +143,7 @@ void DisplayWidget::handleCloseEvent(QCloseEvent* event)
|
||||
{
|
||||
QMetaObject::invokeMethod(g_main_window, "requestShutdown", Qt::QueuedConnection, Q_ARG(bool, true),
|
||||
Q_ARG(bool, true), Q_ARG(bool, false), Q_ARG(bool, true), Q_ARG(bool, true),
|
||||
Q_ARG(bool, false));
|
||||
Q_ARG(bool, true), Q_ARG(bool, false));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -2299,9 +2299,9 @@ void MainWindow::connectSignals()
|
||||
connect(m_ui.actionAddGameDirectory, &QAction::triggered,
|
||||
[this]() { getSettingsWindow()->getGameListSettingsWidget()->addSearchDirectory(this); });
|
||||
connect(m_ui.actionPowerOff, &QAction::triggered, this,
|
||||
[this]() { requestShutdown(true, true, g_settings.save_state_on_exit, true, false, false); });
|
||||
[this]() { requestShutdown(true, true, g_settings.save_state_on_exit, true, true, false, false); });
|
||||
connect(m_ui.actionPowerOffWithoutSaving, &QAction::triggered, this,
|
||||
[this]() { requestShutdown(false, false, false, true, false, false); });
|
||||
[this]() { requestShutdown(false, false, false, true, false, false, false); });
|
||||
connect(m_ui.actionReset, &QAction::triggered, this, []() { g_emu_thread->resetSystem(true); });
|
||||
connect(m_ui.actionPause, &QAction::toggled, this, &MainWindow::onPauseActionToggled);
|
||||
connect(m_ui.actionScreenshot, &QAction::triggered, g_emu_thread, &EmuThread::saveScreenshot);
|
||||
@@ -2710,10 +2710,10 @@ void MainWindow::closeEvent(QCloseEvent* event)
|
||||
}
|
||||
|
||||
// But if there is, we have to cancel the action, regardless of whether we ended exiting
|
||||
// or not. The window still needs to be visible while GS is shutting down.
|
||||
// or not. The window still needs to be visible while the system shuts down.
|
||||
event->ignore();
|
||||
|
||||
requestShutdown(true, true, g_settings.save_state_on_exit, true, true, true);
|
||||
requestShutdown(true, true, g_settings.save_state_on_exit, true, true, true, true);
|
||||
}
|
||||
|
||||
void MainWindow::changeEvent(QEvent* event)
|
||||
@@ -2830,7 +2830,7 @@ void MainWindow::runOnUIThread(const std::function<void()>& func)
|
||||
}
|
||||
|
||||
void MainWindow::requestShutdown(bool allow_confirm, bool allow_save_to_state, bool save_state, bool check_safety,
|
||||
bool exit_fullscreen_ui, bool quit_afterwards)
|
||||
bool check_pause, bool exit_fullscreen_ui, bool quit_afterwards)
|
||||
{
|
||||
if (!QtHost::IsSystemValidOrStarting())
|
||||
{
|
||||
@@ -2851,7 +2851,7 @@ void MainWindow::requestShutdown(bool allow_confirm, bool allow_save_to_state, b
|
||||
if (!m_is_closing && s_system_valid && allow_confirm && Host::GetBoolSettingValue("Main", "ConfirmPowerOff", true))
|
||||
{
|
||||
// Hardcore mode restrictions.
|
||||
if (!s_system_paused && s_achievements_hardcore_mode && allow_confirm)
|
||||
if (check_pause && !s_system_paused && s_achievements_hardcore_mode && allow_confirm)
|
||||
{
|
||||
Host::RunOnCPUThread(
|
||||
[allow_confirm, allow_save_to_state, save_state, check_safety, exit_fullscreen_ui, quit_afterwards]() {
|
||||
@@ -2860,7 +2860,7 @@ void MainWindow::requestShutdown(bool allow_confirm, bool allow_save_to_state, b
|
||||
|
||||
Host::RunOnUIThread(
|
||||
[allow_confirm, allow_save_to_state, save_state, check_safety, exit_fullscreen_ui, quit_afterwards]() {
|
||||
g_main_window->requestShutdown(allow_confirm, allow_save_to_state, save_state, check_safety,
|
||||
g_main_window->requestShutdown(allow_confirm, allow_save_to_state, save_state, check_safety, false,
|
||||
exit_fullscreen_ui, quit_afterwards);
|
||||
});
|
||||
});
|
||||
@@ -2915,7 +2915,7 @@ void MainWindow::requestShutdown(bool allow_confirm, bool allow_save_to_state, b
|
||||
void MainWindow::requestExit(bool allow_confirm /* = true */)
|
||||
{
|
||||
// this is block, because otherwise closeEvent() will also prompt
|
||||
requestShutdown(allow_confirm, true, g_settings.save_state_on_exit, true, true, true);
|
||||
requestShutdown(allow_confirm, true, g_settings.save_state_on_exit, true, true, true, true);
|
||||
}
|
||||
|
||||
void MainWindow::checkForSettingChanges()
|
||||
|
||||
@@ -123,7 +123,7 @@ public Q_SLOTS:
|
||||
|
||||
void runOnUIThread(const std::function<void()>& func);
|
||||
void requestShutdown(bool allow_confirm, bool allow_save_to_state, bool save_state, bool check_safety,
|
||||
bool exit_fullscreen_ui, bool quit_afterwards);
|
||||
bool check_pause, bool exit_fullscreen_ui, bool quit_afterwards);
|
||||
void requestExit(bool allow_confirm = true);
|
||||
void checkForSettingChanges();
|
||||
std::optional<WindowInfo> getWindowInfo();
|
||||
|
||||
@@ -537,7 +537,6 @@ bool QtHost::SetCriticalFolders()
|
||||
|| StringUtil::StartsWithNoCase(EmuFolders::AppRoot, "/usr/lib")
|
||||
#endif
|
||||
)
|
||||
|
||||
{
|
||||
QMessageBox::critical(nullptr, QStringLiteral("Error"),
|
||||
QStringLiteral("Resources are missing, your installation is incomplete."));
|
||||
@@ -2943,7 +2942,7 @@ void Host::RequestSystemShutdown(bool allow_confirm, bool save_state, bool check
|
||||
|
||||
QMetaObject::invokeMethod(g_main_window, "requestShutdown", Qt::QueuedConnection, Q_ARG(bool, allow_confirm),
|
||||
Q_ARG(bool, true), Q_ARG(bool, save_state), Q_ARG(bool, check_memcard_busy),
|
||||
Q_ARG(bool, false), Q_ARG(bool, false));
|
||||
Q_ARG(bool, true), Q_ARG(bool, false), Q_ARG(bool, false));
|
||||
}
|
||||
|
||||
void Host::RequestResetSettings(bool system, bool controller)
|
||||
|
||||
Reference in New Issue
Block a user