From fa79e9a616ed6e2c6d8bc9559585b91700aaf9d2 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 1 Apr 2016 22:57:33 +0200 Subject: interactive GUI to manage plugins pins --- gtk2_ardour/processor_box.cc | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'gtk2_ardour/processor_box.cc') diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 51ba7c07a7..9d5fbaf8d3 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -939,12 +939,16 @@ PluginInsertProcessorEntry::PluginInsertProcessorEntry (ProcessorBox* b, boost:: p->PluginMapChanged.connect ( _iomap_connection, invalidator (*this), boost::bind (&PluginInsertProcessorEntry::iomap_changed, this), gui_context() ); + p->PluginConfigChanged.connect ( + _iomap_connection, invalidator (*this), boost::bind (&PluginInsertProcessorEntry::iomap_changed, this), gui_context() + ); } void PluginInsertProcessorEntry::iomap_changed () { _parent->setup_routing_feeds (); + routing_icon.queue_draw(); } void @@ -1020,12 +1024,23 @@ ProcessorEntry::RoutingIcon::set ( bool ProcessorEntry::RoutingIcon::identity () const { - if (!_in_map.is_monotonic ()) { + if (!_in_map.is_monotonic () || !_in_map.is_monotonic ()) { return false; } - if (_feed && (!_f_out_map.is_monotonic () || _sinks != _f_sources)) { + if (_in_map.count () != _sinks.n_total ()) { return false; } + if (_feed) { + if (!_f_out_map.is_monotonic () || _sinks != _f_sources) { + return false; + } + if (!_f_out_map.is_identity ()) { + return false; + } + if (_f_out_map.count () != _f_sources.n_total ()) { + return false; + } + } return true; } @@ -1142,6 +1157,8 @@ ProcessorEntry::RoutingIcon::expose_map (cairo_t* cr, const double width, const bool valid_src; uint32_t src = _f_out_map.get_src (is_midi ? DataType::MIDI : DataType::AUDIO, idx, &valid_src); if (!valid_src) { + double x = pin_x_pos (i, width, pc_in, pc_in_midi, is_midi); + draw_gnd (cr, x, height, is_midi); continue; } c_x0 = pin_x_pos (src, width, _f_out.n_total(), _f_out.n_midi(), is_midi); @@ -2523,6 +2540,7 @@ ProcessorBox::setup_routing_feeds () } } else { (*i)->routing_icon.show(); + (*i)->routing_icon.queue_draw(); (*i)->input_icon.show(); } } -- cgit v1.2.3