Merged with trunk R992.
[ardour.git] / libs / surfaces / generic_midi / interface.cc
1 #include <pbd/failed_constructor.h>
2
3 #include <control_protocol/control_protocol.h>
4 #include "generic_midi_control_protocol.h"
5
6 using namespace ARDOUR;
7
8 ControlProtocol*
9 new_generic_midi_protocol (ControlProtocolDescriptor* descriptor, Session* s)
10 {
11         GenericMidiControlProtocol* gmcp;
12                 
13         try {
14                 gmcp =  new GenericMidiControlProtocol (*s);
15         } catch (failed_constructor& err) {
16                 return 0;
17         }
18         
19         if (gmcp->set_active (true)) {
20                 delete gmcp;
21                 return 0;
22         }
23
24         return gmcp;
25 }
26
27 void
28 delete_generic_midi_protocol (ControlProtocolDescriptor* descriptor, ControlProtocol* cp)
29 {
30         delete cp;
31 }
32
33 bool
34 probe_generic_midi_protocol (ControlProtocolDescriptor* descriptor)
35 {
36         return GenericMidiControlProtocol::probe ();
37 }
38
39 static ControlProtocolDescriptor generic_midi_descriptor = {
40         name : "Generic MIDI",
41         id : "uri://ardour.org/surfaces/generic_midi:0",
42         ptr : 0,
43         module : 0,
44         mandatory : 0,
45         supports_feedback : true,
46         probe : probe_generic_midi_protocol,
47         initialize : new_generic_midi_protocol,
48         destroy : delete_generic_midi_protocol
49 };
50         
51
52 extern "C" {
53 ControlProtocolDescriptor* 
54 protocol_descriptor () {
55         return &generic_midi_descriptor;
56 }
57 }
58