provide limited momentary note on/off MIDI binding option; remove some debugging...
[ardour.git] / libs / surfaces / generic_midi / interface.cc
index 8fb50cdaae0af5c0550f0dfda4779b770eac8750..a62ca2a34baf61ef4bfc21c3421de4fd759f4658 100644 (file)
@@ -1,13 +1,20 @@
-#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;
 
 ControlProtocol*
-new_generic_midi_protocol (ControlProtocolDescriptor* descriptor, Session* s)
+new_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, Session* s)
 {
-       GenericMidiControlProtocol* gmcp =  new GenericMidiControlProtocol (*s);
+       GenericMidiControlProtocol* gmcp;
+               
+       try {
+               gmcp =  new GenericMidiControlProtocol (*s);
+       } catch (failed_constructor& err) {
+               return 0;
+       }
        
        if (gmcp->set_active (true)) {
                delete gmcp;
@@ -18,16 +25,25 @@ new_generic_midi_protocol (ControlProtocolDescriptor* descriptor, Session* s)
 }
 
 void
-delete_generic_midi_protocol (ControlProtocolDescriptor* descriptor, ControlProtocol* cp)
+delete_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, ControlProtocol* cp)
 {
        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
 };