summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/control_protocol_manager.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-04-10 03:54:00 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-04-10 03:54:00 +0000
commita157537898eccf08009281633b19970515366a78 (patch)
treecd6f7bb1e7f9bddba1b5cc4ce6e10c60cb2b2a46 /libs/ardour/ardour/control_protocol_manager.h
parent7e8a98224578e03e17fbf5e656241ff5ef1a0bc1 (diff)
a) moved metering and meter falloff code into libardour
b) added initial "big meter" mode for tranzport c) fixed some lock issues in ARDOUR::IO objects d) generic_midi control surface module now compiles and loads git-svn-id: svn://localhost/trunk/ardour2@450 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/control_protocol_manager.h')
-rw-r--r--libs/ardour/ardour/control_protocol_manager.h18
1 files changed, 13 insertions, 5 deletions
diff --git a/libs/ardour/ardour/control_protocol_manager.h b/libs/ardour/ardour/control_protocol_manager.h
index f0b7846978..b06c3024b6 100644
--- a/libs/ardour/ardour/control_protocol_manager.h
+++ b/libs/ardour/ardour/control_protocol_manager.h
@@ -4,12 +4,15 @@
#include <string>
#include <list>
+#include <sigc++/sigc++.h>
+
#include <pbd/lockmonitor.h>
namespace ARDOUR {
class ControlProtocol;
class ControlProtocolDescriptor;
+class Session;
struct ControlProtocolInfo {
ControlProtocolDescriptor* descriptor;
@@ -18,7 +21,7 @@ struct ControlProtocolInfo {
std::string path;
};
-class ControlProtocolManager
+ class ControlProtocolManager : public sigc::trackable
{
public:
ControlProtocolManager ();
@@ -26,19 +29,24 @@ class ControlProtocolManager
static ControlProtocolManager& instance() { return *_instance; }
+ void set_session (Session&);
void discover_control_protocols (std::string search_path);
- void startup (Session&);
+ void foreach_known_protocol (sigc::slot<void,const ControlProtocolInfo*>);
+
+ ControlProtocol* instantiate (ControlProtocolInfo&);
+ int teardown (ControlProtocolInfo&);
- ControlProtocol* instantiate (Session&, std::string protocol_name);
- int teardown (std::string protocol_name);
+ std::list<ControlProtocolInfo*> control_protocol_info;
private:
static ControlProtocolManager* _instance;
+ Session* _session;
PBD::Lock protocols_lock;
- std::list<ControlProtocolInfo*> control_protocol_info;
std::list<ControlProtocol*> control_protocols;
+ void drop_session ();
+
int control_protocol_discover (std::string path);
ControlProtocolDescriptor* get_descriptor (std::string path);
};