summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/graph.cc20
-rw-r--r--libs/ardour/luaproc.cc8
2 files changed, 21 insertions, 7 deletions
diff --git a/libs/ardour/graph.cc b/libs/ardour/graph.cc
index 0389b2ef1a..0c59b0f7c7 100644
--- a/libs/ardour/graph.cc
+++ b/libs/ardour/graph.cc
@@ -428,6 +428,16 @@ Graph::run_one()
void
Graph::helper_thread()
{
+ /* This is needed for ARDOUR::Session requests called from rt-processors
+ * in particular Lua scripts may do cross-thread calls */
+ if (! SessionEvent::has_per_thread_pool ()) {
+ char name[64];
+ snprintf (name, 64, "RT-%p", this);
+ pthread_set_name (name);
+ SessionEvent::create_per_thread_pool (name, 64);
+ PBD::notify_event_loops_about_thread_creation (pthread_self(), name, 64);
+ }
+
suspend_rt_malloc_checks ();
ProcessThread* pt = new ProcessThread ();
resume_rt_malloc_checks ();
@@ -450,6 +460,16 @@ Graph::main_thread()
{
suspend_rt_malloc_checks ();
ProcessThread* pt = new ProcessThread ();
+
+ /* This is needed for ARDOUR::Session requests called from rt-processors
+ * in particular Lua scripts may do cross-thread calls */
+ if (! SessionEvent::has_per_thread_pool ()) {
+ char name[64];
+ snprintf (name, 64, "RT-main-%p", this);
+ pthread_set_name (name);
+ SessionEvent::create_per_thread_pool (name, 64);
+ PBD::notify_event_loops_about_thread_creation (pthread_self(), name, 64);
+ }
resume_rt_malloc_checks ();
pt->get_buffers();
diff --git a/libs/ardour/luaproc.cc b/libs/ardour/luaproc.cc
index 8cb5f66c1c..04d83862ce 100644
--- a/libs/ardour/luaproc.cc
+++ b/libs/ardour/luaproc.cc
@@ -624,13 +624,7 @@ LuaProc::connect_and_run (BufferSet& bufs,
Plugin::connect_and_run (bufs, start, end, speed, in, out, nframes, offset);
// This is needed for ARDOUR::Session requests :(
- if (! SessionEvent::has_per_thread_pool ()) {
- char name[64];
- snprintf (name, 64, "Proc-%p", this);
- pthread_set_name (name);
- SessionEvent::create_per_thread_pool (name, 64);
- PBD::notify_event_loops_about_thread_creation (pthread_self(), name, 64);
- }
+ assert (SessionEvent::has_per_thread_pool ());
uint32_t const n = parameter_count ();
for (uint32_t i = 0; i < n; ++i) {