viewer: keep track of request order and ignore old requests

Prevents visual confusion with frames that were requested before the most recent
but arrived after.
This commit is contained in:
itsmattkc
2020-05-21 03:09:39 +10:00
parent 0cf6c9a1f6
commit cb72736f52
2 changed files with 15 additions and 2 deletions
+13 -2
View File
@@ -421,6 +421,8 @@ void ViewerWidget::UpdateTextureFromNode(const rational& time)
this,
&ViewerWidget::RendererGeneratedFrame);
nonqueue_watchers_.append(watcher);
watcher->setFuture(GetFrame(time, true, true));
}
@@ -695,9 +697,18 @@ void ViewerWidget::RendererGeneratedFrame()
{
QFutureWatcher<FramePtr>* watcher = static_cast<QFutureWatcher<FramePtr>*>(sender());
FramePtr frame = watcher->result();
watcher->deleteLater();
SetDisplayImage(frame, false);
if (nonqueue_watchers_.contains(watcher)) {
while (!nonqueue_watchers_.isEmpty()) {
if (nonqueue_watchers_.takeFirst() == watcher) {
break;
}
}
SetDisplayImage(frame, false);
}
watcher->deleteLater();
}
void ViewerWidget::RendererGeneratedFrameForQueue()