From 992fe3adebe9e317287fafc72e603c4c03afd428 Mon Sep 17 00:00:00 2001 From: Roy Vegard Ovesen Date: Tue, 2 Apr 2013 20:33:39 +0200 Subject: [PATCH 1/3] Don't wait for session_is_loaded from nsm server --- gtk2_ardour/ardour_ui.cc | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index f21817c29d..084f7923d1 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -698,12 +698,6 @@ ARDOUR_UI::startup () } } - // wait for session is loaded reply from nsm server - do { - nsm->check (); - usleep (10); - } while (!nsm->session_loaded ()); - } else { delete nsm; @@ -981,7 +975,7 @@ ARDOUR_UI::every_second () update_disk_space (); update_timecode_format (); - if (nsm && nsm->is_active () && nsm->session_loaded ()) { + if (nsm && nsm->is_active ()) { nsm->check (); if (!_was_dirty && _session->dirty ()) { From d94a3c2bd0feba40814417d5aeb9d4aa6b9ff32d Mon Sep 17 00:00:00 2001 From: Roy Vegard Ovesen Date: Tue, 2 Apr 2013 21:25:27 +0200 Subject: [PATCH 2/3] Forgot to clean up nsm.* in previous commit --- gtk2_ardour/nsm.cc | 7 ------- gtk2_ardour/nsm.h | 5 ----- 2 files changed, 12 deletions(-) diff --git a/gtk2_ardour/nsm.cc b/gtk2_ardour/nsm.cc index 09449c5630..7c5fcfbf6e 100644 --- a/gtk2_ardour/nsm.cc +++ b/gtk2_ardour/nsm.cc @@ -28,7 +28,6 @@ NSM_Client::NSM_Client() { - _session_loaded = false; } int @@ -59,9 +58,3 @@ NSM_Client::command_open(const char *name, } return r; } - -void -NSM_Client::command_session_is_loaded ( void ) -{ - _session_loaded = true; -} diff --git a/gtk2_ardour/nsm.h b/gtk2_ardour/nsm.h index a2b0c11151..5491e1985f 100644 --- a/gtk2_ardour/nsm.h +++ b/gtk2_ardour/nsm.h @@ -28,17 +28,12 @@ class NSM_Client:public NSM::Client NSM_Client(); ~NSM_Client() { } - bool session_loaded(void) { return _session_loaded; } - protected: - bool _session_loaded; - int command_open(const char *name, const char *display_name, const char *client_id, char **out_msg); int command_save(char **out_msg); - void command_session_is_loaded (void); }; From 810a603fb2afa0a3be3e7154886e0ebe9824b93b Mon Sep 17 00:00:00 2001 From: Roy Vegard Ovesen Date: Wed, 3 Apr 2013 16:18:42 +0200 Subject: [PATCH 3/3] Prevent infinite loops --- gtk2_ardour/ardour_ui.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 084f7923d1..e41d077284 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -666,16 +666,21 @@ ARDOUR_UI::startup () if (!nsm->init (nsm_url)) { nsm->announce (PROGRAM_NAME, ":dirty:", "ardour3"); + unsigned int i = 0; // wait for announce reply from nsm server - do { + for ( i = 0; i < 5000; ++i) { nsm->check (); - usleep (10); - } while (!nsm->is_active ()); + usleep (i); + if (nsm->is_active()) + break; + } // wait for open command from nsm server - do { + for ( i = 0; i < 5000; ++i) { nsm->check (); - usleep (10); - } while (!nsm->client_id ()); + usleep (1000); + if (nsm->client_id ()) + break; + } if (_session && nsm) { _session->set_nsm_state( nsm->is_active() );