summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2015-08-14 08:57:13 -0700
committerLen Ovens <len@ovenwerks.net>2015-08-14 08:57:13 -0700
commit4129b8865c6cc57ad922130c3784b0337df9d507 (patch)
treef9d6160c5973d74ae996a82fe41c18cee2c67920 /libs/surfaces
parentac1065b43b8bbd2485d8c40b7c4e0408267d06ba (diff)
Fixed Mackie control port naming for extender use (fixes #6500)
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/mackie/gui.cc1
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc1
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h8
-rw-r--r--libs/surfaces/mackie/surface_port.cc23
4 files changed, 21 insertions, 12 deletions
diff --git a/libs/surfaces/mackie/gui.cc b/libs/surfaces/mackie/gui.cc
index 0df0935f56..16f2d52bdd 100644
--- a/libs/surfaces/mackie/gui.cc
+++ b/libs/surfaces/mackie/gui.cc
@@ -532,6 +532,7 @@ MackieControlProtocolGUI::action_changed (const Glib::ustring &sPath, const Glib
void
MackieControlProtocolGUI::surface_combo_changed ()
{
+ _cp.not_session_load();
_cp.set_device (_surface_combo.get_active_text());
/* update ipMIDI field */
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index 34feabfbb8..b3fe26c144 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -110,6 +110,7 @@ MackieControlProtocol::MackieControlProtocol (Session& session)
, _initialized (false)
, _surfaces_state (0)
, _surfaces_version (0)
+ , _session_load (true)
{
DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::MackieControlProtocol\n");
diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h
index 170f1e0f26..8043f49c08 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.h
+++ b/libs/surfaces/mackie/mackie_control_protocol.h
@@ -209,6 +209,9 @@ class MackieControlProtocol
int16_t ipmidi_base() const { return _ipmidi_base; }
void set_ipmidi_base (int16_t);
+ bool session_load () { return _session_load; }
+ void not_session_load () { _session_load = false; }
+
void midi_connectivity_established ();
protected:
@@ -298,8 +301,9 @@ class MackieControlProtocol
bool _metering_active;
bool _initialized;
ARDOUR::RouteNotificationList _last_selected_routes;
- XMLNode* _surfaces_state;
- int _surfaces_version;
+ XMLNode* _surfaces_state;
+ int _surfaces_version;
+ bool _session_load;
boost::shared_ptr<ArdourSurface::Mackie::Surface> _master_surface;
struct ipMIDIHandler {
diff --git a/libs/surfaces/mackie/surface_port.cc b/libs/surfaces/mackie/surface_port.cc
index e972ada8ab..9694d7f08c 100644
--- a/libs/surfaces/mackie/surface_port.cc
+++ b/libs/surfaces/mackie/surface_port.cc
@@ -120,19 +120,22 @@ SurfacePort::set_state (const XMLNode& node, int version)
return 0;
}
// the rest should not be run if the device-name changes outside of a session load.
- XMLNode* child;
+ if ( _surface->mcp().session_load()) {
+
+ XMLNode* child;
- if ((child = node.child (X_("Input"))) != 0) {
- XMLNode* portnode = child->child (Port::state_node_name.c_str());
- if (portnode) {
- _async_in->set_state (*portnode, version);
+ if ((child = node.child (X_("Input"))) != 0) {
+ XMLNode* portnode = child->child (Port::state_node_name.c_str());
+ if (portnode) {
+ _async_in->set_state (*portnode, version);
+ }
}
- }
- if ((child = node.child (X_("Output"))) != 0) {
- XMLNode* portnode = child->child (Port::state_node_name.c_str());
- if (portnode) {
- _async_out->set_state (*portnode, version);
+ if ((child = node.child (X_("Output"))) != 0) {
+ XMLNode* portnode = child->child (Port::state_node_name.c_str());
+ if (portnode) {
+ _async_out->set_state (*portnode, version);
+ }
}
}