Files
archived-pcsx2/pcsx2/Recording/InputRecordingControls.cpp

99 lines
2.1 KiB
C++

// SPDX-FileCopyrightText: 2002-2026 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
#include "DebugTools/Debug.h"
#include "MemoryTypes.h"
#include "InputRecording.h"
#include "InputRecordingControls.h"
#include "Utilities/InputRecordingLogger.h"
#include "Host.h"
#include "MTGS.h"
#include "VMManager.h"
void InputRecordingControls::toggleRecordMode()
{
if (isReplaying())
{
setRecordMode();
}
else
{
setReplayMode();
}
}
void InputRecordingControls::setRecordMode(bool waitForFrameToEnd)
{
if (!waitForFrameToEnd || VMManager::GetState() == VMState::Paused)
{
m_state = Mode::Recording;
InputRec::log(TRANSLATE("InputRecordingControls","Record Mode Enabled"), Host::OSD_INFO_DURATION);
MTGS::PresentCurrentFrame();
}
else
{
m_controlQueue.push([&]() {
m_state = Mode::Recording;
InputRec::log(TRANSLATE("InputRecordingControls","Record Mode Enabled"), Host::OSD_INFO_DURATION);
});
}
}
void InputRecordingControls::setReplayMode(bool waitForFrameToEnd)
{
if (!waitForFrameToEnd || VMManager::GetState() == VMState::Paused)
{
m_state = Mode::Replaying;
InputRec::log(TRANSLATE("InputRecordingControls","Replay Mode Enabled"), Host::OSD_INFO_DURATION);
MTGS::PresentCurrentFrame();
}
else
{
m_controlQueue.push([&]() {
m_state = Mode::Replaying;
InputRec::log(TRANSLATE("InputRecordingControls","Record Mode Enabled"), Host::OSD_INFO_DURATION);
});
}
}
bool InputRecordingControls::isReplaying() const
{
return m_state == Mode::Replaying;
}
void InputRecordingControls::processControlQueue()
{
if (!m_controlQueue.empty())
{
while (!m_controlQueue.empty())
{
m_controlQueue.front()();
m_controlQueue.pop();
}
MTGS::PresentCurrentFrame();
}
}
bool InputRecordingControls::isRecording() const
{
return m_state == Mode::Recording;
}
// TODO - Once there is GS Capture support again
//void InputRecordingControls::StopCapture() const
//{
// // TODO - Vaser - Is capturing supported in Qt yet - Check
// /*if (MainEmuFrame* mainFrame = GetMainFramePtr())
// {
// if (mainFrame->IsCapturing())
// {
// mainFrame->VideoCaptureToggle();
// inputRec::log("Capture completed");
// }
// }*/
//}