diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/audioengine.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/session_event.h | 1 | ||||
-rw-r--r-- | libs/ardour/audioengine.cc | 6 | ||||
-rw-r--r-- | libs/ardour/session_events.cc | 6 |
4 files changed, 16 insertions, 0 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 330de4e285..d1e3f8a7ef 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -209,6 +209,9 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager void latency_callback (bool for_playback); void halted_callback (const char* reason); + /* checks if current thread is properly set up for audio processing */ + static bool thread_initialised_for_audio_processing (); + /* sets up the process callback thread */ static void thread_init_callback (void *); diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index 96145e7b29..0b29596408 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -134,6 +134,7 @@ public: static const framepos_t Immediate = -1; + static bool has_per_thread_pool (); static void create_per_thread_pool (const std::string& n, uint32_t nitems); static void init_event_pool (); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index c18b5dde38..86fc5f0221 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -1151,6 +1151,12 @@ AudioEngine::set_systemic_output_latency (uint32_t ol) return _backend->set_systemic_output_latency (ol); } +bool +AudioEngine::thread_initialised_for_audio_processing () +{ + return SessionEvent::has_per_thread_pool () && AsyncMIDIPort::is_process_thread(); +} + /* END OF BACKEND PROXY API */ void diff --git a/libs/ardour/session_events.cc b/libs/ardour/session_events.cc index 53a26363b0..f375781143 100644 --- a/libs/ardour/session_events.cc +++ b/libs/ardour/session_events.cc @@ -42,6 +42,12 @@ SessionEvent::init_event_pool () pool = new PerThreadPool; } +bool +SessionEvent::has_per_thread_pool () +{ + return pool->has_per_thread_pool (); +} + void SessionEvent::create_per_thread_pool (const std::string& name, uint32_t nitems) { |