improved fix for #4158 etc, hopefully
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 18 Jul 2011 20:03:49 +0000 (20:03 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 18 Jul 2011 20:03:49 +0000 (20:03 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9896 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/internal_return.cc
libs/ardour/internal_send.cc

index 6402eded81a481895e3f558703f4795129ce65b3..e3ef2e2b06d5071cda17828d5abce59997dd6930 100644 (file)
@@ -53,21 +53,6 @@ InternalReturn::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*e
                }
        }
 
-#if 0
-        if (_session.transport_rolling()) {
-                for (BufferSet::audio_iterator b = bufs.audio_begin(); b != bufs.audio_end(); ++b) {
-                        Sample* p = b->data ();
-                        for (pframes_t n = 0; n < nframes; ++n) {
-                               if (p[n] != 0.0) {
-                                       cerr << "\tnon-zero data received\n";
-                                       break;
-                               }
-                        }
-                }
-        }
-#endif
-
-
        _active = _pending_active;
 }
 
index 171a5bb210ba15797aa25a329831b74203508765..7fe52ec617b6cee4a4b3ea5bed8cc367259c4be1 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "ardour/amp.h"
 #include "ardour/audio_buffer.h"
+#include "ardour/internal_return.h"
 #include "ardour/internal_send.h"
 #include "ardour/meter.h"
 #include "ardour/panner.h"
@@ -77,6 +78,9 @@ InternalSend::use_target (boost::shared_ptr<Route> sendto)
 
         _send_to->add_send_to_internal_return (this);
 
+       mixbufs.ensure_buffers (_send_to->internal_return()->input_streams(), _session.get_block_size());
+       mixbufs.set_count (_send_to->internal_return()->input_streams());
+
         set_name (sendto->name());
         _send_to_id = _send_to->id();
 
@@ -110,7 +114,6 @@ InternalSend::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame
        assert(mixbufs.available() >= bufs.count());
 
        if (_panshell && !_panshell->bypassed()) {
-               mixbufs.set_count (_send_to->n_outputs ());
                _panshell->run (bufs, mixbufs, start_frame, end_frame, nframes);
        } else {
                mixbufs.read_from (bufs, nframes);
@@ -158,20 +161,6 @@ InternalSend::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame
                }
        }
 
-#if 0
-        if (_session.transport_rolling()) {
-                for (BufferSet::audio_iterator b = mixbufs.audio_begin(); b != mixbufs.audio_end(); ++b) {
-                        Sample* p = b->data ();
-                        for (pframes_t n = 0; n < nframes; ++n) {
-                               if (p[n] != 0.0) {
-                                       cerr << "\tnon-zero data SENT to " << b->data() << endl;
-                                       break;
-                               }
-                        }
-                }
-        }
-#endif
-
        /* target will pick up our output when it is ready */
 
   out:
@@ -181,7 +170,10 @@ InternalSend::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame
 int
 InternalSend::set_block_size (pframes_t nframes)
 {
-       mixbufs.ensure_buffers (_configured_input, nframes);
+       if (_send_to) {
+               mixbufs.ensure_buffers (_send_to->internal_return()->input_streams(), nframes);
+       }
+
         return 0;
 }