Don't raise an error when trying to auto-connect master to physical outputs if the...
[ardour.git] / libs / ardour / route.cc
index 56311c975db1063cb0fe929bbfd11cab0ec59c83..1cb7b84bc972012df1ab89348e86cf3007083176 100644 (file)
@@ -420,7 +420,12 @@ Route::process_output_buffers (BufferSet& bufs,
 
        if (rm.locked()) {
                for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
-                       bufs.set_count (ChanCount::max(bufs.count(), (*i)->input_streams()));
+                       if (bufs.count() != (*i)->input_streams()) {
+                               cerr << _name << " bufs = " << bufs.count()
+                                    << " input for " << (*i)->name() << " = " << (*i)->input_streams()
+                                    << endl;
+                       }
+                       assert (bufs.count() == (*i)->input_streams());
                        (*i)->run (bufs, start_frame, end_frame, nframes);
                        bufs.set_count (ChanCount::max(bufs.count(), (*i)->output_streams()));
                }
@@ -474,13 +479,16 @@ Route::passthru (sframes_t start_frame, sframes_t end_frame, nframes_t nframes,
                }
        }
 
+       write_out_of_band_data (bufs, start_frame, end_frame, nframes);
        process_output_buffers (bufs, start_frame, end_frame, nframes, true, declick);
 }
 
 void
 Route::passthru_silence (sframes_t start_frame, sframes_t end_frame, nframes_t nframes, int declick)
 {
-       process_output_buffers (_session.get_silent_buffers (n_process_buffers()), start_frame, end_frame, nframes, true, declick);
+       BufferSet& bufs (_session.get_silent_buffers (n_process_buffers()));
+       write_out_of_band_data (bufs, start_frame, end_frame, nframes);
+       process_output_buffers (bufs, start_frame, end_frame, nframes, true, declick);
 }
 
 void
@@ -694,8 +702,10 @@ Route::add_processor (boost::shared_ptr<Processor> processor, ProcessorList::ite
                        
                }
                
-               // XXX: do we want to emit the signal here ? change call order.
-               processor->activate ();
+               if (_control_outs != processor) {
+                       // XXX: do we want to emit the signal here ? change call order.
+                       processor->activate ();
+               }
                processor->ActiveChanged.connect (bind (mem_fun (_session, &Session::update_latency_compensation), false, false));
 
                _output->set_user_latency (0);
@@ -1339,7 +1349,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);
        }