summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-12-30 04:35:09 +0000
committerDavid Robillard <d@drobilla.net>2009-12-30 04:35:09 +0000
commit82245ba65d5b13a9cf40921affb70872147cf00c (patch)
tree42b815c363ad48e08467042a0c37d71bc6f5fc4a
parent973858ec5a5f795f6ec0c712733a5f5343eb0261 (diff)
downloadingen-82245ba65d5b13a9cf40921affb70872147cf00c.tar.gz
ingen-82245ba65d5b13a9cf40921affb70872147cf00c.tar.bz2
ingen-82245ba65d5b13a9cf40921affb70872147cf00c.zip
Fix JACK name of top level ports (fix ticket #457).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2319 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--src/engine/Driver.hpp2
-rw-r--r--src/engine/JackAudioDriver.cpp10
-rw-r--r--src/engine/JackAudioDriver.hpp2
-rw-r--r--src/engine/JackMidiDriver.cpp11
-rw-r--r--src/engine/JackMidiDriver.hpp2
-rw-r--r--src/engine/events/Move.cpp2
-rw-r--r--src/engine/util.hpp7
-rw-r--r--wscript2
8 files changed, 31 insertions, 7 deletions
diff --git a/src/engine/Driver.hpp b/src/engine/Driver.hpp
index 9445d9dd..7a268e3c 100644
--- a/src/engine/Driver.hpp
+++ b/src/engine/Driver.hpp
@@ -44,7 +44,7 @@ public:
virtual ~DriverPort() {}
/** Set the name of the system port */
- virtual void set_name(const std::string& name) = 0;
+ virtual void move(const Raul::Path& path) = 0;
virtual void create() = 0;
virtual void destroy() = 0;
diff --git a/src/engine/JackAudioDriver.cpp b/src/engine/JackAudioDriver.cpp
index 05b0c45b..d4c4da25 100644
--- a/src/engine/JackAudioDriver.cpp
+++ b/src/engine/JackAudioDriver.cpp
@@ -70,7 +70,8 @@ void
JackAudioPort::create()
{
_jack_port = jack_port_register(_driver->jack_client(),
- _patch_port->path().chop_start("/").c_str(), JACK_DEFAULT_AUDIO_TYPE,
+ ingen_jack_port_name(_patch_port->path()).c_str(),
+ JACK_DEFAULT_AUDIO_TYPE,
(_patch_port->is_input()) ? JackPortIsInput : JackPortIsOutput,
0);
@@ -92,6 +93,13 @@ JackAudioPort::destroy()
void
+JackAudioPort::move(const Raul::Path& path)
+{
+ jack_port_set_name(_jack_port, ingen_jack_port_name(path).c_str());
+}
+
+
+void
JackAudioPort::pre_process(jack_nframes_t nframes)
{
if (!is_input())
diff --git a/src/engine/JackAudioDriver.hpp b/src/engine/JackAudioDriver.hpp
index 9681dd71..02a60601 100644
--- a/src/engine/JackAudioDriver.hpp
+++ b/src/engine/JackAudioDriver.hpp
@@ -53,7 +53,7 @@ public:
void create();
void destroy();
- void set_name(const std::string& name) { jack_port_set_name(_jack_port, name.c_str()); };
+ void move(const Raul::Path& path);
void pre_process(jack_nframes_t nframes);
void post_process(jack_nframes_t nframes);
diff --git a/src/engine/JackMidiDriver.cpp b/src/engine/JackMidiDriver.cpp
index 6de97f68..a1c76f99 100644
--- a/src/engine/JackMidiDriver.cpp
+++ b/src/engine/JackMidiDriver.cpp
@@ -33,6 +33,7 @@
#include "ProcessContext.hpp"
#include "Engine.hpp"
#include "jack_compat.h"
+#include "util.hpp"
using namespace std;
using namespace Raul;
@@ -66,7 +67,8 @@ void
JackMidiPort::create()
{
_jack_port = jack_port_register(_driver->jack_client(),
- _patch_port->path().chop_start("/").c_str(), JACK_DEFAULT_MIDI_TYPE,
+ ingen_jack_port_name(_patch_port->path()).c_str(),
+ JACK_DEFAULT_MIDI_TYPE,
(_patch_port->is_input()) ? JackPortIsInput : JackPortIsOutput,
0);
@@ -88,6 +90,13 @@ JackMidiPort::destroy()
}
+void
+JackMidiPort::move(const Raul::Path& path)
+{
+ jack_port_set_name(_jack_port, ingen_jack_port_name(path).c_str());
+}
+
+
/** Prepare input for a block before a cycle is run, in the audio thread.
*
* This is simple since Jack MIDI is in-band with audio.
diff --git a/src/engine/JackMidiDriver.hpp b/src/engine/JackMidiDriver.hpp
index db38d68a..68c8182a 100644
--- a/src/engine/JackMidiDriver.hpp
+++ b/src/engine/JackMidiDriver.hpp
@@ -47,7 +47,7 @@ public:
void pre_process(ProcessContext& context);
void post_process(ProcessContext& context);
- void set_name(const std::string& name) { jack_port_set_name(_jack_port, name.c_str()); };
+ void move(const Raul::Path& path);
private:
JackMidiDriver* _driver;
diff --git a/src/engine/events/Move.cpp b/src/engine/events/Move.cpp
index eb250dab..d386ce44 100644
--- a/src/engine/events/Move.cpp
+++ b/src/engine/events/Move.cpp
@@ -112,7 +112,7 @@ Move::execute(ProcessContext& context)
driver_port = _engine.midi_driver()->driver_port(_new_path);
if (driver_port)
- driver_port->set_name(_new_path.str());
+ driver_port->move(_new_path);
}
}
diff --git a/src/engine/util.hpp b/src/engine/util.hpp
index 01eecd27..945e5101 100644
--- a/src/engine/util.hpp
+++ b/src/engine/util.hpp
@@ -19,6 +19,7 @@
#define UTIL_HPP
#include "ingen-config.h"
+#include "raul/Path.hpp"
#include <iostream>
#include <cstdlib>
@@ -73,6 +74,12 @@ set_denormal_flags()
#endif
}
+static inline std::string
+ingen_jack_port_name(const Raul::Path& path)
+{
+ return path.chop_start("/");
+}
+
} // namespace Ingen
#endif // UTIL_HPP
diff --git a/wscript b/wscript
index d99db144..d359c703 100644
--- a/wscript
+++ b/wscript
@@ -25,6 +25,7 @@ def set_options(opt):
def configure(conf):
autowaf.configure(conf)
+ autowaf.display_header('Ingen Configuration')
conf.check_tool('compiler_cxx')
autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0', mandatory=True)
autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.14.0', mandatory=True)
@@ -67,7 +68,6 @@ def configure(conf):
conf.write_config_header('ingen-config.h')
autowaf.print_summary(conf)
- autowaf.display_header('Ingen Configuration')
autowaf.display_msg(conf, "Jack", str(conf.env['HAVE_JACK'] == 1))
autowaf.display_msg(conf, "OSC", str(conf.env['HAVE_LIBLO'] == 1))
autowaf.display_msg(conf, "HTTP", str(conf.env['HAVE_SOUP'] == 1))