From b93e51ca7c0e6ae1ce5238545deadc405902206f Mon Sep 17 00:00:00 2001 From: OpenSauce04 Date: Tue, 6 Aug 2024 21:28:21 +0100 Subject: [PATCH] Changed how pausing the emulator is handled to allow frame advancing Where previously the emulator thread was halted, frame advancing mode is now enabled instead This commit also removes the "Enable Frame Advancing" option due to being obsolete --- src/lime_qt/main.cpp | 28 ++++++++-------------------- src/lime_qt/main.ui | 17 +---------------- 2 files changed, 9 insertions(+), 36 deletions(-) diff --git a/src/lime_qt/main.cpp b/src/lime_qt/main.cpp index 5d54c00e9..f08aa4991 100644 --- a/src/lime_qt/main.cpp +++ b/src/lime_qt/main.cpp @@ -1,4 +1,4 @@ -// Copyright 2014 Citra Emulator Project +// Copyright Citra Emulator Project / Lime3DS Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -639,8 +639,6 @@ void GMainWindow::InitializeHotkeys() { // TODO: This code kind of sucks link_action_shortcut(ui->action_Capture_Screenshot, QStringLiteral("Capture Screenshot")); link_action_shortcut(ui->action_Screen_Layout_Swap_Screens, swap_screens); link_action_shortcut(ui->action_Screen_Layout_Upright_Screens, rotate_screens); - link_action_shortcut(ui->action_Enable_Frame_Advancing, - QStringLiteral("Toggle Frame Advancing")); link_action_shortcut(ui->action_Advance_Frame, QStringLiteral("Advance Frame")); link_action_shortcut(ui->action_Load_from_Newest_Slot, QStringLiteral("Load from Newest Slot")); link_action_shortcut(ui->action_Save_to_Oldest_Slot, QStringLiteral("Save to Oldest Slot")); @@ -946,16 +944,8 @@ void GMainWindow::ConnectMenuEvents() { connect_menu(ui->action_Save_Movie, &GMainWindow::OnSaveMovie); connect_menu(ui->action_Movie_Read_Only_Mode, [this](bool checked) { movie.SetReadOnly(checked); }); - connect_menu(ui->action_Enable_Frame_Advancing, [this] { - if (emulation_running) { - system.frame_limiter.SetFrameAdvancing(ui->action_Enable_Frame_Advancing->isChecked()); - ui->action_Advance_Frame->setEnabled(ui->action_Enable_Frame_Advancing->isChecked()); - } - }); connect_menu(ui->action_Advance_Frame, [this] { if (emulation_running && system.frame_limiter.IsFrameAdvancing()) { - ui->action_Enable_Frame_Advancing->setChecked(true); - ui->action_Advance_Frame->setEnabled(true); system.frame_limiter.AdvanceFrame(); } }); @@ -980,7 +970,8 @@ void GMainWindow::ConnectMenuEvents() { } void GMainWindow::UpdateMenuState() { - const bool is_paused = !emu_thread || !emu_thread->IsRunning(); + const bool is_paused = + !emu_thread || !emu_thread->IsRunning() || system.frame_limiter.IsFrameAdvancing(); const std::array running_actions{ ui->action_Stop, @@ -998,6 +989,7 @@ void GMainWindow::UpdateMenuState() { } ui->action_Capture_Screenshot->setEnabled(emulation_running && !is_paused); + ui->action_Advance_Frame->setEnabled(emulation_running && is_paused); if (emulation_running && is_paused) { ui->action_Pause->setText(tr("&Continue")); @@ -1417,12 +1409,7 @@ void GMainWindow::BootGame(const QString& filename) { movie_playback_path.clear(); } - if (ui->action_Enable_Frame_Advancing->isChecked()) { - ui->action_Advance_Frame->setEnabled(true); - system.frame_limiter.SetFrameAdvancing(true); - } else { - ui->action_Advance_Frame->setEnabled(false); - } + ui->action_Advance_Frame->setEnabled(false); if (video_dumping_on_start) { StartVideoDumping(video_dumping_path); @@ -2302,6 +2289,7 @@ void GMainWindow::OnStartGame() { PreventOSSleep(); emu_thread->SetRunning(true); + system.frame_limiter.SetFrameAdvancing(false); graphics_api_button->setEnabled(false); qRegisterMetaType("Core::System::ResultStatus"); qRegisterMetaType("std::string"); @@ -2331,7 +2319,7 @@ void GMainWindow::OnRestartGame() { } void GMainWindow::OnPauseGame() { - emu_thread->SetRunning(false); + system.frame_limiter.SetFrameAdvancing(true); qt_cameras->PauseCameras(); play_time_manager->Stop(); @@ -2346,7 +2334,7 @@ void GMainWindow::OnPauseGame() { void GMainWindow::OnPauseContinueGame() { if (emulation_running) { - if (emu_thread->IsRunning()) { + if (emu_thread->IsRunning() && !system.frame_limiter.IsFrameAdvancing()) { OnPauseGame(); } else { OnStartGame(); diff --git a/src/lime_qt/main.ui b/src/lime_qt/main.ui index 8bff4a659..32a85f8ff 100644 --- a/src/lime_qt/main.ui +++ b/src/lime_qt/main.ui @@ -182,15 +182,8 @@ - - - Frame Advance - - - - + - @@ -404,14 +397,6 @@ Read-Only Mode - - - true - - - Enable Frame Advancing - - false