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 ();