diff options
Diffstat (limited to 'libs/ardour/ardour/midi_ui.h')
-rw-r--r-- | libs/ardour/ardour/midi_ui.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libs/ardour/ardour/midi_ui.h b/libs/ardour/ardour/midi_ui.h new file mode 100644 index 0000000000..e1f322ddd1 --- /dev/null +++ b/libs/ardour/ardour/midi_ui.h @@ -0,0 +1,52 @@ +#ifndef __libardour_midi_ui_h__ +#define __libardour_midi_ui_h__ + +#include <list> +#include "pbd/abstract_ui.h" + +namespace MIDI { + class port; +} + +namespace ARDOUR { + +class Session; + +/* this is mostly a placeholder because I suspect that at some + point we will want to add more members to accomodate + certain types of requests to the MIDI UI +*/ + +struct MidiUIRequest : public BaseUI::BaseRequestObject { + public: + MidiUIRequest () {} + ~MidiUIRequest() {} +}; + +class MidiControlUI : public AbstractUI<MidiUIRequest> +{ + public: + MidiControlUI (Session& s); + ~MidiControlUI (); + + static BaseUI::RequestType PortChange; + + void change_midi_ports (); + + protected: + void thread_init (); + void do_request (MidiUIRequest*); + + private: + typedef std::list<Glib::RefPtr<Glib::IOSource> > PortSources; + PortSources port_sources; + ARDOUR::Session& _session; + + bool midi_input_handler (Glib::IOCondition, MIDI::Port*); + void reset_ports (); + void clear_ports (); +}; + +} + +#endif /* __libardour_midi_ui_h__ */ |