From 10bc448caa00d007f350c4ec7f61637fd6152054 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Fri, 29 Jul 2022 16:36:23 -0700 Subject: [PATCH] render: copy and set null single frame render immediately --- app/render/previewautocacher.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/render/previewautocacher.cpp b/app/render/previewautocacher.cpp index 2bf3dcaca..15cce575a 100644 --- a/app/render/previewautocacher.cpp +++ b/app/render/previewautocacher.cpp @@ -565,13 +565,15 @@ void PreviewAutoCacher::TryRender() } if (single_frame_render_) { - // Check if already caching this - RenderTicketWatcher *watcher = RenderFrame(single_frame_render_->property("time").value(), - nullptr, - single_frame_render_->property("dry").toBool()); - video_immediate_passthroughs_[watcher].append(single_frame_render_); - + // Make an explicit copy of the render ticket here - it seems that on some systems it can be set + // to NULL before we're done with it... + RenderTicketPtr t = single_frame_render_; single_frame_render_ = nullptr; + + RenderTicketWatcher *watcher = RenderFrame(t->property("time").value(), + nullptr, + t->property("dry").toBool()); + video_immediate_passthroughs_[watcher].append(t); } // Completely arbitrary number. I don't know what's optimal for this yet.