summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-07-10 20:19:53 +0200
committerRobin Gareus <robin@gareus.org>2019-07-10 20:20:44 +0200
commit57c3eaacf6a9b3db4c15961f51b94bba2db35771 (patch)
treef732cf45de3dfbe9a8ff426c6ccf7a905ceaeb19 /libs/ardour
parente8c2e43dc411b656bdb8e65aec54ed543db071f7 (diff)
Fix process-thread naming
Diffstat (limited to 'libs/ardour')
-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) {