rework Stateful::set_state() patch to avoid default version argument
[ardour.git] / libs / surfaces / generic_midi / generic_midi_control_protocol.h
index 5f5a470b13c2c8b04c341a295067ffc54fb03675..6473a869ae4a56c50407d7bc927c8e56e324fa0e 100644 (file)
@@ -32,20 +32,27 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol {
        MIDI::Port* port () const { return _port; }
        void set_feedback_interval (ARDOUR::microseconds_t);
 
+       int set_feedback (bool yn);
+       bool get_feedback () const;
+
        XMLNode& get_state ();
-       int set_state (const XMLNode&);
+       int set_state (const XMLNode&, int version);
 
   private:
        MIDI::Port* _port;
        ARDOUR::microseconds_t _feedback_interval;
        ARDOUR::microseconds_t last_feedback_time;
 
+       bool  do_feedback;
+       bool  auto_binding;
        void _send_feedback ();
        void  send_feedback ();
 
        typedef std::set<MIDIControllable*> MIDIControllables;
        MIDIControllables controllables;
-       MIDIControllables pending_controllables;
+
+       typedef std::list<std::pair<MIDIControllable*,sigc::connection> > MIDIPendingControllables;
+       MIDIPendingControllables pending_controllables;
        Glib::Mutex controllables_lock;
        Glib::Mutex pending_lock;
 
@@ -53,6 +60,13 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol {
        void stop_learning (PBD::Controllable*);
 
        void learning_stopped (MIDIControllable*);
+
+       void create_binding (PBD::Controllable*, int, int);
+       void delete_binding (PBD::Controllable*);
+
+       void auto_binding_on();
+       void auto_binding_off();
+
 };
 
 #endif /* ardour_generic_midi_control_protocol_h */