From 09009e01fc8bbc1f1d8ea5af7d77c76ae6e3b9e2 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 13 Apr 2021 15:47:04 +1000 Subject: [PATCH] viewer: reimplement still support in a more robust way --- app/widget/viewer/viewer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index 4e924198a..398c43cfb 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -398,6 +398,7 @@ bool ViewerWidget::ShouldForceWaveform() const void ViewerWidget::UpdateTextureFromNode(const rational& time) { bool frame_exists_at_time = FrameExistsAtTime(time); + bool frame_might_be_still = GetConnectedNode() && GetConnectedNode()->GetVideoLength().isNull(); // Check playback queue for a frame if (IsPlaying()) { @@ -434,13 +435,13 @@ void ViewerWidget::UpdateTextureFromNode(const rational& time) } // Only show warning if frame actually exists - if (frame_exists_at_time) { + if (frame_exists_at_time && !frame_might_be_still) { qWarning() << "Playback queue failed to keep up"; } } - if (frame_exists_at_time) { + if (frame_exists_at_time || frame_might_be_still) { // Frame was not in queue, will require rendering or decoding from cache RenderTicketWatcher* watcher = new RenderTicketWatcher(); connect(watcher, &RenderTicketWatcher::Finished, this, &ViewerWidget::RendererGeneratedFrame);