summaryrefslogtreecommitdiffstats
path: root/src/JackDriver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/JackDriver.h')
-rw-r--r--src/JackDriver.h31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/JackDriver.h b/src/JackDriver.h
index 6b69900..db74f77 100644
--- a/src/JackDriver.h
+++ b/src/JackDriver.h
@@ -1,11 +1,11 @@
/* This file is part of Patchage. Copyright (C) 2005 Dave Robillard.
*
- * Om is free software; you can redistribute it and/or modify it under the
+ * Patchage 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.
*
- * Om is distributed in the hope that it will be useful, but WITHOUT ANY
+ * Patchage 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 details.
*
@@ -18,12 +18,15 @@
#define JACKDRIVER_H
#include <iostream>
-#include <jack/jack.h>
#include <string>
+#include <boost/shared_ptr.hpp>
+#include <jack/jack.h>
+#include "Mutex.h"
#include "Driver.h"
class Patchage;
class PatchageFlowCanvas;
class PatchagePort;
+class PatchageModule;
using std::string;
@@ -45,13 +48,11 @@ public:
bool is_attached() const { return (m_client != NULL); }
void refresh();
- bool connect(const PatchagePort* const src_port, const PatchagePort* const dst_port);
- bool disconnect(const PatchagePort* const src_port, const PatchagePort* const dst_port);
- /*bool connect(const string& src_module_name, const string& src_port_name,
- const string& dst_module_name, const string& dest_port_name);
-
- bool disconnect(const string& src_module_name, const string& src_port_name,
- const string& dst_module_name, const string& dest_port_name);*/
+ bool connect(boost::shared_ptr<PatchagePort> src,
+ boost::shared_ptr<PatchagePort> dst);
+
+ bool disconnect(boost::shared_ptr<PatchagePort> src,
+ boost::shared_ptr<PatchagePort> dst);
private:
Patchage* m_app;
@@ -59,6 +60,16 @@ private:
jack_client_t* m_client;
+ Mutex m_mutex;
+
+ list<string> m_added_ports;
+ list<string> m_removed_ports;
+
+ boost::shared_ptr<PatchagePort> create_port(boost::shared_ptr<PatchageModule> parent,
+ jack_port_t* port);
+
+ void destroy_all_ports();
+
static void jack_port_registration_cb(jack_port_id_t port_id, int registered, void* controller);
static int jack_graph_order_cb(void* controller);
static void jack_shutdown_cb(void* controller);