From 58d062ad758ea019d05292d3809a4cb93c623bd7 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 12 May 2021 11:09:57 +1000 Subject: [PATCH] viewer: run queue if windows are still active Fixes #1628 --- app/widget/viewer/viewer.cpp | 8 +++++++- app/widget/viewer/viewerwindow.cpp | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index 04de4900e..7e8c31d97 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -605,7 +605,7 @@ void ViewerWidget::PlayInternal(int speed, bool in_to_out_only) controls_->ShowPauseButton(); // Attempt to fill playback queue - if (display_widget_->isVisible()) { + if (display_widget_->isVisible() || !windows_.isEmpty()) { prequeue_length_ = DeterminePlaybackQueueSize(); if (prequeue_length_ > 0) { @@ -1243,6 +1243,12 @@ void ViewerWidget::PlaybackTimerUpdate() if (display_widget_->isVisible()) { // Updating display widget UpdateTextureFromNode(); + } else if (!windows_.empty()) { + // We still run the queue if windows are visible even if our own display widget isn't visible + rational t = GetTime(); + while (!playback_queue_.empty() && playback_queue_.front().timestamp != t) { + PopOldestFrameFromPlaybackQueue(); + } } } diff --git a/app/widget/viewer/viewerwindow.cpp b/app/widget/viewer/viewerwindow.cpp index 7f6a7592b..eb4ba0531 100644 --- a/app/widget/viewer/viewerwindow.cpp +++ b/app/widget/viewer/viewerwindow.cpp @@ -119,6 +119,8 @@ void ViewerWindow::UpdateFromQueue() queue_.pop_front(); } } + + display_widget_->update(); } void ViewerWindow::UpdateMatrix()