master merge; new files not added after initial cairocanvas patch application
[ardour.git] / gtk2_ardour / ardour_ui.cc
index 4c1be5f674de643db0aa01ea58ca05cf5d9b47b1..1022acee2d082440387188ea2e9cb84edfa2d834 100644 (file)
@@ -660,22 +660,28 @@ ARDOUR_UI::startup ()
        app->ready ();
 
        nsm_url = getenv ("NSM_URL");
+       nsm = 0;
 
        if (nsm_url) {
                nsm = new NSM_Client;
                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() );
@@ -698,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;
@@ -981,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 ()) {