diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-08 14:02:03 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-08 14:02:03 -0400 |
commit | c98abed37fd9ffd7402f3ecf2c05df811488d610 (patch) | |
tree | 35d6ed35896e73236038ed4ce157b2b6b93242b6 /libs/backends | |
parent | 7e077bdebaa20eff758a812821e1c80991c1e59b (diff) |
restore jack timebase master and jack session callback functionality (moved into the JACK backend)
Diffstat (limited to 'libs/backends')
-rw-r--r-- | libs/backends/jack/jack_audiobackend.cc | 10 | ||||
-rw-r--r-- | libs/backends/jack/jack_audiobackend.h | 11 | ||||
-rw-r--r-- | libs/backends/jack/wscript | 3 |
3 files changed, 15 insertions, 9 deletions
diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index a651f2522d..a9bbe4b35a 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -37,6 +37,7 @@ #include "jack_audiobackend.h" #include "jack_connection.h" #include "jack_utils.h" +#include "jack_session.h" #include "i18n.h" @@ -64,6 +65,7 @@ JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptr<JackConnec , _target_systemic_output_latency (0) , _current_sample_rate (0) , _current_buffer_size (0) + , _session (0) { _jack_connection->Connected.connect_same_thread (jack_connection_connection, boost::bind (&JACKAudioBackend::when_connected_to_jack, this)); _jack_connection->Disconnected.connect_same_thread (disconnect_connection, boost::bind (&JACKAudioBackend::disconnected, this, _1)); @@ -748,7 +750,8 @@ JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_ ARDOUR::Session* session = engine.session(); if (session) { - session->jack_timebase_callback (state, nframes, pos, new_position); + JACKSession jsession (session); + jsession.timebase_callback (state, nframes, pos, new_position); } } @@ -793,7 +796,6 @@ JACKAudioBackend::_xrun_callback (void *arg) return 0; } -#ifdef HAVE_JACK_SESSION void JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) { @@ -801,10 +803,10 @@ JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) ARDOUR::Session* session = jab->engine.session(); if (session) { - session->jack_session_event (event); + JACKSession jsession (session); + jsession.session_event (event); } } -#endif void JACKAudioBackend::_freewheel_callback (int onoff, void *arg) diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index b8d8b3b3f1..cb24835d5b 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -30,15 +30,14 @@ #include <boost/shared_ptr.hpp> #include <jack/jack.h> -#ifdef HAVE_JACK_SESSION #include <jack/session.h> -#endif #include "ardour/audio_backend.h" namespace ARDOUR { class JackConnection; +class JACKSession; class JACKAudioBackend : public AudioBackend { public: @@ -196,9 +195,7 @@ class JACKAudioBackend : public AudioBackend { static int _jack_sync_callback (jack_transport_state_t, jack_position_t*, void *arg); static void _freewheel_callback (int , void *arg); static void _latency_callback (jack_latency_callback_mode_t, void*); -#ifdef HAVE_JACK_SESSION static void _session_callback (jack_session_event_t *event, void *arg); -#endif void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); int jack_sync_callback (jack_transport_state_t, jack_position_t*); @@ -261,6 +258,12 @@ class JACKAudioBackend : public AudioBackend { void when_connected_to_jack (); PBD::ScopedConnection jack_connection_connection; + + /* Object to manage interactions with Session in a way that + keeps JACK out of libardour directly + */ + + JACKSession* _session; }; } // namespace diff --git a/libs/backends/jack/wscript b/libs/backends/jack/wscript index 98c39c7b16..73b2005f84 100644 --- a/libs/backends/jack/wscript +++ b/libs/backends/jack/wscript @@ -28,7 +28,8 @@ def build(bld): 'jack_connection.cc', 'jack_audiobackend.cc', 'jack_portengine.cc', - 'jack_utils.cc' + 'jack_utils.cc', + 'jack_session.cc', ] obj.includes = ['.'] obj.cxxflags = [ '-fPIC' ] |