rationalize save/restore of control surface "feedback" property
This commit is contained in:
parent
2b81d4d0fe
commit
2ea5962af2
|
@ -374,6 +374,19 @@ ControlProtocol::get_state ()
|
|||
XMLNode* node = new XMLNode (state_node_name);
|
||||
|
||||
node->add_property ("name", _name);
|
||||
node->add_property ("feedback", get_feedback() ? "yes" : "no");
|
||||
|
||||
return *node;
|
||||
}
|
||||
|
||||
int
|
||||
ControlProtocol::set_state (XMLNode const & node, int /* version */)
|
||||
{
|
||||
const XMLProperty* prop;
|
||||
|
||||
if ((prop = node.property ("feedback")) != 0) {
|
||||
set_feedback (string_is_affirmative (prop->value()));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -135,6 +135,8 @@ class LIBCONTROLCP_API ControlProtocol : public PBD::Stateful, public PBD::Scope
|
|||
virtual void tear_down_gui() { }
|
||||
|
||||
XMLNode& get_state ();
|
||||
int set_state (XMLNode const &, int version);
|
||||
|
||||
static const std::string state_node_name;
|
||||
|
||||
protected:
|
||||
|
|
|
@ -464,7 +464,6 @@ GenericMidiControlProtocol::get_state ()
|
|||
XMLNode& node (ControlProtocol::get_state());
|
||||
char buf[32];
|
||||
|
||||
node.add_property (X_("feedback"), do_feedback ? "1" : "0");
|
||||
snprintf (buf, sizeof (buf), "%" PRIu64, _feedback_interval);
|
||||
node.add_property (X_("feedback_interval"), buf);
|
||||
snprintf (buf, sizeof (buf), "%d", _threshold);
|
||||
|
@ -501,10 +500,8 @@ GenericMidiControlProtocol::set_state (const XMLNode& node, int version)
|
|||
XMLNodeConstIterator niter;
|
||||
const XMLProperty* prop;
|
||||
|
||||
if ((prop = node.property ("feedback")) != 0) {
|
||||
do_feedback = (bool) atoi (prop->value().c_str());
|
||||
} else {
|
||||
do_feedback = false;
|
||||
if (ControlProtocol::set_state (node, version)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((prop = node.property ("feedback_interval")) != 0) {
|
||||
|
|
|
@ -827,6 +827,10 @@ MackieControlProtocol::set_state (const XMLNode & node, int version)
|
|||
const XMLProperty* prop;
|
||||
uint32_t bank = 0;
|
||||
|
||||
if (ControlProtocol::set_state (node, version)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((prop = node.property (X_("ipmidi-base"))) != 0) {
|
||||
set_ipmidi_base (atoi (prop->value()));
|
||||
}
|
||||
|
|
|
@ -140,7 +140,12 @@ class MackieControlProtocol
|
|||
|
||||
XMLNode& get_state ();
|
||||
int set_state (const XMLNode&, int version);
|
||||
|
||||
|
||||
/* Note: because Mackie control is inherently a duplex protocol,
|
||||
we do not implement get/set_feedback() since this aspect of
|
||||
support for the protocol is not optional.
|
||||
*/
|
||||
|
||||
static bool probe();
|
||||
|
||||
Glib::Threads::Mutex surfaces_lock;
|
||||
|
|
|
@ -1090,25 +1090,14 @@ OSC::route_plugin_parameter_print (int rid, int piid, int par)
|
|||
XMLNode&
|
||||
OSC::get_state ()
|
||||
{
|
||||
XMLNode& node (ControlProtocol::get_state());
|
||||
|
||||
node.add_property (X_("feedback"), _send_route_changes ? "1" : "0");
|
||||
return node;
|
||||
return ControlProtocol::get_state();
|
||||
}
|
||||
|
||||
int
|
||||
OSC::set_state (const XMLNode& node, int /*version*/)
|
||||
OSC::set_state (const XMLNode& node, int version)
|
||||
{
|
||||
const XMLProperty* prop = node.property (X_("feedback"));
|
||||
|
||||
if (prop) {
|
||||
if (PBD::string_is_affirmative (prop->value())) {
|
||||
_send_route_changes = true;
|
||||
} else {
|
||||
_send_route_changes = false;
|
||||
}
|
||||
} else {
|
||||
/* leave it alone */
|
||||
if (ControlProtocol::set_state (node, version)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue
Block a user