summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/mackie_control_protocol.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-04-10 17:13:55 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-04-10 17:13:55 +0000
commit01c1eeb279922a7b2a4f69ef40bf52dc0f6039c0 (patch)
treedab447b21a40d963e1274ef883de5ec502e4763a /libs/surfaces/mackie/mackie_control_protocol.h
parent893b468858a05f7ad9c344786e89d1414677c169 (diff)
give MackieControlProtocol its own thread and make it parse incoming MIDI in that thread, as well as doing timeouts there too
git-svn-id: svn://localhost/ardour2/branches/3.0@11872 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/mackie/mackie_control_protocol.h')
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h
index 2aaa5d43e7..a7601e4bde 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.h
+++ b/libs/surfaces/mackie/mackie_control_protocol.h
@@ -84,6 +84,8 @@ class MackieControlProtocol
MackieControlProtocol(ARDOUR::Session &);
virtual ~MackieControlProtocol();
+ static MackieControlProtocol* instance() { return _instance; }
+
int set_active (bool yn);
XMLNode& get_state ();
@@ -315,6 +317,8 @@ class MackieControlProtocol
private:
+ static MackieControlProtocol* _instance;
+
void create_surfaces ();
void port_connected_or_disconnected (std::string, std::string, bool);
bool control_in_use_timeout (Mackie::Surface*, Mackie::Control *, Mackie::Control *);
@@ -364,6 +368,13 @@ class MackieControlProtocol
int _modifier_state;
Mackie::MackieMidiBuilder builder;
+
+ typedef std::list<GSource*> PortSources;
+ PortSources port_sources;
+
+ bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port);
+ void clear_ports ();
+
};
#endif // ardour_mackie_control_protocol_h