diff options
author | Robin Gareus <robin@gareus.org> | 2016-06-16 15:08:10 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-06-16 15:08:25 +0200 |
commit | a9c09af816b3d7da40221ac4a2bb4c6074708d89 (patch) | |
tree | 83335b2ddbb497bc48d85fd311cc090ba1d4fad0 /libs/ardour/plugin_insert.cc | |
parent | 321615e8eabc9c0085979af8af842d16433b1d1c (diff) |
set latency of sidechain port
Diffstat (limited to 'libs/ardour/plugin_insert.cc')
-rw-r--r-- | libs/ardour/plugin_insert.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 291ccbfc54..38c3b684ed 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -67,6 +67,8 @@ const string PluginInsert::port_automation_node_name = "PortAutomation"; PluginInsert::PluginInsert (Session& s, boost::shared_ptr<Plugin> plug) : Processor (s, (plug ? plug->name() : string ("toBeRenamed"))) + , _sc_playback_latency (0) + , _sc_capture_latency (0) , _signal_analysis_collected_nframes(0) , _signal_analysis_collect_nframes_max(0) , _configured (false) @@ -215,11 +217,31 @@ PluginInsert::del_sidechain () return false; } _sidechain.reset (); + _sc_playback_latency = 0; + _sc_capture_latency = 0; PluginConfigChanged (); /* EMIT SIGNAL */ return true; } void +PluginInsert::set_sidechain_latency (uint32_t capture, uint32_t playback) +{ + if (_sidechain && + (_sc_playback_latency != playback || _sc_capture_latency != capture)) { + _sc_capture_latency = capture; + _sc_playback_latency = playback; + LatencyRange pl; pl.min = pl.max = playback; + LatencyRange cl; cl.min = cl.max = capture; + DEBUG_TRACE (DEBUG::Latency, string_compose ("%1: capture %2 playback; %3\n", _sidechain->name (), capture, playback)); + PortSet& ps (_sidechain->input ()->ports ()); + for (PortSet::iterator p = ps.begin(); p != ps.end(); ++p) { + p->set_private_latency_range (pl, true); + p->set_private_latency_range (cl, false); + } + } +} + +void PluginInsert::control_list_automation_state_changed (Evoral::Parameter which, AutoState s) { if (which.type() != PluginAutomation) |