-void
-GainControl::master_going_away (boost::weak_ptr<VCA> wv)
-{
- boost::shared_ptr<VCA> v = wv.lock();
- if (v) {
- remove_master (v);
- }
-}
-
-void
-GainControl::remove_master (boost::shared_ptr<VCA> vca)
-{
- gain_t old_master_val;
- gain_t new_master_val;
- set<boost::shared_ptr<GainControl> >::size_type erased = 0;
-
- {
- Glib::Threads::Mutex::Lock lm (master_lock);
- old_master_val = get_master_gain_locked ();
- erased = _masters.erase (vca->control());
- _masters_numbers.erase (vca->number());
- new_master_val = get_master_gain_locked ();
- }
-
- if (old_master_val != new_master_val) {
- Changed(); /* EMIT SIGNAL */
- }
-
- if (erased) {
- VCAStatusChange (); /* EMIT SIGNAL */
- }
-}
-
-void
-GainControl::clear_masters ()
-{
- gain_t old_master_val;
- gain_t new_master_val;
- bool had_masters = false;
-
- {
- Glib::Threads::Mutex::Lock lm (master_lock);
- old_master_val = get_master_gain_locked ();
- if (!_masters.empty()) {
- had_masters = true;
- }
- _masters.clear ();
- _masters_numbers.clear ();
- new_master_val = get_master_gain_locked ();
- }
-
- if (old_master_val != new_master_val) {
- Changed(); /* EMIT SIGNAL */
- }
-
- if (had_masters) {
- VCAStatusChange (); /* EMIT SIGNAL */
- }
-}
-
-bool
-GainControl::slaved_to (boost::shared_ptr<VCA> vca) const
-{
- Glib::Threads::Mutex::Lock lm (master_lock);
- return find (_masters.begin(), _masters.end(), vca->control()) != _masters.end();
-}
-