remove tests for locate_pending() before deciding whether to increment transport...
[ardour.git] / libs / ardour / disk_writer.cc
index 4eb4393861ef8eb6f3dd4587ac5c5cf0b570dd89..a3dc3335d09faf70ef3133283638d70bba871126 100644 (file)
@@ -45,7 +45,6 @@ PBD::Signal0<void> DiskWriter::Overrun;
 
 DiskWriter::DiskWriter (Session& s, string const & str, DiskIOProcessor::Flag f)
        : DiskIOProcessor (s, str, f)
-       , _input_latency (0)
        , _record_enabled (0)
        , _record_safe (0)
        , capture_start_frame (0)
@@ -68,6 +67,12 @@ DiskWriter::DiskWriter (Session& s, string const & str, DiskIOProcessor::Flag f)
 DiskWriter::~DiskWriter ()
 {
        DEBUG_TRACE (DEBUG::Destruction, string_compose ("DiskWriter %1 @ %2 deleted\n", _name, this));
+
+       boost::shared_ptr<ChannelList> c = channels.reader();
+
+       for (ChannelList::iterator chan = c->begin(); chan != c->end(); ++chan) {
+               (*chan)->write_source.reset ();
+       }
 }
 
 framecnt_t
@@ -292,7 +297,8 @@ DiskWriter::get_captured_frames (uint32_t n) const
 void
 DiskWriter::set_input_latency (framecnt_t l)
 {
-       _input_latency = l;
+       Processor::set_input_latency (l);
+       set_capture_offset ();
 }
 
 void
@@ -309,7 +315,7 @@ DiskWriter::set_capture_offset ()
                break;
        }
 
-        DEBUG_TRACE (DEBUG::CaptureAlignment, string_compose ("%1: using IO latency, capture offset set to %2 with style = %3\n", name(), _capture_offset, enum_2_string (_alignment_style)));
+       DEBUG_TRACE (DEBUG::CaptureAlignment, string_compose ("%1: using input latency %4, capture offset set to %2 with style = %3\n", name(), _capture_offset, enum_2_string (_alignment_style), _input_latency));
 }
 
 
@@ -322,7 +328,6 @@ DiskWriter::set_align_style (AlignStyle a, bool force)
 
        if ((a != _alignment_style) || force) {
                _alignment_style = a;
-               cerr << name() << " using align style " << enum_2_string (_alignment_style) << endl;
                set_capture_offset ();
                AlignmentStyleChanged ();
        }
@@ -668,7 +673,7 @@ DiskWriter::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame,
                _need_butler = true;
        }
 
-       DEBUG_TRACE (DEBUG::Butler, string_compose ("%1 writer run, needs butler = %2\n", name(), _need_butler));
+       // DEBUG_TRACE (DEBUG::Butler, string_compose ("%1 writer run, needs butler = %2\n", name(), _need_butler));
 }
 
 void
@@ -864,7 +869,6 @@ DiskWriter::seek (framepos_t frame, bool complete_refill)
        }
 
        playback_sample = frame;
-       file_frame = frame;
 
        return 0;
 }
@@ -1480,7 +1484,7 @@ DiskWriter::realtime_handle_transport_stopped ()
 bool
 DiskWriter::set_name (string const & str)
 {
-       string my_name = X_("writer:");
+       string my_name = X_("recorder:");
        my_name += str;
 
        if (_name != my_name) {