- if (tv) {
- g->add_bundle ((*j)->bundle(), *j, tv->color ());
- } else {
- g->add_bundle ((*j)->bundle(), *j);
+ /* Only add the bundle if there is at least one port
+ * with a type that's been asked for */
+ if (type == DataType::NIL || (*j)->bundle()->nchannels().n(type) > 0) {
+ if (tv) {
+ g->add_bundle ((*j)->bundle(), *j, tv->color ());
+ } else {
+ g->add_bundle ((*j)->bundle(), *j);
+ }
+ }
+ }
+
+ /* When on input side, let's look for sidechains in the route's plugins
+ to display them right next to their route */
+ for (uint32_t n = 0; inputs; ++n) {
+ boost::shared_ptr<Processor> p = (i->route)->nth_plugin (n);
+ if (!p) {
+ break;
+ }
+ boost::shared_ptr<SideChain> sc = boost::static_pointer_cast<PluginInsert> (p)->sidechain ();
+
+ if (sc) {
+ boost::shared_ptr<IO> io = sc->input();
+ if (tv) {
+ sidechain->add_bundle (io->bundle(), io, tv->color ());
+ } else {
+ sidechain->add_bundle (io->bundle(), io);
+ }