From c335e2b88b051a1a14b0806ffabb257c2a0d0e74 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 8 Jun 2007 02:17:40 +0000 Subject: Monitor/change ALSA connections without refreshing entire canvas (much faster). Waiting on JACK to provide the notification to do the same.... git-svn-id: http://svn.drobilla.net/lad/patchage@531 a436a847-0d15-0410-975c-d299462d15a1 --- src/PatchageEvent.h | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'src/PatchageEvent.h') diff --git a/src/PatchageEvent.h b/src/PatchageEvent.h index a5109ee..da2526b 100644 --- a/src/PatchageEvent.h +++ b/src/PatchageEvent.h @@ -20,6 +20,8 @@ #include #include +#include "../config.h" +#include "PatchagePort.h" class Patchage; @@ -31,7 +33,9 @@ public: enum Type { NULL_EVENT, PORT_CREATION, - PORT_DESTRUCTION + PORT_DESTRUCTION, + CONNECTION, + DISCONNECTION }; PatchageEvent(Patchage* patchage) @@ -39,21 +43,50 @@ public: , _type(NULL_EVENT) {} - PatchageEvent(Patchage* patchage, Type type, jack_port_id_t port_id) + PatchageEvent(Patchage* patchage, Type type, jack_port_id_t port) : _patchage(patchage) , _type(type) - , _port_id(port_id) + , _port_1(port) + {} + + PatchageEvent(Patchage* patchage, Type type, + snd_seq_addr_t port_1, snd_seq_addr_t port_2) + : _patchage(patchage) + , _type(type) + , _port_1(port_1) + , _port_2(port_2) {} void execute(); Type type() { return _type; } - jack_port_id_t port_id() { return _port_id; } private: Patchage* _patchage; Type _type; - jack_port_id_t _port_id; + + struct PortRef { + PortRef() : type((PortType)0xdeadbeef) { id.jack = 0; } + + PortRef(jack_port_id_t jack_id) : type(JACK_ANY) { id.jack = jack_id; } + +#ifdef HAVE_ALSA + PortRef(snd_seq_addr_t addr) : type(ALSA_MIDI) { id.alsa = addr; } +#endif + + PortType type; + union { + jack_port_id_t jack; +#ifdef HAVE_ALSA + snd_seq_addr_t alsa; +#endif + } id; + }; + + PortRef _port_1; + PortRef _port_2; + + boost::shared_ptr find_port(const PortRef& ref); }; -- cgit v1.2.1