X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fmidi_ui.h;h=88ea021361a8e2a754dd69574c29fe4ef99a3f8c;hb=fcf49de77401930db34ca4dfb1fff6bea0a7a987;hp=e1f322ddd105fe1cf491d19c9c9ed08460c673eb;hpb=c38e02285fda1fd7966c9e4ad85994445247e6a6;p=ardour.git diff --git a/libs/ardour/ardour/midi_ui.h b/libs/ardour/ardour/midi_ui.h index e1f322ddd1..88ea021361 100644 --- a/libs/ardour/ardour/midi_ui.h +++ b/libs/ardour/ardour/midi_ui.h @@ -1,50 +1,72 @@ +/* + Copyright (C) 2012 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + #ifndef __libardour_midi_ui_h__ #define __libardour_midi_ui_h__ #include + +#define ABSTRACT_UI_EXPORTS #include "pbd/abstract_ui.h" +#include "pbd/signals.h" +#include "pbd/stacktrace.h" -namespace MIDI { - class port; -} namespace ARDOUR { class Session; +class AsyncMIDIPort; /* 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 { +struct LIBARDOUR_API MidiUIRequest : public BaseUI::BaseRequestObject { public: - MidiUIRequest () {} - ~MidiUIRequest() {} + MidiUIRequest () { } + ~MidiUIRequest() { } }; -class MidiControlUI : public AbstractUI +class LIBARDOUR_API MidiControlUI : public AbstractUI { public: MidiControlUI (Session& s); ~MidiControlUI (); - - static BaseUI::RequestType PortChange; - + + static MidiControlUI* instance() { return _instance; } + static void* request_factory (uint32_t num_requests); + void change_midi_ports (); - + protected: void thread_init (); void do_request (MidiUIRequest*); - + private: - typedef std::list > PortSources; - PortSources port_sources; ARDOUR::Session& _session; - - bool midi_input_handler (Glib::IOCondition, MIDI::Port*); + + bool midi_input_handler (Glib::IOCondition, boost::weak_ptr); void reset_ports (); void clear_ports (); + + static MidiControlUI* _instance; }; }