* got MIDI clock working really smoothly (29 frames until sync, ardour transport...
[ardour.git] / libs / surfaces / generic_midi / interface.cc
index 8283b92e6ff89e1d1c1dabf25259c2dd1c43616e..c70b5b6b6182d872e3ab59280ae68a62383e139a 100644 (file)
@@ -1,5 +1,6 @@
-#include <ardour/control_protocol.h>
+#include <pbd/failed_constructor.h>
 
+#include <control_protocol/control_protocol.h>
 #include "generic_midi_control_protocol.h"
 
 using namespace ARDOUR;
@@ -7,7 +8,20 @@ using namespace ARDOUR;
 ControlProtocol*
 new_generic_midi_protocol (ControlProtocolDescriptor* descriptor, Session* s)
 {
-       return new GenericMidiControlProtocol (*s);
+       GenericMidiControlProtocol* gmcp;
+               
+       try {
+               gmcp =  new GenericMidiControlProtocol (*s);
+       } catch (failed_constructor& err) {
+               return 0;
+       }
+       
+       if (gmcp->set_active (true)) {
+               delete gmcp;
+               return 0;
+       }
+
+       return gmcp;
 }
 
 void
@@ -16,10 +30,20 @@ delete_generic_midi_protocol (ControlProtocolDescriptor* descriptor, ControlProt
        delete cp;
 }
 
+bool
+probe_generic_midi_protocol (ControlProtocolDescriptor* descriptor)
+{
+       return GenericMidiControlProtocol::probe ();
+}
+
 static ControlProtocolDescriptor generic_midi_descriptor = {
        name : "Generic MIDI",
+       id : "uri://ardour.org/surfaces/generic_midi:0",
        ptr : 0,
        module : 0,
+       mandatory : 0,
+       supports_feedback : true,
+       probe : probe_generic_midi_protocol,
        initialize : new_generic_midi_protocol,
        destroy : delete_generic_midi_protocol
 };