From 573ec69a9aa29b08d99cba56284660fcd080fb55 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 14 Jun 2015 18:10:31 +0200 Subject: [PATCH] probe buffersize if jackd is already running. --- libs/backends/jack/jack_audiobackend.cc | 4 ++-- libs/backends/jack/jack_connection.cc | 4 ++++ libs/backends/jack/jack_connection.h | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index dea2d2e9a3..d66055d6ee 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -362,7 +362,7 @@ JACKAudioBackend::sample_rate () const if (available()) { return _current_sample_rate; } else { - return 0; + return _jack_connection->probed_sample_rate (); } } return _target_sample_rate; @@ -375,7 +375,7 @@ JACKAudioBackend::buffer_size () const if (available()) { return _current_buffer_size; } else { - return 0; + return _jack_connection->probed_buffer_size (); } } return _target_buffer_size; diff --git a/libs/backends/jack/jack_connection.cc b/libs/backends/jack/jack_connection.cc index f9824143ce..af938ad21b 100644 --- a/libs/backends/jack/jack_connection.cc +++ b/libs/backends/jack/jack_connection.cc @@ -56,6 +56,8 @@ JackConnection::JackConnection (const std::string& arg1, const std::string& arg2 : _jack (0) , _client_name (arg1) , session_uuid (arg2) + , _probed_buffer_size (0) + , _probed_sample_rate (0) { /* See if the server is already up */ @@ -77,6 +79,8 @@ JackConnection::JackConnection (const std::string& arg1, const std::string& arg2 jack_client_t* c = jack_client_open ("ardourprobe", JackNoStartServer, &status); if (status == 0) { + _probed_buffer_size = jack_get_buffer_size(c); + _probed_sample_rate = jack_get_sample_rate(c); jack_client_close (c); _in_control = false; } else { diff --git a/libs/backends/jack/jack_connection.h b/libs/backends/jack/jack_connection.h index a7462344dc..3b0ccb8d46 100644 --- a/libs/backends/jack/jack_connection.h +++ b/libs/backends/jack/jack_connection.h @@ -29,11 +29,16 @@ class JackConnection { static bool in_control() { return _in_control; } + uint32_t probed_buffer_size () const { assert (!connected ()); return _probed_buffer_size; } + uint32_t probed_sample_rate () const { assert (!connected ()); return _probed_sample_rate; } + private: jack_client_t* volatile _jack; std::string _client_name; std::string session_uuid; static bool _in_control; + uint32_t _probed_buffer_size; // when not in control + uint32_t _probed_sample_rate; // when not in control }; } // namespace