From 644dd2df30f19875444a90bfe835ac32f4179941 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 3 Mar 2020 01:49:37 +1100 Subject: [PATCH] renderer: fixed bug that would hang exports after 1 x (cores) frames were exported --- app/render/backend/videorenderbackend.cpp | 8 ++++++++ app/render/backend/videorenderbackend.h | 1 + 2 files changed, 9 insertions(+) diff --git a/app/render/backend/videorenderbackend.cpp b/app/render/backend/videorenderbackend.cpp index 964243e91..5a6c38a32 100644 --- a/app/render/backend/videorenderbackend.cpp +++ b/app/render/backend/videorenderbackend.cpp @@ -144,6 +144,7 @@ void VideoRenderBackend::ConnectWorkerToThis(RenderWorker *processor) connect(video_processor, &VideoRenderWorker::CompletedDownload, this, &VideoRenderBackend::ThreadCompletedDownload, Qt::QueuedConnection); connect(video_processor, &VideoRenderWorker::HashAlreadyExists, this, &VideoRenderBackend::ThreadHashAlreadyExists, Qt::QueuedConnection); connect(video_processor, &VideoRenderWorker::GeneratedFrame, this, &VideoRenderBackend::GeneratedFrame, Qt::QueuedConnection); + connect(video_processor, &VideoRenderWorker::GeneratedFrame, this, &VideoRenderBackend::ThreadGeneratedFrame, Qt::QueuedConnection); } void VideoRenderBackend::InvalidateCacheInternal(const rational &start_range, const rational &end_range) @@ -307,6 +308,13 @@ void VideoRenderBackend::ThreadHashAlreadyExists(NodeDependency dep, qint64 job_ CacheNext(); } +void VideoRenderBackend::ThreadGeneratedFrame() +{ + SetWorkerBusyState(static_cast(sender()), false); + + CacheNext(); +} + void VideoRenderBackend::TruncateFrameCacheLength(const rational &length) { // Remove frames after this time code if it's changed diff --git a/app/render/backend/videorenderbackend.h b/app/render/backend/videorenderbackend.h index bd2b823c1..79b7dd37e 100644 --- a/app/render/backend/videorenderbackend.h +++ b/app/render/backend/videorenderbackend.h @@ -131,6 +131,7 @@ private slots: void ThreadCompletedDownload(NodeDependency dep, qint64 job_time, QByteArray hash, bool texture_existed); void ThreadSkippedFrame(NodeDependency dep, qint64 job_time, QByteArray hash); void ThreadHashAlreadyExists(NodeDependency dep, qint64 job_time, QByteArray hash); + void ThreadGeneratedFrame(); void TruncateFrameCacheLength(const rational& length);