summaryrefslogtreecommitdiff
path: root/libs/ardour/audioengine.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-01-27 14:02:03 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-01-27 14:02:03 -0700
commit64ed049567c0712eb473ff77b9ee717d5232487d (patch)
tree6ea284d589bc23ed8902356ee2e1f43d606d2cbb /libs/ardour/audioengine.cc
parente7b34d7f1847de846c5b64ac9575fe6d2fc850cd (diff)
force execution of ARDOUR::init_post_engine() before any handlers of AudioEngine::Running()
Diffstat (limited to 'libs/ardour/audioengine.cc')
-rw-r--r--libs/ardour/audioengine.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index 3fbc7635e1..612a3fd0e0 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -39,6 +39,7 @@
#include "midi++/mmc.h"
#include "ardour/async_midi_port.h"
+#include "ardour/ardour.h"
#include "ardour/audio_port.h"
#include "ardour/audio_backend.h"
#include "ardour/audioengine.h"
@@ -930,10 +931,22 @@ AudioEngine::start (bool for_latency)
PortManager::fill_midi_port_info ();
if (!for_latency) {
+ /* Call the library-wide ::init_post_engine() before emitting
+ * running to ensure that its tasks are complete before any
+ * signal handlers execute. PBD::Signal does not ensure
+ * ordering of signal handlers so even if ::init_post_engine()
+ * is connected first, it may not run first.
+ */
+
+ ARDOUR::init_post_engine (_start_cnt);
+
Running (_start_cnt); /* EMIT SIGNAL */
+
+ /* latency start/stop cycles do not count as "starts" */
+
+ _start_cnt++;
}
- _start_cnt++;
return 0;
}