From 194b213456df43cb522651db6f27286a48eadec6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 12 Mar 2016 22:58:00 -0500 Subject: add implicit mute state to MuteMaster and use when a master of a mute control is enabled/disabled. Add AutomationControl::master_changed() as a virtual method to handle ... master value changes --- libs/ardour/vca.cc | 80 ------------------------------------------------------ 1 file changed, 80 deletions(-) (limited to 'libs/ardour/vca.cc') diff --git a/libs/ardour/vca.cc b/libs/ardour/vca.cc index 3fec2d9305..d92fa67c03 100644 --- a/libs/ardour/vca.cc +++ b/libs/ardour/vca.cc @@ -136,95 +136,15 @@ VCA::set_state (XMLNode const& node, int version) return 0; } -void -VCA::add_solo_target (boost::shared_ptr r) -{ - Glib::Threads::RWLock::WriterLock lm (solo_lock); - solo_targets.push_back (r); - r->DropReferences.connect_same_thread (solo_connections, boost::bind (&VCA::solo_target_going_away, this, boost::weak_ptr (r))); -} - -void -VCA::remove_solo_target (boost::shared_ptr r) -{ - Glib::Threads::RWLock::WriterLock lm (solo_lock); - solo_targets.remove (r); -} - -void -VCA::solo_target_going_away (boost::weak_ptr wr) -{ - boost::shared_ptr r (wr.lock()); - if (!r) { - return; - } - remove_solo_target (r); -} - void VCA::set_solo (bool yn) { - { - Glib::Threads::RWLock::ReaderLock lm (solo_lock); - - if (yn == _solo_requested) { - return; - } - - if (solo_targets.empty()) { - return; - } - - boost::shared_ptr rl (new RouteList (solo_targets)); - - if (Config->get_solo_control_is_listen_control()) { - _session.set_listen (rl, yn, Session::rt_cleanup, Controllable::NoGroup); - } else { - _session.set_implicit_solo (rl, (yn ? 1 : -1), true, Session::rt_cleanup, Controllable::NoGroup); - } - } - _solo_requested = yn; } -void -VCA::add_mute_target (boost::shared_ptr r) -{ - Glib::Threads::RWLock::WriterLock lm (mute_lock); - mute_targets.push_back (r); - r->DropReferences.connect_same_thread (mute_connections, boost::bind (&VCA::mute_target_going_away, this, boost::weak_ptr (r))); -} - -void -VCA::remove_mute_target (boost::shared_ptr r) -{ - Glib::Threads::RWLock::WriterLock lm (mute_lock); - mute_targets.remove (r); -} - -void -VCA::mute_target_going_away (boost::weak_ptr wr) -{ - boost::shared_ptr r (wr.lock()); - if (!r) { - return; - } - remove_mute_target (r); -} - void VCA::set_mute (bool yn) { - { - Glib::Threads::RWLock::ReaderLock lm (mute_lock); - if (yn == _mute_requested) { - return; - } - - boost::shared_ptr rl (new RouteList (mute_targets)); - _session.set_mute (rl, yn, Session::rt_cleanup, Controllable::NoGroup); - } - _mute_requested = yn; } -- cgit v1.2.3