fix d3447dfd1 Mixbus special case.
authorRobin Gareus <robin@gareus.org>
Mon, 4 Apr 2016 23:24:51 +0000 (01:24 +0200)
committerRobin Gareus <robin@gareus.org>
Mon, 4 Apr 2016 23:24:51 +0000 (01:24 +0200)
libs/ardour/plugin_insert.cc

index dd99e981ef097268e9034e3a1a75103f17439548..eebd07a2c5e55ab5aecfe6c2ca0cb4dcda5c8f88 100644 (file)
@@ -294,12 +294,22 @@ PluginInsert::internal_input_streams() const
 ChanCount
 PluginInsert::natural_output_streams() const
 {
+#ifdef MIXBUS
+       if (is_channelstrip ()) {
+               return _configured_out;
+       }
+#endif
        return _plugins[0]->get_info()->n_outputs;
 }
 
 ChanCount
 PluginInsert::natural_input_streams() const
 {
+#ifdef MIXBUS
+       if (is_channelstrip ()) {
+               return _configured_in;
+       }
+#endif
        return _plugins[0]->get_info()->n_inputs;
 }
 
@@ -1229,6 +1239,9 @@ PluginInsert::configure_io (ChanCount in, ChanCount out)
        } else if (_match.custom_cfg && _configured) {
                mapping_changed = sanitize_maps ();
        } else {
+#ifdef MIXBUS
+               if (is_channelstrip ()) { _maps_from_state = false; }
+#endif
                if (_maps_from_state) {
                        _maps_from_state = false;
                        mapping_changed = true;
@@ -1325,6 +1338,13 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
                return Match();
        }
 
+#ifdef MIXBUS
+       if (is_channelstrip ()) {
+               out = inx;
+               return Match (ExactMatch, 1);
+       }
+#endif
+
        /* if a user specified a custom cfg, so be it. */
        if (_custom_cfg) {
                out = _custom_out;
@@ -1380,12 +1400,6 @@ PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
                return m;
        }
 
-#ifdef MIXBUS
-       if (is_channelstrip ()) {
-               return Match (Replicate, 1, _strict_io);
-       }
-#endif
-
        ChanCount ns_inputs  = inputs - sidechain_input_pins ();
 
        DEBUG_TRACE (DEBUG::ChanMapping, string_compose ("resolving 'Impossible' match for %1\n", name()));
@@ -1514,11 +1528,6 @@ PluginInsert::automatic_can_support_io_configuration (ChanCount const & inx, Cha
 
        uint32_t f             = 0;
        bool     can_replicate = true;
-#ifdef MIXBUS
-       if (is_channelstrip ()) {
-               can_replicate = false;
-       }
-#endif
        for (DataType::iterator t = DataType::begin(); t != DataType::end() && can_replicate; ++t) {
 
                // ignore side-chains