summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-04-21 11:08:47 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-05-31 15:30:41 -0400
commita89b3f5687240b28340618c4f8962215fc1af41d (patch)
treeaa95dc3cf93d3a9b9f00329a5113a144c3876097 /libs/ardour
parentd283cefe124bdd3718208951f26d50a1dbe873b2 (diff)
clear all solo state should affect VCAs too
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/vca.h2
-rw-r--r--libs/ardour/ardour/vca_manager.h1
-rw-r--r--libs/ardour/session.cc2
-rw-r--r--libs/ardour/session_rtevents.cc4
-rw-r--r--libs/ardour/vca.cc6
-rw-r--r--libs/ardour/vca_manager.cc10
6 files changed, 25 insertions, 0 deletions
diff --git a/libs/ardour/ardour/vca.h b/libs/ardour/ardour/vca.h
index 38fba07bc7..9af6436f6b 100644
--- a/libs/ardour/ardour/vca.h
+++ b/libs/ardour/ardour/vca.h
@@ -51,6 +51,8 @@ class LIBARDOUR_API VCA : public Stripable, public Soloable, public Muteable, pu
XMLNode& get_state();
int set_state (XMLNode const&, int version);
+ void clear_all_solo_state ();
+
bool soloed () const;
void push_solo_upstream (int32_t) {}
void push_solo_isolate_upstream (int32_t) {}
diff --git a/libs/ardour/ardour/vca_manager.h b/libs/ardour/ardour/vca_manager.h
index c51336b558..d18044a8df 100644
--- a/libs/ardour/ardour/vca_manager.h
+++ b/libs/ardour/ardour/vca_manager.h
@@ -58,6 +58,7 @@ class VCAManager : public SessionHandleRef, public PBD::StatefulDestructible
int set_state (XMLNode const&, int version);
bool vcas_loaded() const { return _vcas_loaded; }
+ void clear_all_solo_state ();
static std::string xml_node_name;
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index f706dd00ee..55cd1f9ae8 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -107,6 +107,7 @@
#include "ardour/user_bundle.h"
#include "ardour/utils.h"
#include "ardour/vca_manager.h"
+#include "ardour/vca.h"
#include "midi++/port.h"
#include "midi++/mmc.h"
@@ -324,6 +325,7 @@ Session::Session (AudioEngine &eng,
pthread_cond_init (&_auto_connect_cond, 0);
init_name_id_counter (1); // reset for new sessions, start at 1
+ VCA::set_next_vca_number (1); // reset for new sessions, start at 1
pre_engine_init (fullpath);
diff --git a/libs/ardour/session_rtevents.cc b/libs/ardour/session_rtevents.cc
index 67249d48b9..3c905299b8 100644
--- a/libs/ardour/session_rtevents.cc
+++ b/libs/ardour/session_rtevents.cc
@@ -25,6 +25,7 @@
#include "ardour/route.h"
#include "ardour/session.h"
#include "ardour/track.h"
+#include "ardour/vca_manager.h"
#include "i18n.h"
@@ -71,6 +72,9 @@ Session::rt_clear_all_solo_state (boost::shared_ptr<RouteList> rl, bool /* yn */
}
(*i)->clear_all_solo_state();
}
+
+ _vca_manager->clear_all_solo_state ();
+
set_dirty();
}
diff --git a/libs/ardour/vca.cc b/libs/ardour/vca.cc
index f746da8ff3..0e33dca6e2 100644
--- a/libs/ardour/vca.cc
+++ b/libs/ardour/vca.cc
@@ -146,3 +146,9 @@ VCA::set_state (XMLNode const& node, int version)
return 0;
}
+
+void
+VCA::clear_all_solo_state ()
+{
+ _solo_control->clear_all_solo_state ();
+}
diff --git a/libs/ardour/vca_manager.cc b/libs/ardour/vca_manager.cc
index 6cc287554a..d7ad6ea851 100644
--- a/libs/ardour/vca_manager.cc
+++ b/libs/ardour/vca_manager.cc
@@ -177,3 +177,13 @@ VCAManager::set_state (XMLNode const& node, int version)
return 0;
}
+
+void
+VCAManager::clear_all_solo_state ()
+{
+ Mutex::Lock lm (lock);
+
+ for (VCAList::const_iterator i = _vcas.begin(); i != _vcas.end(); ++i) {
+ (*i)->clear_all_solo_state ();
+ }
+}