Remove hardcoded esc hotkey, make pause/stop hotkey actually toggle rather than just pausing, fix frame advance hotkey
This commit is contained in:
parent
fa91d74e2c
commit
4b5373b25b
|
@ -629,7 +629,7 @@ State GetState()
|
||||||
|
|
||||||
if (s_hardware_initialized)
|
if (s_hardware_initialized)
|
||||||
{
|
{
|
||||||
if (CPU::IsStepping())
|
if (CPU::IsStepping() || s_frame_step)
|
||||||
return State::Paused;
|
return State::Paused;
|
||||||
|
|
||||||
return State::Running;
|
return State::Running;
|
||||||
|
|
|
@ -89,14 +89,16 @@ static void HandleFrameskipHotkeys()
|
||||||
if (frame_step_delay_count < frame_step_delay && frame_step_hold)
|
if (frame_step_delay_count < frame_step_delay && frame_step_hold)
|
||||||
frame_step_delay_count++;
|
frame_step_delay_count++;
|
||||||
|
|
||||||
// TODO GUI Update (Depends on an unimplemented feature)
|
if ((frame_step_count == 0 || frame_step_count == FRAME_STEP_DELAY) && !frame_step_hold)
|
||||||
// if ((frame_step_count == 0 || frame_step_count == FRAME_STEP_DELAY) && !frame_step_hold)
|
{
|
||||||
|
Core::DoFrameStep();
|
||||||
|
frame_step_hold = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (frame_step_count < FRAME_STEP_DELAY)
|
if (frame_step_count < FRAME_STEP_DELAY)
|
||||||
{
|
{
|
||||||
++frame_step_count;
|
frame_step_count++;
|
||||||
if (frame_step_hold)
|
frame_step_hold = false;
|
||||||
frame_step_hold = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frame_step_count == FRAME_STEP_DELAY && frame_step_hold &&
|
if (frame_step_count == FRAME_STEP_DELAY && frame_step_hold &&
|
||||||
|
@ -108,8 +110,7 @@ static void HandleFrameskipHotkeys()
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (frame_step_count > 0)
|
||||||
if (frame_step_count > 0)
|
|
||||||
{
|
{
|
||||||
// Reset frame advance
|
// Reset frame advance
|
||||||
frame_step_count = 0;
|
frame_step_count = 0;
|
||||||
|
@ -143,7 +144,7 @@ void HotkeyScheduler::Run()
|
||||||
|
|
||||||
// Pause and Unpause
|
// Pause and Unpause
|
||||||
if (IsHotkey(HK_PLAY_PAUSE))
|
if (IsHotkey(HK_PLAY_PAUSE))
|
||||||
emit PauseHotkey();
|
emit TogglePauseHotkey();
|
||||||
|
|
||||||
// Stop
|
// Stop
|
||||||
if (IsHotkey(HK_STOP))
|
if (IsHotkey(HK_STOP))
|
||||||
|
|
|
@ -23,7 +23,7 @@ signals:
|
||||||
void ExitHotkey();
|
void ExitHotkey();
|
||||||
void FullScreenHotkey();
|
void FullScreenHotkey();
|
||||||
void StopHotkey();
|
void StopHotkey();
|
||||||
void PauseHotkey();
|
void TogglePauseHotkey();
|
||||||
void ScreenShotHotkey();
|
void ScreenShotHotkey();
|
||||||
void SetStateSlotHotkey(int slot);
|
void SetStateSlotHotkey(int slot);
|
||||||
void StateLoadSlotHotkey();
|
void StateLoadSlotHotkey();
|
||||||
|
|
|
@ -271,7 +271,7 @@ void MainWindow::ConnectMenuBar()
|
||||||
void MainWindow::ConnectHotkeys()
|
void MainWindow::ConnectHotkeys()
|
||||||
{
|
{
|
||||||
connect(m_hotkey_scheduler, &HotkeyScheduler::ExitHotkey, this, &MainWindow::close);
|
connect(m_hotkey_scheduler, &HotkeyScheduler::ExitHotkey, this, &MainWindow::close);
|
||||||
connect(m_hotkey_scheduler, &HotkeyScheduler::PauseHotkey, this, &MainWindow::Pause);
|
connect(m_hotkey_scheduler, &HotkeyScheduler::TogglePauseHotkey, this, &MainWindow::TogglePause);
|
||||||
connect(m_hotkey_scheduler, &HotkeyScheduler::StopHotkey, this, &MainWindow::RequestStop);
|
connect(m_hotkey_scheduler, &HotkeyScheduler::StopHotkey, this, &MainWindow::RequestStop);
|
||||||
connect(m_hotkey_scheduler, &HotkeyScheduler::ScreenShotHotkey, this, &MainWindow::ScreenShot);
|
connect(m_hotkey_scheduler, &HotkeyScheduler::ScreenShotHotkey, this, &MainWindow::ScreenShot);
|
||||||
connect(m_hotkey_scheduler, &HotkeyScheduler::FullScreenHotkey, this, &MainWindow::FullScreen);
|
connect(m_hotkey_scheduler, &HotkeyScheduler::FullScreenHotkey, this, &MainWindow::FullScreen);
|
||||||
|
@ -322,7 +322,6 @@ void MainWindow::ConnectRenderWidget()
|
||||||
{
|
{
|
||||||
m_rendering_to_main = false;
|
m_rendering_to_main = false;
|
||||||
m_render_widget->hide();
|
m_render_widget->hide();
|
||||||
connect(m_render_widget, &RenderWidget::EscapePressed, this, &MainWindow::RequestStop);
|
|
||||||
connect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop);
|
connect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,6 +396,18 @@ void MainWindow::Pause()
|
||||||
EnableScreenSaver(true);
|
EnableScreenSaver(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::TogglePause()
|
||||||
|
{
|
||||||
|
if (Core::GetState() == Core::State::Paused)
|
||||||
|
{
|
||||||
|
Play();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::OnStopComplete()
|
void MainWindow::OnStopComplete()
|
||||||
{
|
{
|
||||||
m_stop_requested = false;
|
m_stop_requested = false;
|
||||||
|
@ -577,8 +588,8 @@ void MainWindow::HideRenderWidget()
|
||||||
}
|
}
|
||||||
|
|
||||||
// The following code works around a driver bug that would lead to Dolphin crashing when changing
|
// The following code works around a driver bug that would lead to Dolphin crashing when changing
|
||||||
// graphics backends (e.g. OpenGL to Vulkan). To avoid this the render widget is (safely) recreated
|
// graphics backends (e.g. OpenGL to Vulkan). To avoid this the render widget is (safely)
|
||||||
disconnect(m_render_widget, &RenderWidget::EscapePressed, this, &MainWindow::RequestStop);
|
// recreated
|
||||||
disconnect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop);
|
disconnect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop);
|
||||||
|
|
||||||
m_render_widget->hide();
|
m_render_widget->hide();
|
||||||
|
@ -588,7 +599,6 @@ void MainWindow::HideRenderWidget()
|
||||||
m_render_widget = new RenderWidget;
|
m_render_widget = new RenderWidget;
|
||||||
|
|
||||||
m_render_widget->installEventFilter(this);
|
m_render_widget->installEventFilter(this);
|
||||||
connect(m_render_widget, &RenderWidget::EscapePressed, this, &MainWindow::RequestStop);
|
|
||||||
connect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop);
|
connect(m_render_widget, &RenderWidget::Closed, this, &MainWindow::ForceStop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ private:
|
||||||
void Open();
|
void Open();
|
||||||
void Play(const std::optional<std::string>& savestate_path = {});
|
void Play(const std::optional<std::string>& savestate_path = {});
|
||||||
void Pause();
|
void Pause();
|
||||||
|
void TogglePause();
|
||||||
|
|
||||||
// May ask for confirmation. Returns whether or not it actually stopped.
|
// May ask for confirmation. Returns whether or not it actually stopped.
|
||||||
bool RequestStop();
|
bool RequestStop();
|
||||||
|
|
Loading…
Reference in New Issue