From adafa2493e84f0b8ad46760967f82cc2efdcc2c9 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 5 Feb 2007 06:20:36 +0000 Subject: RDF querying bug fix (crash on empty results). Added process callback static wrapper stuff to Jack driver. git-svn-id: http://svn.drobilla.net/lad/raul@277 a436a847-0d15-0410-975c-d299462d15a1 --- src/JackDriver.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'src/JackDriver.cpp') diff --git a/src/JackDriver.cpp b/src/JackDriver.cpp index a8ece4a..167a4b9 100644 --- a/src/JackDriver.cpp +++ b/src/JackDriver.cpp @@ -68,6 +68,7 @@ JackDriver::attach(const string& client_name) jack_set_graph_order_callback(_client, jack_graph_order_cb, this); jack_set_buffer_size_callback(_client, jack_buffer_size_cb, this); jack_set_xrun_callback(_client, jack_xrun_cb, this); + jack_set_process_callback(_client, jack_process_cb, this); //_is_dirty = true; _buffer_size = jack_get_buffer_size(_client); @@ -116,6 +117,23 @@ JackDriver::jack_graph_order_cb(void* jack_driver) } +int +JackDriver::jack_xrun_cb(void* jack_driver) +{ + JackDriver* me = reinterpret_cast(jack_driver); + + assert(me); + + me->_xruns++; + me->_xrun_delay = jack_get_xrun_delayed_usecs(me->_client); + me->reset_delay(); + + me->on_xrun(); + + return 0; +} + + int JackDriver::jack_buffer_size_cb(jack_nframes_t buffer_size, void* jack_driver) { @@ -130,19 +148,15 @@ JackDriver::jack_buffer_size_cb(jack_nframes_t buffer_size, void* jack_driver) return 0; } - + int -JackDriver::jack_xrun_cb(void* jack_driver) +JackDriver::jack_process_cb(jack_nframes_t nframes, void* jack_driver) { JackDriver* me = reinterpret_cast(jack_driver); assert(me); - me->_xruns++; - me->_xrun_delay = jack_get_xrun_delayed_usecs(me->_client); - me->reset_delay(); - - me->on_xrun(); + me->on_process(nframes); return 0; } -- cgit v1.2.1