From 8636ee0dc67fa99f871374cc454e51ec39aa8d5e Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Fri, 3 Jul 2026 02:44:19 +0800 Subject: [PATCH] Remove automatic full-cache invalidation on LUT processor change InvalidateAll() on the OCIO LUT node caused the preview autocacher to re-render the entire timeline, freezing the UI when switching LUT files. Instead, let the new processor be used naturally on the next render request (scrubbing/playback). --- app/node/color/ociolut/ociolut.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/app/node/color/ociolut/ociolut.cpp b/app/node/color/ociolut/ociolut.cpp index 7dbce7ca9..aea41b933 100644 --- a/app/node/color/ociolut/ociolut.cpp +++ b/app/node/color/ociolut/ociolut.cpp @@ -20,7 +20,6 @@ #include "ociolut.h" -#include #include #include @@ -208,15 +207,10 @@ void OCIOLutNode::SetProcessorResult(ColorProcessorPtr processor, last_processor_ = processor; set_processor(processor); - // The processor has changed. In the main GUI process we need to invalidate - // cached frames so the viewer refreshes automatically. In the render worker - // process, a full invalidation can trigger an expensive re-cache of the - // entire timeline, so we skip it; the next render request will naturally - // pick up the new processor. - if (QCoreApplication::applicationName() != - QStringLiteral("olive-render-worker")) { - InvalidateAll(kTextureInput); - } + // NOTE: We intentionally do NOT call InvalidateAll() here. A full cache + // invalidation of the entire timeline freezes the UI while the preview + // autocacher re-renders every frame. The new processor will be picked up + // naturally on the next render request (e.g. scrubbing or playback). } OCIOLutNode::GenerateProcessorTask::GenerateProcessorTask(