From 927e2252f3aaef9112e5050ce2ee771acd0fc0a0 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 6 Dec 2019 13:32:02 +1100 Subject: [PATCH] fixed bug where several frames being cached at the same time would lead to most of them returning blank --- app/render/backend/opengl/openglbackend.cpp | 15 +++++++-------- app/render/backend/opengl/openglbackend.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/app/render/backend/opengl/openglbackend.cpp b/app/render/backend/opengl/openglbackend.cpp index 63b25a0ee..8c2c9607f 100644 --- a/app/render/backend/opengl/openglbackend.cpp +++ b/app/render/backend/opengl/openglbackend.cpp @@ -31,7 +31,7 @@ bool OpenGLBackend::InitInternal() // Initiate one thread per CPU core for (int i=0;iSetParameters(params()); processors_.append(processor); } @@ -135,8 +135,6 @@ bool OpenGLBackend::TimeIsCached(const TimeRange &time) void OpenGLBackend::ThreadCompletedFrame(NodeDependency path, QByteArray hash, NodeValueTable table) { - caching_ = false; - QVariant value = table.Get(NodeParam::kTexture); OpenGLTexturePtr texture = value.value(); @@ -168,7 +166,7 @@ void OpenGLBackend::ThreadCompletedFrame(NodeDependency path, QByteArray hash, N emit CachedFrameReady(path.in(), value); } - CacheNext(); + CompletedFrame(); } void OpenGLBackend::ThreadCompletedDownload(NodeDependency dep, QByteArray hash) @@ -178,15 +176,16 @@ void OpenGLBackend::ThreadCompletedDownload(NodeDependency dep, QByteArray hash) emit CachedTimeReady(dep.in()); } -void OpenGLBackend::ThreadSkippedFrame() +void OpenGLBackend::ThreadSkippedFrame(NodeDependency dep, QByteArray hash) { - caching_ = false; - CacheNext(); + frame_cache()->SetHash(dep.in(), hash); + + CompletedFrame(); } void OpenGLBackend::ThreadHashAlreadyExists(NodeDependency dep, QByteArray hash) { ThreadCompletedDownload(dep, hash); - ThreadSkippedFrame(); + CompletedFrame(); } diff --git a/app/render/backend/opengl/openglbackend.h b/app/render/backend/opengl/openglbackend.h index acb8a807f..099f3415a 100644 --- a/app/render/backend/opengl/openglbackend.h +++ b/app/render/backend/opengl/openglbackend.h @@ -37,7 +37,7 @@ private: private slots: void ThreadCompletedFrame(NodeDependency path, QByteArray hash, NodeValueTable table); void ThreadCompletedDownload(NodeDependency dep, QByteArray hash); - void ThreadSkippedFrame(); + void ThreadSkippedFrame(NodeDependency dep, QByteArray hash); void ThreadHashAlreadyExists(NodeDependency dep, QByteArray hash); };