CommonHostInterface: Implement frame step hotkey
This commit is contained in:
parent
fe867edefb
commit
97a946bd62
|
@ -914,6 +914,11 @@ void QtHostInterface::threadEntryPoint()
|
|||
|
||||
m_system->RunFrame();
|
||||
UpdateControllerRumble();
|
||||
if (m_frame_step_request)
|
||||
{
|
||||
m_frame_step_request = false;
|
||||
PauseSystem(true);
|
||||
}
|
||||
|
||||
renderDisplay();
|
||||
|
||||
|
|
|
@ -402,8 +402,6 @@ bool SDLHostInterface::Initialize()
|
|||
|
||||
ImGui::NewFrame();
|
||||
|
||||
RegisterHotkeys();
|
||||
|
||||
// process events to pick up controllers before updating input map
|
||||
ProcessEvents();
|
||||
UpdateInputMap();
|
||||
|
@ -1435,16 +1433,6 @@ void SDLHostInterface::ClearImGuiFocus()
|
|||
ImGui::SetWindowFocus(nullptr);
|
||||
}
|
||||
|
||||
void SDLHostInterface::RegisterHotkeys()
|
||||
{
|
||||
RegisterHotkey(StaticString("General"), StaticString("FrameStep"), StaticString("Frame Step"), [this](bool pressed) {
|
||||
if (!pressed)
|
||||
{
|
||||
DoFrameStep();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void SDLHostInterface::DoStartDisc()
|
||||
{
|
||||
Assert(!m_system);
|
||||
|
@ -1476,15 +1464,6 @@ void SDLHostInterface::DoChangeDisc()
|
|||
m_system->ResetPerformanceCounters();
|
||||
}
|
||||
|
||||
void SDLHostInterface::DoFrameStep()
|
||||
{
|
||||
if (!m_system)
|
||||
return;
|
||||
|
||||
m_frame_step_request = true;
|
||||
m_paused = false;
|
||||
}
|
||||
|
||||
void SDLHostInterface::Run()
|
||||
{
|
||||
while (!m_quit_request)
|
||||
|
|
|
@ -66,7 +66,6 @@ private:
|
|||
void DestroyDisplay();
|
||||
void CreateImGuiContext();
|
||||
void UpdateFramebufferScale();
|
||||
void RegisterHotkeys();
|
||||
|
||||
/// Executes a callback later, after the UI has finished rendering. Needed to boot while rendering ImGui.
|
||||
void RunLater(std::function<void()> callback);
|
||||
|
@ -80,7 +79,6 @@ private:
|
|||
void DrawImGuiWindows() override;
|
||||
void DoStartDisc();
|
||||
void DoChangeDisc();
|
||||
void DoFrameStep();
|
||||
|
||||
void HandleSDLEvent(const SDL_Event* event);
|
||||
void ProcessEvents();
|
||||
|
@ -101,7 +99,6 @@ private:
|
|||
|
||||
bool m_fullscreen = false;
|
||||
bool m_quit_request = false;
|
||||
bool m_frame_step_request = false;
|
||||
bool m_settings_window_open = false;
|
||||
bool m_about_window_open = false;
|
||||
|
||||
|
|
|
@ -856,6 +856,16 @@ void CommonHostInterface::DrawDebugWindows()
|
|||
m_system->GetMDEC()->DrawDebugStateWindow();
|
||||
}
|
||||
|
||||
void CommonHostInterface::DoFrameStep()
|
||||
{
|
||||
if (!m_system)
|
||||
return;
|
||||
|
||||
m_frame_step_request = true;
|
||||
if (m_paused)
|
||||
PauseSystem(false);
|
||||
}
|
||||
|
||||
std::optional<CommonHostInterface::HostKeyCode>
|
||||
CommonHostInterface::GetHostKeyCode(const std::string_view key_code) const
|
||||
{
|
||||
|
@ -1263,6 +1273,13 @@ void CommonHostInterface::RegisterGeneralHotkeys()
|
|||
if (!pressed && m_system)
|
||||
SaveScreenshot();
|
||||
});
|
||||
|
||||
RegisterHotkey(StaticString("General"), StaticString("FrameStep"), StaticString("Frame Step"), [this](bool pressed) {
|
||||
if (!pressed)
|
||||
{
|
||||
DoFrameStep();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void CommonHostInterface::RegisterGraphicsHotkeys()
|
||||
|
|
|
@ -271,6 +271,7 @@ protected:
|
|||
void DrawFPSWindow();
|
||||
void DrawOSDMessages();
|
||||
void DrawDebugWindows();
|
||||
void DoFrameStep();
|
||||
|
||||
std::unique_ptr<GameList> m_game_list;
|
||||
|
||||
|
@ -280,6 +281,7 @@ protected:
|
|||
std::mutex m_osd_messages_lock;
|
||||
|
||||
bool m_paused = false;
|
||||
bool m_frame_step_request = false;
|
||||
bool m_speed_limiter_temp_disabled = false;
|
||||
bool m_speed_limiter_enabled = false;
|
||||
bool m_timer_resolution_increased = false;
|
||||
|
|
Loading…
Reference in New Issue