summaryrefslogtreecommitdiffstats
path: root/src/JackDriver.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-10-02 20:56:28 +0000
committerDavid Robillard <d@drobilla.net>2006-10-02 20:56:28 +0000
commit682a43546becbc86a210003846778ebb0c38718a (patch)
tree319e4b01347490d43a20e6ccc6b85cef94ee5288 /src/JackDriver.h
parent5812053fd22499251e2e2cedaa90fdd80c0d0988 (diff)
downloadpatchage-682a43546becbc86a210003846778ebb0c38718a.tar.gz
patchage-682a43546becbc86a210003846778ebb0c38718a.tar.bz2
patchage-682a43546becbc86a210003846778ebb0c38718a.zip
boost::shared_ptr-ification of FlowCanvas.
Extreme performance enhancements in Patchage (eg don't redraw the whole canvas every time). Patchage work towards being a control centre. Broken commit (ingen doesn't even compile) for machine transfer, don't even bother trying this revision. git-svn-id: http://svn.drobilla.net/lad/patchage@147 a436a847-0d15-0410-975c-d299462d15a1
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);