boost::shared_ptr<AutomationControl> automation_control_by_id (const PBD::ID&);
void add_controllable (boost::shared_ptr<PBD::Controllable>);
- void remove_controllable (PBD::Controllable*);
boost::shared_ptr<PBD::Controllable> solo_cut_control() const;
SourceFactory::SourceCreated.connect_same_thread (*this, boost::bind (&Session::add_source, this, _1));
PlaylistFactory::PlaylistCreated.connect_same_thread (*this, boost::bind (&Session::add_playlist, this, _1, _2));
AutomationList::AutomationListCreated.connect_same_thread (*this, boost::bind (&Session::add_automation_list, this, _1));
- Controllable::Destroyed.connect_same_thread (*this, boost::bind (&Session::remove_controllable, this, _1));
IO::PortCountChanged.connect_same_thread (*this, boost::bind (&Session::ensure_buffers, this, _1));
/* stop IO objects from doing stuff until we're ready for them */
controllables.insert (c);
}
-struct null_deleter { void operator()(void const *) const {} };
-
-void
-Session::remove_controllable (Controllable* c)
-{
- if (deletion_in_progress()) {
- return;
- }
-
- Glib::Threads::Mutex::Lock lm (controllables_lock);
-
- Controllables::iterator x = controllables.find (boost::shared_ptr<Controllable>(c, null_deleter()));
-
- if (x != controllables.end()) {
- controllables.erase (x);
- }
-}
-
boost::shared_ptr<Controllable>
Session::controllable_by_id (const PBD::ID& id)
{