summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r--libs/ardour/route.cc108
1 files changed, 26 insertions, 82 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index f6af17b1b8..2f69c3340a 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -69,7 +69,7 @@ using namespace std;
using namespace ARDOUR;
using namespace PBD;
-PBD::Signal1<void,RouteSortOrderKey> Route::SyncOrderKeys;
+PBD::Signal0<void> Route::SyncOrderKeys;
PBD::Signal0<void> Route::RemoteControlIDChange;
Route::Route (Session& sess, string name, Flag flg, DataType default_type)
@@ -96,6 +96,7 @@ Route::Route (Session& sess, string name, Flag flg, DataType default_type)
, _have_internal_generator (false)
, _solo_safe (false)
, _default_type (default_type)
+ , _has_order_key (false)
, _remote_control_id (0)
, _in_configure_processors (false)
, _initial_io_setup (false)
@@ -268,52 +269,19 @@ Route::remote_control_id() const
}
bool
-Route::has_order_key (RouteSortOrderKey key) const
+Route::has_order_key () const
{
- return (order_keys.find (key) != order_keys.end());
+ return _has_order_key;
}
uint32_t
-Route::order_key (RouteSortOrderKey key) const
+Route::order_key () const
{
- OrderKeys::const_iterator i = order_keys.find (key);
-
- if (i == order_keys.end()) {
- return 0;
- }
-
- return i->second;
+ return _order_key;
}
void
-Route::sync_order_keys (RouteSortOrderKey base)
-{
- /* this is called after changes to 1 or more route order keys have been
- * made, and we want to sync up.
- */
-
- OrderKeys::iterator i = order_keys.find (base);
-
- if (i == order_keys.end()) {
- return;
- }
-
- for (OrderKeys::iterator k = order_keys.begin(); k != order_keys.end(); ++k) {
-
- if (k->first != base) {
- DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("%1 set key for %2 to %3 from %4\n",
- name(),
- enum_2_string (k->first),
- i->second,
- enum_2_string (base)));
-
- k->second = i->second;
- }
- }
-}
-
-void
-Route::set_remote_control_id_from_order_key (RouteSortOrderKey /*key*/, uint32_t rid)
+Route::set_remote_control_id_explicit (uint32_t rid)
{
if (is_master() || is_monitor() || is_auditioner()) {
/* hard-coded remote IDs, or no remote ID */
@@ -337,18 +305,18 @@ Route::set_remote_control_id_from_order_key (RouteSortOrderKey /*key*/, uint32_t
}
void
-Route::set_order_key (RouteSortOrderKey key, uint32_t n)
+Route::set_order_key (uint32_t n)
{
- OrderKeys::iterator i = order_keys.find (key);
+ _has_order_key = true;
- if (i != order_keys.end() && i->second == n) {
+ if (_order_key == n) {
return;
}
- order_keys[key] = n;
+ _order_key = n;
- DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("%1 order key %2 set to %3\n",
- name(), enum_2_string (key), order_key (key)));
+ DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("%1 order key set to %2\n",
+ name(), order_key ()));
_session.set_dirty ();
}
@@ -1909,24 +1877,8 @@ Route::state(bool full_state)
node->add_property("route-group", _route_group->name());
}
- string order_string;
- OrderKeys::iterator x = order_keys.begin();
-
- while (x != order_keys.end()) {
- order_string += enum_2_string ((*x).first);
- order_string += '=';
- snprintf (buf, sizeof(buf), "%" PRId32, (*x).second);
- order_string += buf;
-
- ++x;
-
- if (x == order_keys.end()) {
- break;
- }
-
- order_string += ':';
- }
- node->add_property ("order-keys", order_string);
+ snprintf (buf, sizeof (buf), "%d", _order_key);
+ node->add_property ("order-key", buf);
node->add_property ("self-solo", (_self_solo ? "yes" : "no"));
snprintf (buf, sizeof (buf), "%d", _soloed_by_others_upstream);
node->add_property ("soloed-by-upstream", buf);
@@ -2127,7 +2079,11 @@ Route::set_state (const XMLNode& node, int version)
set_active (yn, this);
}
- if ((prop = node.property (X_("order-keys"))) != 0) {
+ if ((prop = node.property (X_("order-key"))) != 0) { // New order key (no separate mixer/editor ordering)
+ set_order_key (atoi(prop->value()));
+ }
+
+ if ((prop = node.property (X_("order-keys"))) != 0) { // Deprecated order keys
int32_t n;
@@ -2145,17 +2101,11 @@ Route::set_state (const XMLNode& node, int version)
<< endmsg;
} else {
string keyname = remaining.substr (0, equal);
- RouteSortOrderKey sk;
- if (keyname == "signal") {
- sk = MixerSort;
- } else if (keyname == "editor") {
- sk = EditorSort;
- } else {
- sk = (RouteSortOrderKey) string_2_enum (remaining.substr (0, equal), sk);
+ if ((keyname == "EditorSort") || (keyname == "editor")) {
+ cerr << "Setting " << name() << " order key to " << n << " using saved Editor order." << endl;
+ set_order_key (n);
}
-
- set_order_key (sk, n);
}
}
@@ -2356,17 +2306,11 @@ Route::set_state_2X (const XMLNode& node, int version)
<< endmsg;
} else {
string keyname = remaining.substr (0, equal);
- RouteSortOrderKey sk;
- if (keyname == "signal") {
- sk = MixerSort;
- } else if (keyname == "editor") {
- sk = EditorSort;
- } else {
- sk = (RouteSortOrderKey) string_2_enum (remaining.substr (0, equal), sk);
+ if (keyname == "EditorSort" || keyname == "editor") {
+ info << string_compose(_("Converting deprecated order key for %1 using Editor order %2"), name (), n) << endmsg;
+ set_order_key (n);
}
-
- set_order_key (sk, n);
}
}