Adjust FIFO player object ranges
A single object can be selected instead of 2 (it was already inclusive internally), and the maximum value is the highest number of objects in any frame (minus 1) to reduce jank when multiple frames are being played back.
This commit is contained in:
parent
5ebe63b175
commit
263ca79aae
|
@ -189,6 +189,18 @@ bool FifoPlayer::IsRunningWithFakeVideoInterfaceUpdates() const
|
|||
return m_File->ShouldGenerateFakeVIUpdates();
|
||||
}
|
||||
|
||||
u32 FifoPlayer::GetMaxObjectCount() const
|
||||
{
|
||||
u32 result = 0;
|
||||
for (auto& frame : m_FrameInfo)
|
||||
{
|
||||
const u32 count = static_cast<u32>(frame.objectStarts.size());
|
||||
if (count > result)
|
||||
result = count;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
u32 FifoPlayer::GetFrameObjectCount() const
|
||||
{
|
||||
if (m_CurrentFrame < m_FrameInfo.size())
|
||||
|
|
|
@ -74,6 +74,7 @@ public:
|
|||
bool IsPlaying() const;
|
||||
|
||||
FifoDataFile* GetFile() const { return m_File.get(); }
|
||||
u32 GetMaxObjectCount() const;
|
||||
u32 GetFrameObjectCount() const;
|
||||
u32 GetCurrentFrameNum() const { return m_CurrentFrame; }
|
||||
const AnalyzedFrameInfo& GetAnalyzedFrameInfo(u32 frame) const { return m_FrameInfo[frame]; }
|
||||
|
|
|
@ -298,16 +298,16 @@ void FIFOPlayerWindow::OnFIFOLoaded()
|
|||
{
|
||||
FifoDataFile* file = FifoPlayer::GetInstance().GetFile();
|
||||
|
||||
auto object_count = FifoPlayer::GetInstance().GetFrameObjectCount();
|
||||
auto object_count = FifoPlayer::GetInstance().GetMaxObjectCount();
|
||||
auto frame_count = file->GetFrameCount();
|
||||
|
||||
m_frame_range_to->setMaximum(frame_count);
|
||||
m_object_range_to->setMaximum(object_count);
|
||||
m_object_range_to->setMaximum(object_count - 1);
|
||||
|
||||
m_frame_range_from->setValue(0);
|
||||
m_object_range_from->setValue(0);
|
||||
m_frame_range_to->setValue(frame_count);
|
||||
m_object_range_to->setValue(object_count);
|
||||
m_object_range_to->setValue(object_count - 1);
|
||||
|
||||
UpdateInfo();
|
||||
UpdateLimits();
|
||||
|
@ -336,8 +336,8 @@ void FIFOPlayerWindow::UpdateLimits()
|
|||
{
|
||||
m_frame_range_from->setMaximum(std::max(m_frame_range_to->value() - 1, 0));
|
||||
m_frame_range_to->setMinimum(m_frame_range_from->value() + 1);
|
||||
m_object_range_from->setMaximum(std::max(m_object_range_to->value() - 1, 0));
|
||||
m_object_range_to->setMinimum(m_object_range_from->value() + 1);
|
||||
m_object_range_from->setMaximum(m_object_range_to->value());
|
||||
m_object_range_to->setMinimum(m_object_range_from->value());
|
||||
}
|
||||
|
||||
void FIFOPlayerWindow::UpdateControls()
|
||||
|
|
Loading…
Reference in New Issue