diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-15 15:32:53 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-15 15:32:53 +0000 |
commit | 23f03f995f850898c1e8d133db318a210774bcd7 (patch) | |
tree | fd5dcd2ee25454dbff403a7e09e94b641d1734c5 | |
parent | 2fb30ea54d073dc4134bbe24e09c573eaf33e658 (diff) |
remove two instances of static/global ScopedConnectionList. one remains worth thinking about for semantics (libs/pbd/controllable.cc:registry_connections)
git-svn-id: svn://localhost/ardour2/branches/3.0@12295 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | libs/ardour/ardour/region_factory.h | 2 | ||||
-rw-r--r-- | libs/ardour/region_factory.cc | 16 | ||||
-rw-r--r-- | libs/pbd/controllable.cc | 8 |
3 files changed, 16 insertions, 10 deletions
diff --git a/libs/ardour/ardour/region_factory.h b/libs/ardour/ardour/region_factory.h index d9059fc19e..20ca0d355d 100644 --- a/libs/ardour/ardour/region_factory.h +++ b/libs/ardour/ardour/region_factory.h @@ -124,7 +124,7 @@ public: static std::map<std::string, uint32_t> region_name_map; static void update_region_name_map (boost::shared_ptr<Region>); - static PBD::ScopedConnectionList region_list_connections; + static PBD::ScopedConnectionList* region_list_connections; static CompoundAssociations _compound_associations; }; diff --git a/libs/ardour/region_factory.cc b/libs/ardour/region_factory.cc index f574097fea..6af256f169 100644 --- a/libs/ardour/region_factory.cc +++ b/libs/ardour/region_factory.cc @@ -41,7 +41,7 @@ using namespace std; PBD::Signal1<void,boost::shared_ptr<Region> > RegionFactory::CheckNewRegion; Glib::StaticMutex RegionFactory::region_map_lock; RegionFactory::RegionMap RegionFactory::region_map; -PBD::ScopedConnectionList RegionFactory::region_list_connections; +PBD::ScopedConnectionList* RegionFactory::region_list_connections = 0; Glib::StaticMutex RegionFactory::region_name_map_lock; std::map<std::string, uint32_t> RegionFactory::region_name_map; RegionFactory::CompoundAssociations RegionFactory::_compound_associations; @@ -321,12 +321,12 @@ RegionFactory::map_add (boost::shared_ptr<Region> r) region_map.insert (p); } - r->DropReferences.connect_same_thread (region_list_connections, boost::bind (&RegionFactory::map_remove, boost::weak_ptr<Region> (r))); + if (!region_list_connections) { + region_list_connections = new ScopedConnectionList; + } - r->PropertyChanged.connect_same_thread ( - region_list_connections, - boost::bind (&RegionFactory::region_changed, _1, boost::weak_ptr<Region> (r)) - ); + r->DropReferences.connect_same_thread (*region_list_connections, boost::bind (&RegionFactory::map_remove, boost::weak_ptr<Region> (r))); + r->PropertyChanged.connect_same_thread (*region_list_connections, boost::bind (&RegionFactory::region_changed, _1, boost::weak_ptr<Region> (r))); update_region_name_map (r); } @@ -384,7 +384,9 @@ RegionFactory::region_by_name (const std::string& name) void RegionFactory::clear_map () { - region_list_connections.drop_connections (); + if (region_list_connections) { + region_list_connections->drop_connections (); + } { Glib::Mutex::Lock lm (region_map_lock); diff --git a/libs/pbd/controllable.cc b/libs/pbd/controllable.cc index d4ceefe330..82a8464c8b 100644 --- a/libs/pbd/controllable.cc +++ b/libs/pbd/controllable.cc @@ -36,7 +36,7 @@ PBD::Signal1<void,Controllable*> Controllable::DeleteBinding; Glib::StaticRWLock Controllable::registry_lock = GLIBMM_STATIC_RW_LOCK_INIT; Controllable::Controllables Controllable::registry; -PBD::ScopedConnectionList registry_connections; +PBD::ScopedConnectionList* registry_connections = 0; const std::string Controllable::xml_node_name = X_("Controllable"); Controllable::Controllable (const string& name, Flag f) @@ -55,9 +55,13 @@ Controllable::add (Controllable& ctl) Glib::RWLock::WriterLock lm (registry_lock); registry.insert (&ctl); + if (!registry_connections) { + registry_connections = new ScopedConnectionList; + } + /* Controllable::remove() is static - no need to manage this connection */ - ctl.DropReferences.connect_same_thread (registry_connections, boost::bind (&Controllable::remove, &ctl)); + ctl.DropReferences.connect_same_thread (*registry_connections, boost::bind (&Controllable::remove, &ctl)); } void |