avoid crashes caused by the process buffer set being larger than expected when passed...
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 29 Jul 2009 19:02:02 +0000 (19:02 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 29 Jul 2009 19:02:02 +0000 (19:02 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5437 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/audio_track.cc
libs/ardour/internal_send.cc
libs/ardour/route.cc

index 3c8fe8c42c3308ffbfcbc3d513458fa8a0760362..8e68eb014077c22e9045144c5a27962dfbc228fa 100644 (file)
@@ -583,7 +583,7 @@ AudioTrack::roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
                        limit = blimit;
 
                } else {
-                       for (i = 0, n = 1; i < blimit; ++i, ++n) {
+                       for (i = 0, n = 1; i < limit; ++i, ++n) {
                                memcpy (bufs.get_audio (i).data(), b, sizeof (Sample) * nframes); 
                                if (n < diskstream->n_channels().n_audio()) {
                                        tmpb = diskstream->playback_buffer(n);
@@ -592,6 +592,13 @@ AudioTrack::roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
                                        }
                                }
                        }
+
+                       /* try to leave any MIDI buffers alone */
+                       
+                       ChanCount chn;
+                       chn.set_audio (limit);
+                       chn.set_midi (_input->n_ports().n_midi());
+                       bufs.set_count (chn);
                }
 
                /* don't waste time with automation if we're recording or we've just stopped (yes it can happen) */
index bbf15166d4b4df8bff697bd2c576ebabe2167895..ad56622fc78c9bd0ec8a61d2cac8ec8e6da2ffe9 100644 (file)
@@ -230,7 +230,7 @@ bool
 InternalSend::configure_io (ChanCount in, ChanCount out)
 {
        bool ret = Send::configure_io (in, out);
-       set_block_size (_session.get_block_size());
+       set_block_size (_session.engine().frames_per_cycle());
        return ret;
 }
 
index e9c09e33bb8ed18c54b6496ec82d1385921b6207..e1c85bf968ec6b8cc6e156ace5634888d4b64334 100644 (file)
@@ -1341,7 +1341,6 @@ Route::configure_processors_unlocked (ProcessorStreams* err)
 
        // Ensure route outputs match last processor's outputs
        if (out != _output->n_ports ()) {
-               cerr << "For " << _name << " out/last mismatch - out = " << out << " vs. " << _output->n_ports() << endl;
                _output->ensure_io (out, false, this);
        }