diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-07 12:04:23 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-12-07 12:38:17 -0500 |
commit | 3d79e3c116a13e455c0ea1083a25c81af9107764 (patch) | |
tree | 2acc1028523102bb82603c1b7243afab67abacf9 /libs/surfaces/generic_midi/generic_midi_control_protocol.h | |
parent | 2f48997dfbda7e89f9e4eabe27797321c896cb5b (diff) |
adjust generic MIDI surface support to (1) properly use boost::shared_ptr<Port> (2) detect connection changes
Diffstat (limited to 'libs/surfaces/generic_midi/generic_midi_control_protocol.h')
-rw-r--r-- | libs/surfaces/generic_midi/generic_midi_control_protocol.h | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.h b/libs/surfaces/generic_midi/generic_midi_control_protocol.h index 9d51efc97d..a453716e95 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.h +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.h @@ -34,8 +34,9 @@ namespace PBD { } namespace ARDOUR { - class Session; + class AsyncMIDIPort; class MidiPort; + class Session; } namespace MIDI { @@ -54,9 +55,9 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol { int set_active (bool yn); static bool probe() { return true; } - ARDOUR::Port* input_port () const { return ((ARDOUR::Port*) _input_port); } - ARDOUR::Port* output_port () const { return ((ARDOUR::Port*) _output_port); } - + boost::shared_ptr<ARDOUR::Port> input_port () const; + boost::shared_ptr<ARDOUR::Port> output_port () const; + void set_feedback_interval (ARDOUR::microseconds_t); int set_feedback (bool yn); @@ -103,9 +104,11 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol { } PBD::Signal0<void> ConnectionChange; + private: - MIDI::Port* _input_port; - MIDI::Port* _output_port; + boost::shared_ptr<ARDOUR::AsyncMIDIPort> _input_port; + boost::shared_ptr<ARDOUR::AsyncMIDIPort> _output_port; + ARDOUR::microseconds_t _feedback_interval; ARDOUR::microseconds_t last_feedback_time; @@ -143,6 +146,16 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol { void reset_controllables (); void drop_all (); + enum ConnectionState { + InputConnected = 0x1, + OutputConnected = 0x2 + }; + + int connection_state; + bool connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string name1, boost::weak_ptr<ARDOUR::Port>, std::string name2, bool yn); + PBD::ScopedConnection port_connection; + void connected(); + std::string _current_binding; uint32_t _bank_size; uint32_t _current_bank; @@ -156,6 +169,8 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol { mutable void *gui; void build_gui (); + + }; #endif /* ardour_generic_midi_control_protocol_h */ |