From 71a32f5a000f852dc849e6e677e3a45b95bb0e7f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 31 May 2011 19:54:40 +0000 Subject: conditionally compile support for jack_port_type_get_buffer_size() and if available at compile AND runtime, use it in preference to jack_port_get_buffer_size() during a reconnect to JACK git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@9646 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/SConscript | 23 ++++++++++++++++++++++- libs/ardour/audioengine.cc | 15 ++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) (limited to 'libs') diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript index 5a8303957e..5dcf82a497 100644 --- a/libs/ardour/SConscript +++ b/libs/ardour/SConscript @@ -138,6 +138,23 @@ ardour.Append(CXXFLAGS="-DLOCALEDIR=\\\"" + os.path.join (final_prefix, 'share', ardour.Merge ([ libraries['jack'] ]) +# +# See if JACK supports jack_port_type_get_buffer_size() +# +jack_port_type_buffer_size_source_file = """ +#include +int main(int argc, char **argv) +{ + jack_port_type_get_buffer_size (0, JACK_DEFAULT_AUDIO_TYPE); + return 0; +} +""" +def CheckJackPortTypeGetBufferSize(context): + context.Message('Checking for jack_port_type_get_buffer_size()...') + result = context.TryLink(jack_port_type_buffer_size_source_file, '.c') + context.Result(result) + return result + # # See if JACK supports jack_client_open() # @@ -236,12 +253,16 @@ conf = Configure(ardour, custom_tests = { 'CheckJackOnInfoShutdown' : CheckJackOnInfoShutdown, 'CheckJackRecomputeLatencies' : CheckJackRecomputeLatencies, 'CheckJackVideoFrameOffset' : CheckJackVideoFrameOffset, - 'CheckJackEnsureMonitorInput' : CheckJackEnsureMonitorInput + 'CheckJackEnsureMonitorInput' : CheckJackEnsureMonitorInput, + 'CheckJackPortTypeGetBufferSize' : CheckJackPortTypeGetBufferSize }) if conf.CheckJackClientOpen(): ardour.Append(CXXFLAGS="-DHAVE_JACK_CLIENT_OPEN") +if conf.CheckJackPortTypeGetBufferSize(): + ardour.Append(CXXFLAGS="-DHAVE_JACK_PORT_TYPE_GET_BUFFER_SIZE") + if conf.CheckJackOnInfoShutdown(): ardour.Append(CXXFLAGS="-DHAVE_JACK_ON_INFO_SHUTDOWN") diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index fe5de6dc82..5501f76e79 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -1249,7 +1249,20 @@ AudioEngine::reconnect_to_jack () if (session) { session->reset_jack_connection (_priv_jack); - nframes_t blocksize = jack_get_buffer_size (_priv_jack); + + nframes_t blocksize; + +#ifdef HAVE_JACK_PORT_TYPE_GET_BUFFER_SIZE + if (jack_port_type_get_buffer_size) { + blocksize = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_AUDIO_TYPE); + } else { + warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; + blocksize = jack_get_buffer_size (_priv_jack); + } +#else + blocksize = jack_get_buffer_size (_priv_jack); +#endif + Port::set_buffer_size (blocksize); session->set_block_size (blocksize); session->set_frame_rate (jack_get_sample_rate (_priv_jack)); -- cgit v1.2.3