diff --git a/app/render/backend/audiorenderbackend.cpp b/app/render/backend/audiorenderbackend.cpp index 8ad0eff57..72428f743 100644 --- a/app/render/backend/audiorenderbackend.cpp +++ b/app/render/backend/audiorenderbackend.cpp @@ -12,6 +12,7 @@ AudioRenderBackend::AudioRenderBackend(QObject *parent) : ic_from_conform_(false) { connect(IndexManager::instance(), &IndexManager::StreamConformAppended, this, &AudioRenderBackend::ConformUpdated); + connect(this, &AudioRenderBackend::QueueComplete, this, &AudioRenderBackend::FilterQueueCompleteSignal); } void AudioRenderBackend::SetParameters(const AudioRenderingParams ¶ms) @@ -205,6 +206,13 @@ void AudioRenderBackend::TruncateCache(const rational &r) } } +void AudioRenderBackend::FilterQueueCompleteSignal() +{ + if (conform_wait_info_.isEmpty()) { + emit AudioComplete(); + } +} + bool AudioRenderBackend::ConformWaitInfo::operator==(const AudioRenderBackend::ConformWaitInfo &rhs) const { return rhs.params == params diff --git a/app/render/backend/audiorenderbackend.h b/app/render/backend/audiorenderbackend.h index 0f5aed463..07ed394f8 100644 --- a/app/render/backend/audiorenderbackend.h +++ b/app/render/backend/audiorenderbackend.h @@ -27,6 +27,8 @@ public: signals: void ParamsChanged(); + void AudioComplete(); + protected: virtual void ConnectViewer(ViewerOutput* node) override; @@ -76,6 +78,8 @@ private slots: void TruncateCache(const rational& r); + void FilterQueueCompleteSignal(); + }; #endif // AUDIORENDERBACKEND_H diff --git a/app/render/backend/exporter.cpp b/app/render/backend/exporter.cpp index 32c87bacb..d8b7d448c 100644 --- a/app/render/backend/exporter.cpp +++ b/app/render/backend/exporter.cpp @@ -245,7 +245,7 @@ void Exporter::EncoderOpenedSuccessfully() if (!audio_done_) { // We set the audio backend to render the full sequence to the disk - connect(audio_backend_, &AudioRenderBackend::QueueComplete, this, &Exporter::AudioRendered); + connect(audio_backend_, &AudioRenderBackend::AudioComplete, this, &Exporter::AudioRendered); audio_backend_->InvalidateCache(TimeRange(0, viewer_node_->Length())); }