From 86d927b4ddbcedd1d6c120b1176aaef7352773cd Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 16 Nov 2011 17:40:16 +0000 Subject: [PATCH] Make activate/deactivate all only operate on visible processors (and also exclude the fader) (#4475). git-svn-id: svn://localhost/ardour2/branches/3.0@10649 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/processor_box.cc | 13 ++++++------- gtk2_ardour/processor_box.h | 3 +-- libs/ardour/ardour/route.h | 2 +- libs/ardour/route.cc | 16 ++++++++-------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 47d8a56016..d5699c3651 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -1666,10 +1666,9 @@ ProcessorBox::for_selected_processors (void (ProcessorBox::*method)(boost::share } void -ProcessorBox::all_processors_active (bool state) +ProcessorBox::all_visible_processors_active (bool state) { - _route->all_processors_active (PreFader, state); - _route->all_processors_active (PostFader, state); + _route->all_visible_processors_active (state); } void @@ -1946,9 +1945,9 @@ ProcessorBox::register_actions () /* activation etc. */ - ActionManager::register_action (popup_act_grp, X_("activate_all"), _("Activate all"), + ActionManager::register_action (popup_act_grp, X_("activate_all"), _("Activate All"), sigc::ptr_fun (ProcessorBox::rb_activate_all)); - ActionManager::register_action (popup_act_grp, X_("deactivate_all"), _("Deactivate all"), + ActionManager::register_action (popup_act_grp, X_("deactivate_all"), _("Deactivate All"), sigc::ptr_fun (ProcessorBox::rb_deactivate_all)); ActionManager::register_action (popup_act_grp, X_("ab_plugins"), _("A/B Plugins"), sigc::ptr_fun (ProcessorBox::rb_ab_plugins)); @@ -2120,7 +2119,7 @@ ProcessorBox::rb_activate_all () return; } - _current_processor_box->all_processors_active (true); + _current_processor_box->all_visible_processors_active (true); } void @@ -2129,7 +2128,7 @@ ProcessorBox::rb_deactivate_all () if (_current_processor_box == 0) { return; } - _current_processor_box->all_processors_active (false); + _current_processor_box->all_visible_processors_active (false); } void diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 9bc45d716d..bbbcf8ceb9 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -301,8 +301,7 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD void processors_reordered (const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&, int*); void compute_processor_sort_keys (); - void all_processors_active(bool state); - void all_plugins_active(bool state); + void all_visible_processors_active(bool state); void ab_plugins (); typedef std::vector > ProcSelection; diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index b0a9ce12c9..7f485c18c3 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -246,7 +246,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember, void disable_plugins (); void ab_plugins (bool forward); void clear_processors (Placement); - void all_processors_active (Placement, bool state); + void all_visible_processors_active (bool); framecnt_t set_private_port_latencies (bool playback) const; void set_public_port_latencies (framecnt_t, bool playback) const; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 070c6b61b9..8aebaf2664 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -1625,12 +1625,11 @@ Route::configure_processors_unlocked (ProcessorStreams* err) return 0; } -/** Set all processors with a given placement to a given active state. - * @param p Placement of processors to change. - * @param state New active state for those processors. +/** Set all visible processors to a given active state (except Fader, whose state is not changed) + * @param state New active state for those processors. */ void -Route::all_processors_active (Placement p, bool state) +Route::all_visible_processors_active (bool state) { Glib::RWLock::ReaderLock lm (_processor_lock); @@ -1638,10 +1637,11 @@ Route::all_processors_active (Placement p, bool state) return; } - ProcessorList::iterator start, end; - placement_range(p, start, end); - - for (ProcessorList::iterator i = start; i != end; ++i) { + for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) { + if (!(*i)->display_to_user() || boost::dynamic_pointer_cast (*i)) { + continue; + } + if (state) { (*i)->activate (); } else {