From 885c186ed6427e7912faadfad7cc91692092efcb Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 11 Aug 2012 16:23:56 +0000 Subject: Reset peaks on disconnected inputs on the client side, reducing bandwidth and fixing a notification race crash caused on deletion. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4656 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/Port.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/gui/Port.cpp') diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp index 7a4ed0c8..f70e8576 100644 --- a/src/gui/Port.cpp +++ b/src/gui/Port.cpp @@ -88,10 +88,15 @@ Port::Port(App& app, sigc::mem_fun(this, &Port::value_changed)); } - pm->signal_activity().connect(sigc::mem_fun(this, &Port::activity)); - pm->signal_moved().connect(sigc::mem_fun(this, &Port::moved)); + pm->signal_activity().connect( + sigc::mem_fun(this, &Port::activity)); + pm->signal_disconnection().connect( + sigc::mem_fun(this, &Port::disconnected_from)); + pm->signal_moved().connect( + sigc::mem_fun(this, &Port::moved)); - signal_value_changed.connect(sigc::mem_fun(this, &Port::on_value_changed)); + signal_value_changed.connect( + sigc::mem_fun(this, &Port::on_value_changed)); update_metadata(); value_changed(pm->value()); @@ -294,6 +299,14 @@ Port::activity(const Raul::Atom& value) } } +void +Port::disconnected_from(SharedPtr port) +{ + if (!model()->connected() && model()->is_a(_app.uris().lv2_AudioPort)) { + set_fill_color(peak_color(0.0f)); + } +} + PatchBox* Port::get_patch_box() const { -- cgit v1.2.1