From fe159bdd73b19cfd918a9d0ec052317068773620 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Tue, 27 Sep 2022 22:06:05 -0700 Subject: [PATCH] rendermanager: use multithreading for waveforms --- app/render/rendermanager.cpp | 11 +++++++++-- app/render/rendermanager.h | 4 +++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/render/rendermanager.cpp b/app/render/rendermanager.cpp index 19a0d8efc..7367c3c9f 100644 --- a/app/render/rendermanager.cpp +++ b/app/render/rendermanager.cpp @@ -55,7 +55,11 @@ RenderManager::RenderManager(QObject *parent) : video_thread_ = CreateThread(context_); dry_run_thread_ = CreateThread(); audio_thread_ = CreateThread(); - waveform_thread_ = CreateThread(); + + waveform_threads_.resize(QThread::idealThreadCount()); + for (size_t i=0; isetProperty("mode", params.mode); if (params.generate_waveforms) { - waveform_thread_->AddTicket(ticket); + size_t thread_index = last_waveform_thread_%waveform_threads_.size(); + RenderThread *thread = waveform_threads_[thread_index]; + thread->AddTicket(ticket); + last_waveform_thread_++; } else { audio_thread_->AddTicket(ticket); } diff --git a/app/render/rendermanager.h b/app/render/rendermanager.h index b33818b58..c1050464f 100644 --- a/app/render/rendermanager.h +++ b/app/render/rendermanager.h @@ -230,7 +230,9 @@ private: RenderThread *video_thread_; RenderThread *dry_run_thread_; RenderThread *audio_thread_; - RenderThread *waveform_thread_; + + std::vector waveform_threads_; + size_t last_waveform_thread_; std::list render_threads_;