summaryrefslogtreecommitdiff
path: root/libs/ardour/globals.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/globals.cc')
-rw-r--r--libs/ardour/globals.cc37
1 files changed, 14 insertions, 23 deletions
diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc
index b40db9466c..665277388a 100644
--- a/libs/ardour/globals.cc
+++ b/libs/ardour/globals.cc
@@ -561,7 +561,7 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir
ARDOUR::AudioEngine::create ();
- /* This will run only once in whatever thread calls AudioEngine::start() */
+ /* This will run in whatever thread calls AudioEngine::start() */
ARDOUR::AudioEngine::instance()->Running.connect_same_thread (engine_startup_connection, ARDOUR::init_post_engine);
/* it is unfortunate that we need to include reserved names here that
@@ -599,39 +599,30 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir
}
void
-ARDOUR::init_post_engine (uint32_t /* ignored */)
+ARDOUR::init_post_engine (uint32_t start_cnt)
{
XMLNode* node;
- if ((node = Config->control_protocol_state()) != 0) {
- ControlProtocolManager::instance().set_state (*node, 0 /* here: global-config state */);
- }
+ std::cerr << "Engine stated, libardour inits, cnt = " << start_cnt << std::endl;
- if ((node = Config->transport_master_state()) != 0) {
- if (TransportMasterManager::instance().set_state (*node, Stateful::loading_state_version)) {
- error << _("Cannot restore transport master manager") << endmsg;
- /* XXX now what? */
- }
- } else {
- if (TransportMasterManager::instance().set_default_configuration ()) {
- error << _("Cannot initialize transport master manager") << endmsg;
- /* XXX now what? */
- }
- }
+ if (start_cnt == 0) {
- /* find plugins */
+ /* find plugins */
- ARDOUR::PluginManager::instance().refresh (!Config->get_discover_vst_on_start());
+ ARDOUR::PluginManager::instance().refresh (!Config->get_discover_vst_on_start());
+ }
- /* Don't do this again - we are only meant to execute on the first
- * engine start, not any subsequence starts
- */
+ if ((node = Config->control_protocol_state()) != 0) {
+ ControlProtocolManager::instance().set_state (*node, 0 /* here: global-config state */);
+ }
- engine_startup_connection.disconnect ();
+ if (start_cnt == 0) {
+ TransportMasterManager::instance().restart ();
+ }
}
void
- ARDOUR::cleanup ()
+ARDOUR::cleanup ()
{
if (!libardour_initialized) {
return;