Merge branch 'windows+cc' into cairocanvas
[ardour.git] / libs / surfaces / mackie / surface.cc
index 07cc918b55c381c6553e586e2485e6507ccfa07c..694c73b1bcb638f49bb3772bceeb6a55159f33cb 100644 (file)
@@ -141,6 +141,39 @@ Surface::~Surface ()
        DEBUG_TRACE (DEBUG::MackieControl, "Surface::~Surface done\n");
 }
 
+XMLNode&
+Surface::get_state()
+{
+       char buf[64];
+       snprintf (buf, sizeof (buf), X_("surface-%u"), _number);
+       XMLNode* node = new XMLNode (buf);
+
+       node->add_child_nocopy (_port->get_state());
+
+       return *node;
+}
+
+int
+Surface::set_state (const XMLNode& node, int version)
+{
+       char buf[64];
+       snprintf (buf, sizeof (buf), X_("surface-%u"), _number);
+       XMLNode* mynode = node.child (buf);
+
+       if (!mynode) {
+               return 0;
+       }
+
+       XMLNode* portnode = mynode->child (X_("Port"));
+       if (portnode) {
+               if (_port->set_state (*portnode, version)) {
+                       return -1;
+               }
+       }
+
+       return 0;
+}
+
 const MidiByteArray& 
 Surface::sysex_hdr() const
 {