Merge branch 'nsm' of https://github.com/royvegard/ardour
[ardour.git] / gtk2_ardour / ardour_ui.cc
index cdf8099fd04b03e46da226f0c2a7f9235431621e..ac7e493fe3815e432094adfb1a5be901cad09bfa 100644 (file)
@@ -667,16 +667,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() );
@@ -699,12 +704,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;
@@ -982,7 +981,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 ()) {