From f86ab6a965141aba4d97cf69b1a5477abcf881b0 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 26 Aug 2020 17:38:16 +1000 Subject: [PATCH] renderer: prevent infinite loop occurring on some time invalidations --- app/render/backend/renderbackend.cpp | 4 ++++ app/render/framehashcache.cpp | 3 +++ 2 files changed, 7 insertions(+) diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index b7660f93f..c6fb6e814 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -148,6 +148,10 @@ void RenderBackend::SetViewerNode(ViewerOutput *viewer_node) copied_viewer_node_ = static_cast(viewer_node_->copy()); copy_map_.insert(viewer_node_, copied_viewer_node_); + // We begin an operation and never end it which prevents the copy from unnecessarily + // invalidating its own cache + copied_viewer_node_->BeginOperation(); + NodeGraphChanged(viewer_node_->texture_input()); NodeGraphChanged(viewer_node_->samples_input()); ProcessUpdateQueue(); diff --git a/app/render/framehashcache.cpp b/app/render/framehashcache.cpp index bedfe7adb..c02d94e91 100644 --- a/app/render/framehashcache.cpp +++ b/app/render/framehashcache.cpp @@ -147,6 +147,9 @@ QString FrameHashCache::GetFormatExtension() QVector FrameHashCache::GetFrameListFromTimeRange(TimeRangeList range_list, const rational &timebase) { + // If timebase is null, this will be an infinite loop + Q_ASSERT(!timebase.isNull()); + QVector times; while (!range_list.isEmpty()) {