From: Paul Davis Date: Tue, 8 Oct 2013 18:02:03 +0000 (-0400) Subject: restore jack timebase master and jack session callback functionality (moved into... X-Git-Tag: 3.5~67 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=c98abed37fd9ffd7402f3ecf2c05df811488d610;p=ardour.git restore jack timebase master and jack session callback functionality (moved into the JACK backend) --- diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 937ae4fb2e..9c4edfa1a1 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -881,15 +881,6 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi MIDI::MachineControl& mmc() { return *_mmc; } - /* Callbacks specifically related to JACK, and called directly - * from the JACK audio backend. - */ - -#ifdef HAVE_JACK_SESSION - void jack_session_event (jack_session_event_t* event); -#endif - void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); - protected: friend class AudioEngine; void set_block_size (pframes_t nframes); diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 0fd5c4e80f..4231691d17 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -180,7 +180,6 @@ libardour_sources = [ 'session_events.cc', 'session_export.cc', 'session_handle.cc', - 'session_jack.cc', 'session_ltc.cc', 'session_metadata.cc', 'session_midi.cc', 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_ptrConnected.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 #include -#ifdef HAVE_JACK_SESSION #include -#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' ]