Remove unnecessary 0 checks before delete; see http://www.parashift.com/c++-faq-lite...
[ardour.git] / libs / ardour / audio_diskstream.cc
index 059fed8752fdab0b9eb1332395c67fa0fd7422f7..8ba1825759de5ba8f59cf83427625e2843655e20 100644 (file)
@@ -205,6 +205,18 @@ AudioDiskstream::non_realtime_input_change ()
        }
 }
 
+void
+AudioDiskstream::non_realtime_locate (nframes_t location)
+{
+       /* now refill channel buffers */
+
+       if (speed() != 1.0f || speed() != -1.0f) {
+               seek ((nframes_t) (location * (double) speed()));
+       } else {
+               seek (location);
+       }
+}
+
 void
 AudioDiskstream::get_input_sources ()
 {
@@ -398,7 +410,7 @@ AudioDiskstream::check_record_status (nframes_t transport_frame, nframes_t nfram
 
        /* if per-track or global rec-enable turned on while the other was already on, we've started recording */
 
-       if ((change & track_rec_enabled) && record_enabled() && (!(change & global_rec_enabled) && can_record) || 
+       if (((change & track_rec_enabled) && record_enabled() && (!(change & global_rec_enabled) && can_record)) || 
            ((change & global_rec_enabled) && can_record && (!(change & track_rec_enabled) && record_enabled()))) {
                
                /* starting to record: compute first+last frames */
@@ -524,7 +536,7 @@ AudioDiskstream::process (nframes_t transport_frame, nframes_t nframes, nframes_
 
        commit_should_unlock = false;
 
-       if (!_io->active()) {
+       if (!_io || !_io->active()) {
                _processed = true;
                return 0;
        }
@@ -643,8 +655,8 @@ AudioDiskstream::process (nframes_t transport_frame, nframes_t nframes, nframes_
 
                                AudioPort* const ap = _io->audio_input(n);
                                assert(ap);
-                               assert(rec_nframes <= ap->get_audio_buffer().capacity());
-                               memcpy (chaninfo->current_capture_buffer, ap->get_audio_buffer().data(rec_nframes, offset + rec_offset), sizeof (Sample) * rec_nframes);
+                               assert(rec_nframes <= ap->get_audio_buffer( nframes, offset ).capacity());
+                               memcpy (chaninfo->current_capture_buffer, ap->get_audio_buffer( nframes, offset ).data(rec_nframes, offset + rec_offset), sizeof (Sample) * rec_nframes);
 
                        } else {
 
@@ -658,7 +670,7 @@ AudioDiskstream::process (nframes_t transport_frame, nframes_t nframes, nframes_
                                AudioPort* const ap = _io->audio_input(n);
                                assert(ap);
 
-                               Sample* buf = ap->get_audio_buffer().data(nframes, offset);
+                               Sample* buf = ap->get_audio_buffer( nframes, offset ).data(nframes, offset);
                                nframes_t first = chaninfo->capture_vector.len[0];
 
                                memcpy (chaninfo->capture_wrap_buffer, buf, sizeof (Sample) * first);
@@ -835,7 +847,7 @@ AudioDiskstream::commit (nframes_t nframes)
 {
        bool need_butler = false;
 
-       if (!_io->active()) {
+       if (!_io || !_io->active()) {
                return false;
        }
 
@@ -861,18 +873,18 @@ AudioDiskstream::commit (nframes_t nframes)
        }
        
        if (_slaved) {
-               /*if (_io && _io->active()) {*/
+               if (_io && _io->active()) {
                        need_butler = c->front()->playback_buf->write_space() >= c->front()->playback_buf->bufsize() / 2;
-               /*} else {
+               } else {
                        need_butler = false;
-               }*/
+               }
        } else {
-               /*if (_io && _io->active()) {*/
+               if (_io && _io->active()) {
                        need_butler = c->front()->playback_buf->write_space() >= disk_io_chunk_frames
                                || c->front()->capture_buf->read_space() >= disk_io_chunk_frames;
-               /*} else {
+               } else {
                        need_butler = c->front()->capture_buf->read_space() >= disk_io_chunk_frames;
-               }*/
+               }
        }
 
        if (commit_should_unlock) {
@@ -2202,7 +2214,7 @@ int
 AudioDiskstream::add_channel_to (boost::shared_ptr<ChannelList> c, uint32_t how_many)
 {
        while (how_many--) {
-               c->push_back (new ChannelInfo(_session.diskstream_buffer_size(), speed_buffer_size, wrap_buffer_size));
+               c->push_back (new ChannelInfo(_session.audio_diskstream_buffer_size(), speed_buffer_size, wrap_buffer_size));
        }
 
        _n_channels.set(DataType::AUDIO, c->size());
@@ -2458,33 +2470,21 @@ AudioDiskstream::ChannelInfo::~ChannelInfo ()
                write_source.reset ();
        }
                
-       if (speed_buffer) {
-               delete [] speed_buffer;
-               speed_buffer = 0;
-       }
+       delete [] speed_buffer;
+       speed_buffer = 0;
 
-       if (playback_wrap_buffer) {
-               delete [] playback_wrap_buffer;
-               playback_wrap_buffer = 0;
-       }
+       delete [] playback_wrap_buffer;
+       playback_wrap_buffer = 0;
 
-       if (capture_wrap_buffer) {
-               delete [] capture_wrap_buffer;
-               capture_wrap_buffer = 0;
-       }
+       delete [] capture_wrap_buffer;
+       capture_wrap_buffer = 0;
        
-       if (playback_buf) {
-               delete playback_buf;
-               playback_buf = 0;
-       }
+       delete playback_buf;
+       playback_buf = 0;
 
-       if (capture_buf) {
-               delete capture_buf;
-               capture_buf = 0;
-       }
+       delete capture_buf;
+       capture_buf = 0;
 
-       if (capture_transition_buf) {
-               delete capture_transition_buf;
-               capture_transition_buf = 0;
-       }
+       delete capture_transition_buf;
+       capture_transition_buf = 0;
 }