fix naming of destructive track audio files
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 19 May 2006 19:13:26 +0000 (19:13 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 19 May 2006 19:13:26 +0000 (19:13 +0000)
git-svn-id: svn://localhost/trunk/ardour2@515 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/automation_event.h
libs/ardour/automation_event.cc
libs/ardour/session.cc

index 562a424cc794a7a2cfe3a58675ee599ec02eeb0f..f26828a11478c2751f52f486841afd5a3d0f34a6 100644 (file)
@@ -85,6 +85,7 @@ class AutomationList : public StateManager
        iterator add (double when, double value, iterator, bool ignore_mode = false);
        void add (double when, double value, bool for_loading = false);
 
+       void reset_range (double start, double end);
        void erase_range (double start, double end);
        void erase (iterator);
        void erase (iterator, iterator);
index ea7e0e1b71c8ad5a67722d52db16a9a86232767d..88932009bf85c8abdc623848450d361558ada485 100644 (file)
@@ -439,6 +439,42 @@ AutomationList::erase (AutomationList::iterator start, AutomationList::iterator
        maybe_signal_changed ();
 }      
 
+void
+AutomationList::reset_range (double start, double endt)
+{
+       bool reset = false;
+
+       {
+               LockMonitor lm (lock, __LINE__, __FILE__);
+               TimeComparator cmp;
+               ControlEvent cp (start, 0.0f);
+               iterator s;
+               iterator e;
+               
+               if ((s = lower_bound (events.begin(), events.end(), &cp, cmp)) != events.end()) {
+
+                       cp.when = endt;
+                       e = upper_bound (events.begin(), events.end(), &cp, cmp);
+
+                       for (iterator i = s; i != e; ++i) {
+                               (*i)->value = default_value;
+                       }
+                       
+                       reset = true;
+
+                       if (!no_state) {
+                               save_state (_("removed range"));
+                       }
+
+                       mark_dirty ();
+               }
+       }
+
+       if (reset) {
+               maybe_signal_changed ();
+       }
+}
+
 void
 AutomationList::erase_range (double start, double endt)
 {
index 4a0d119afaceb8091979705af08f6ccf39b1186c..a8ab2204dc4aabcd0a855484af1e42d489389a39 100644 (file)
@@ -1887,11 +1887,6 @@ Session::add_route (Route* route)
                _control_out = route;
        }
 
-       AudioTrack* at = dynamic_cast<AudioTrack*>(route);
-       if (at && at->mode() == Destructive) {
-               destructive_index++;
-       }
-
        set_dirty();
        save_state (_current_snapshot_name);
 
@@ -2801,8 +2796,8 @@ Session::audio_path_from_name (string name, uint32_t nchan, uint32_t chan, bool
        /* find a "version" of the file name that doesn't exist in
           any of the possible directories.
        */
-       
-       for (cnt = (destructive ? destructive_index + 1 : 1); cnt <= limit; ++cnt) {
+
+       for (cnt = (destructive ? ++destructive_index : 1); cnt <= limit; ++cnt) {
                
                vector<space_and_path>::iterator i;
                uint32_t existing = 0;