diff --git a/app/render/backend/audiorenderbackend.cpp b/app/render/backend/audiorenderbackend.cpp index 3c966bcfd..bcb16f628 100644 --- a/app/render/backend/audiorenderbackend.cpp +++ b/app/render/backend/audiorenderbackend.cpp @@ -3,6 +3,7 @@ #include #include +#include "audiorenderworker.h" #include "common/filefunctions.h" AudioRenderBackend::AudioRenderBackend(QObject *parent) : @@ -12,13 +13,16 @@ AudioRenderBackend::AudioRenderBackend(QObject *parent) : void AudioRenderBackend::SetParameters(const AudioRenderingParams ¶ms) { - // Since we're changing parameters, all the existing threads are invalid and must be removed. They will start again - // next time this Node has to process anything. - Close(); - // Set new parameters params_ = params; + // Set params on all processors + // FIXME: Undefined behavior if the processors are currently working, this may need to be delayed like the + // recompile signal + foreach (RenderWorker* worker, processors_) { + static_cast(worker)->SetParameters(params_); + } + // Regenerate the cache ID RegenerateCacheID(); } diff --git a/app/render/backend/videorenderbackend.cpp b/app/render/backend/videorenderbackend.cpp index 5e4bd15b2..399af7c75 100644 --- a/app/render/backend/videorenderbackend.cpp +++ b/app/render/backend/videorenderbackend.cpp @@ -28,6 +28,7 @@ #include #include "render/pixelservice.h" +#include "videorenderworker.h" VideoRenderBackend::VideoRenderBackend(QObject *parent) : RenderBackend(parent) @@ -137,13 +138,16 @@ const VideoRenderingParams &VideoRenderBackend::params() const void VideoRenderBackend::SetParameters(const VideoRenderingParams& params) { - // Since we're changing parameters, all the existing threads are invalid and must be removed. They will start again - // next time this Node has to process anything. - Close(); - // Set new parameters params_ = params; + // Set params on all processors + // FIXME: Undefined behavior if the processors are currently working, this may need to be delayed like the + // recompile signal + foreach (RenderWorker* worker, processors_) { + static_cast(worker)->SetParameters(params_); + } + // Regenerate the cache ID RegenerateCacheID(); }