Merged with trunk R1141
[ardour.git] / libs / ardour / audio_playlist.cc
index 94b80df178e599efd25c6f9aa32bd4fde635b2f1..335cb020ae07cb1f33edd9d14d716ece9f9b2275 100644 (file)
@@ -546,7 +546,7 @@ AudioPlaylist::set_state (const XMLNode& node)
        }
 
        thaw ();
-       in_set_state++;
+       in_set_state--;
 
        return 0;
 }
@@ -639,12 +639,10 @@ AudioPlaylist::destroy_region (boost::shared_ptr<Region> region)
 
        { 
                RegionLock rlock (this);
-               RegionList::iterator i;
-               RegionList::iterator tmp;
 
-               for (i = regions.begin(); i != regions.end(); ) {
+               for (RegionList::iterator i = regions.begin(); i != regions.end(); ) {
                        
-                       tmp = i;
+                       RegionList::iterator tmp = i;
                        ++tmp;
                        
                        if ((*i) == region) {
@@ -654,6 +652,21 @@ AudioPlaylist::destroy_region (boost::shared_ptr<Region> region)
                        
                        i = tmp;
                }
+
+               for (set<boost::shared_ptr<Region> >::iterator x = all_regions.begin(); x != all_regions.end(); ) {
+
+                       set<boost::shared_ptr<Region> >::iterator xtmp = x;
+                       ++xtmp;
+                       
+                       if ((*x) == region) {
+                               all_regions.erase (x);
+                               changed = true;
+                       }
+                       
+                       x = xtmp;
+               }
+
+               region->set_playlist (0);
        }
 
        for (c = _crossfades.begin(); c != _crossfades.end(); ) {