Make main out delivery expand its output ports if the processor chain requires it.
authorCarl Hetherington <carl@carlh.net>
Wed, 30 Jun 2010 00:10:56 +0000 (00:10 +0000)
committerCarl Hetherington <carl@carlh.net>
Wed, 30 Jun 2010 00:10:56 +0000 (00:10 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@7333 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/delivery.cc

index 7bacb1c058d1beaa7ad5248dd4d1a0e860a74882..e6c93e529796182af9e2cbc8a24c53705c0bb142 100644 (file)
@@ -137,7 +137,8 @@ Delivery::can_support_io_configuration (const ChanCount& in, ChanCount& out) con
 
                if (_output) {
                        if (_output->n_ports() != ChanCount::ZERO) {
-                               out = _output->n_ports();
+                               /* increase number of output ports if the processor chain requires it */
+                               out = ChanCount::max (_output->n_ports(), in);
                                return true;
                        } else {
                                /* not configured yet - we will passthru */
@@ -189,8 +190,7 @@ Delivery::configure_io (ChanCount in, ChanCount out)
                if (_output) {
                        if (_output->n_ports() != out) {
                                if (_output->n_ports() != ChanCount::ZERO) {
-                                       fatal << _name << " programming error: configure_io with nports = " << _output->n_ports() << " called with " << in << " and " << out << " with " << _output->n_ports() << " output ports" << endmsg;
-                                       /*NOTREACHED*/
+                                       _output->ensure_io (out, false, this);
                                } else {
                                        /* I/O not yet configured */
                                }