From 94e6164bc37abb977db082dd655adb096fc31989 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 11 Oct 2018 01:36:10 +0200 Subject: [PATCH] Add API to query backend realtime thread priority --- libs/ardour/ardour/audioengine.h | 11 +++++++++++ libs/backends/jack/jack_audiobackend.cc | 7 +++++++ libs/backends/jack/jack_audiobackend.h | 1 + 3 files changed, 19 insertions(+) diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 6e7cdf7496..4548ad7391 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -106,6 +106,17 @@ class LIBARDOUR_API AudioEngine : public PortManager, public SessionHandlePtr bool in_process_thread (); uint32_t process_thread_count (); + /* internal backends + * -20 : main thread + * -21 : additional I/O threads e.g. MIDI + * -22 : client/process threads + * + * search for + * - pbd_realtime_pthread_create + * - pbd_set_thread_priority + */ + virtual int client_real_time_priority () { return -22; } + int backend_reset_requested(); void request_backend_reset(); void request_device_list_update(); diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 616964c3f2..4258b9c23a 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -926,6 +926,13 @@ JACKAudioBackend::process_thread_count () return _jack_threads.size(); } +int +JACKAudioBackend::client_real_time_priority () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_client_real_time_priority (_priv_jack); +} + void* JACKAudioBackend::_start_process_thread (void* arg) { diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 7d6d1bd977..e14396ea24 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -110,6 +110,7 @@ class JACKAudioBackend : public AudioBackend { int join_process_threads (); bool in_process_thread (); uint32_t process_thread_count (); + int client_real_time_priority (); void transport_start (); void transport_stop ();