try not thinning when loading old-school automation lists
[ardour.git] / libs / ardour / playlist.cc
index 0e1aad110db35a3d707cede4a898cd681adfe051..3b0528ed3b7fc9f9975e8f6f8b0bcc3bebf462a0 100644 (file)
 
 #include <stdint.h>
 #include <set>
-#include <fstream>
 #include <algorithm>
-#include <unistd.h>
-#include <cerrno>
 #include <string>
-#include <climits>
 
 #include <boost/lexical_cast.hpp>
 
 #include "pbd/convert.h"
-#include "pbd/failed_constructor.h"
 #include "pbd/stateful_diff_command.h"
 #include "pbd/xml++.h"
-#include "pbd/stacktrace.h"
 
 #include "ardour/debug.h"
 #include "ardour/playlist.h"
@@ -53,9 +47,9 @@ using namespace ARDOUR;
 using namespace PBD;
 
 namespace ARDOUR {
-namespace Properties {
-PBD::PropertyDescriptor<bool> regions;
-}
+       namespace Properties {
+               PBD::PropertyDescriptor<bool> regions;
+       }
 }
 
 struct ShowMeTheList {
@@ -317,6 +311,7 @@ Playlist::init (bool hide)
        in_partition = false;
        subcnt = 0;
        _frozen = false;
+       _capture_insertion_underway = false;
        _combine_ops = 0;
 
        _session.history().BeginUndoRedo.connect_same_thread (*this, boost::bind (&Playlist::begin_undo, this));
@@ -1196,7 +1191,6 @@ Playlist::flush_notifications (bool from_undo)
         times = fabs (times);
 
         {
-                RegionWriteLock rl1 (this);
                 RegionReadLock rl2 (other.get());
 
                 int itimes = (int) floor (times);
@@ -1204,18 +1198,21 @@ Playlist::flush_notifications (bool from_undo)
                 framecnt_t const shift = other->_get_extent().second;
                 layer_t top = top_layer ();
 
-                while (itimes--) {
-                        for (RegionList::iterator i = other->regions.begin(); i != other->regions.end(); ++i) {
-                                boost::shared_ptr<Region> copy_of_region = RegionFactory::create (*i, true);
-
-                                /* put these new regions on top of all existing ones, but preserve
-                                   the ordering they had in the original playlist.
-                                */
-
-                                add_region_internal (copy_of_region, (*i)->position() + pos);
-                                set_layer (copy_of_region, copy_of_region->layer() + top);
+                {
+                        RegionWriteLock rl1 (this);
+                        while (itimes--) {
+                                for (RegionList::iterator i = other->regions.begin(); i != other->regions.end(); ++i) {
+                                        boost::shared_ptr<Region> copy_of_region = RegionFactory::create (*i, true);
+                                        
+                                        /* put these new regions on top of all existing ones, but preserve
+                                           the ordering they had in the original playlist.
+                                        */
+                                        
+                                        add_region_internal (copy_of_region, (*i)->position() + pos);
+                                        set_layer (copy_of_region, copy_of_region->layer() + top);
+                                }
+                                pos += shift;
                         }
-                        pos += shift;
                 }
         }
 
@@ -3112,3 +3109,9 @@ restart:
                check_crossfades (*i);
        }
 }
+
+void
+Playlist::set_capture_insertion_in_progress (bool yn)
+{
+       _capture_insertion_underway = yn;
+}