Better start up
Don't reply to nsm server until ardour project is finished loading
This commit is contained in:
parent
81a343ff7f
commit
2806828962
|
@ -666,11 +666,27 @@ ARDOUR_UI::startup ()
|
|||
if (!nsm->init (nsm_url)) {
|
||||
nsm->announce (PROGRAM_NAME, ":dirty:", "ardour3");
|
||||
|
||||
// wait for announce reply from nsm server
|
||||
do {
|
||||
nsm->check ();
|
||||
usleep (10);
|
||||
} while (!nsm->is_active ());
|
||||
// wait for open command from nsm server
|
||||
do {
|
||||
nsm->check ();
|
||||
usleep (10);
|
||||
} while (!nsm->client_id ());
|
||||
|
||||
if (_session && nsm) {
|
||||
_session->set_nsm_state( nsm->is_active() );
|
||||
}
|
||||
|
||||
// wait for session is loaded reply from nsm server
|
||||
do {
|
||||
nsm->check ();
|
||||
usleep (10);
|
||||
} while (!nsm->session_loaded ());
|
||||
|
||||
}
|
||||
else {
|
||||
delete nsm;
|
||||
|
@ -678,13 +694,10 @@ ARDOUR_UI::startup ()
|
|||
}
|
||||
}
|
||||
|
||||
if (get_session_parameters (true, ARDOUR_COMMAND_LINE::new_session, ARDOUR_COMMAND_LINE::load_template)) {
|
||||
else if (get_session_parameters (true, ARDOUR_COMMAND_LINE::new_session, ARDOUR_COMMAND_LINE::load_template)) {
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if (_session && nsm) {
|
||||
_session->set_nsm_state( true );
|
||||
}
|
||||
use_config ();
|
||||
|
||||
goto_editor_window ();
|
||||
|
@ -951,7 +964,7 @@ ARDOUR_UI::every_second ()
|
|||
update_disk_space ();
|
||||
update_timecode_format ();
|
||||
|
||||
if (nsm) {
|
||||
if (nsm && nsm->is_active () && nsm->session_loaded ()) {
|
||||
nsm->check ();
|
||||
|
||||
if (!_was_dirty && _session->dirty ()) {
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
NSM_Client::NSM_Client()
|
||||
{
|
||||
_session_loaded = false;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -49,9 +50,18 @@ NSM_Client::command_open(const char *name,
|
|||
{
|
||||
int r = ERR_OK;
|
||||
|
||||
ARDOUR_COMMAND_LINE::new_session = false;
|
||||
ARDOUR_COMMAND_LINE::session_name = name;
|
||||
ARDOUR_COMMAND_LINE::jack_client_name = client_id;
|
||||
ARDOUR_COMMAND_LINE::no_connect_ports = true;
|
||||
|
||||
if (ARDOUR_UI::instance()->get_session_parameters(true, false, "")) {
|
||||
return ERR_GENERAL;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
void
|
||||
NSM_Client::command_session_is_loaded ( void )
|
||||
{
|
||||
_session_loaded = true;
|
||||
}
|
||||
|
|
|
@ -28,12 +28,17 @@ 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);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue