Remove bind to shared_ptr.
authorCarl Hetherington <carl@carlh.net>
Tue, 15 May 2012 00:06:26 +0000 (00:06 +0000)
committerCarl Hetherington <carl@carlh.net>
Tue, 15 May 2012 00:06:26 +0000 (00:06 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@12281 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/region_factory.h
libs/ardour/region_factory.cc

index dfbcd480dd675ff5e2a9576d06b4648c524461b1..337821e0eaa7f77d29ba5094ad248cfa6554b3e7 100644 (file)
@@ -83,7 +83,7 @@ public:
        static void get_regions_using_source (boost::shared_ptr<Source>, std::set<boost::shared_ptr<Region> >& );
        static void remove_regions_using_source (boost::shared_ptr<Source>);
 
-       static void map_remove (boost::shared_ptr<Region>);
+       static void map_remove (boost::weak_ptr<Region>);
        static void map_remove_with_equivalents (boost::shared_ptr<Region>);
        static void delete_all_regions ();
        static const RegionMap& regions() { return region_map; }
index f7394838215617f0b085b602f2c6b090232d37ef..b5195d80d98449165f92003c3998a5d398a07843 100644 (file)
@@ -321,7 +321,7 @@ 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, 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,
@@ -332,8 +332,13 @@ RegionFactory::map_add (boost::shared_ptr<Region> r)
 }
 
 void
-RegionFactory::map_remove (boost::shared_ptr<Region> r)
+RegionFactory::map_remove (boost::weak_ptr<Region> w)
 {
+       boost::shared_ptr<Region> r = w.lock ();
+       if (!r) {
+               return;
+       }
+       
        Glib::Mutex::Lock lm (region_map_lock);
        RegionMap::iterator i = region_map.find (r->id());