aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/JackDriver.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-02-10 03:39:10 +0000
committerDavid Robillard <d@drobilla.net>2007-02-10 03:39:10 +0000
commitb924ead0db7c09ee50d2d4eee487b844c5fb867b (patch)
tree36fa1a6c879989a111f4fbbaf9a03b7f442b618c /src/engine/JackDriver.cpp
parent9f2a520a8f20661385bf6c9f7447aef1227d8696 (diff)
downloadmachina-b924ead0db7c09ee50d2d4eee487b844c5fb867b.tar.gz
machina-b924ead0db7c09ee50d2d4eee487b844c5fb867b.tar.bz2
machina-b924ead0db7c09ee50d2d4eee487b844c5fb867b.zip
Machine GUI talking to Jack engine, running machines made in GUI, etc.
git-svn-id: http://svn.drobilla.net/lad/machina@297 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/JackDriver.cpp')
-rw-r--r--src/engine/JackDriver.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/engine/JackDriver.cpp b/src/engine/JackDriver.cpp
index 848c3d7..f6f0ea6 100644
--- a/src/engine/JackDriver.cpp
+++ b/src/engine/JackDriver.cpp
@@ -33,7 +33,7 @@ JackDriver::JackDriver()
void
JackDriver::attach(const std::string& client_name)
{
- Raul::JackDriver::attach(client_name);
+ Raul::JackDriver::attach(client_name, "debug");
if (jack_client()) {
_output_port = jack_port_register(jack_client(),
@@ -57,6 +57,8 @@ JackDriver::detach()
Timestamp
JackDriver::stamp_to_offset(Timestamp stamp)
{
+ assert(stamp >= _current_cycle_start);
+
Timestamp ret = stamp - _current_cycle_start + _current_cycle_offset;
assert(ret < _current_cycle_offset + _current_cycle_nframes);
return ret;
@@ -77,6 +79,11 @@ JackDriver::on_process(jack_nframes_t nframes)
bool machine_done = ! _machine->run(_current_cycle_nframes);
+ if (machine_done && _machine->time() == 0) {
+ _machine->reset();
+ return;
+ }
+
if (!machine_done) {
_current_cycle_start += _current_cycle_nframes;
break;