From 17f2862f9631e811e0a830b57cef8811d5449ea1 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 4 Feb 2023 03:20:20 +0100 Subject: [PATCH] Emit signal when resampler-quality changes --- libs/ardour/ardour/port.h | 1 + libs/ardour/port.cc | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index a9fcd0f0ac..d8b2af26b2 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -139,6 +139,7 @@ public: static PBD::Signal0 PortDrop; static PBD::Signal0 PortSignalDrop; + static PBD::Signal0 ResamplerQualityChanged; static void set_varispeed_ratio (double s); //< varispeed playback static bool set_engine_ratio (double session, double engine); //< SR mismatch diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index dc3d8b328b..fae4cf8ad1 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -41,6 +41,7 @@ using namespace PBD; PBD::Signal0 Port::PortDrop; PBD::Signal0 Port::PortSignalDrop; +PBD::Signal0 Port::ResamplerQualityChanged; bool Port::_connecting_blocked = false; pframes_t Port::_global_port_buffer_offset = 0; @@ -729,10 +730,13 @@ Port::setup_resampler (uint32_t q) _resampler_latency = q - 1; } - if (port_manager && cur_quality != _resampler_quality) { - Glib::Threads::Mutex::Lock lm (port_manager->process_lock ()); - port_manager->reinit (true); - return false; + if (cur_quality != _resampler_quality) { + ResamplerQualityChanged (); /* EMIT SIGNAL */ + if (port_manager) { + Glib::Threads::Mutex::Lock lm (port_manager->process_lock ()); + port_manager->reinit (true); + return false; + } } return true; }