|
|
@@ -1277,7 +1277,7 @@ close_session ( ) |
|
|
|
|
|
|
|
if ( gui_is_active ) |
|
|
|
{ |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", "", "" ); |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", "", "" ); //Empty string = no current session |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -1466,9 +1466,8 @@ load_session_file ( const char * path ) |
|
|
|
if ( gui_is_active ) |
|
|
|
{ //This is not the case when --load-session was used. GUI announce will come later. |
|
|
|
|
|
|
|
//Send two parameters to signal that the session was loaded. First is the direct session name, |
|
|
|
//second is the full filepath. |
|
|
|
//See function announce_gui for a full description where /nsm/gui/session/name is also send from |
|
|
|
//Send two parameters to signal that the session was loaded: simple session-name, relative session path below session root |
|
|
|
DMESSAGE( "Informing GUI about running session name: %s with relative path %s", session_name, session_path + strlen( session_root ) ); |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", session_name, session_path + strlen( session_root )); |
|
|
|
} |
|
|
|
|
|
|
@@ -1663,7 +1662,9 @@ OSC_HANDLER( new ) |
|
|
|
{ |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/session", &argv[0]->s ); |
|
|
|
|
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", &argv[0]->s, &argv[0]->s ); |
|
|
|
//Send two parameters to signal that the session was loaded: simple session-name, relative session path below session root |
|
|
|
DMESSAGE( "Informing GUI about running session name: %s with relative path %s", session_name, session_path + strlen( session_root ) ); |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", session_name, session_path + strlen( session_root )); |
|
|
|
} |
|
|
|
|
|
|
|
save_session_file(); |
|
|
@@ -2294,32 +2295,45 @@ announce_gui( const char *url, bool is_reply ) |
|
|
|
//The server was started directly and instructed to connect to a running GUI. |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/server_announce", "hi" ); |
|
|
|
|
|
|
|
//The session root is not inluced in /nsm/gui/session/name |
|
|
|
//For the general information we need to send this message: |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/root", session_root ); |
|
|
|
|
|
|
|
// Send a list of clients to the newly registered GUI in case there was already a session open |
|
|
|
MESSAGE ( "Informing GUI about %li already running clients", client.size() ); |
|
|
|
for ( std::list<Client*>::iterator i = client.begin(); |
|
|
|
i != client.end(); |
|
|
|
++i ) |
|
|
|
|
|
|
|
|
|
|
|
//Send session name and relative path. If both are empty it signals that no session is currently open, |
|
|
|
//which is the default state if a GUI started nsmd. |
|
|
|
//No session_path without session_name. We only need to test for session_name. |
|
|
|
if ( !session_name || session_name[0] == '\0' ) |
|
|
|
{ |
|
|
|
Client *c = *i; |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/new", c->client_id, c->executable_path ); // we send new twice. see announce() comment |
|
|
|
if ( c->status ) |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status ); |
|
|
|
if ( c->is_capable_of( ":optional-gui:" ) ) |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/has_optional_gui", c->client_id ); |
|
|
|
if ( c->label() ) // could be NULL |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, c->label() ); |
|
|
|
if ( c->active ) |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/new", c->client_id, c->name ); // upgrade to pretty-name |
|
|
|
DMESSAGE( "Informing GUI that no session is running by sending two empty strings" ); |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", "", "" ); //Empty string = no current session |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
// Send a list of clients to the newly registered GUI in case there was already a session open |
|
|
|
// First clients, then session name was original nsmd order. |
|
|
|
// We keep it that way, the only change is that we made even the attempt dependent on a running session. |
|
|
|
MESSAGE ( "Informing GUI about %li already running clients", client.size() ); |
|
|
|
for ( std::list<Client*>::iterator i = client.begin(); |
|
|
|
i != client.end(); |
|
|
|
++i ) |
|
|
|
{ |
|
|
|
Client *c = *i; |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/new", c->client_id, c->executable_path ); // we send new twice. see announce() comment |
|
|
|
if ( c->status ) |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status ); |
|
|
|
if ( c->is_capable_of( ":optional-gui:" ) ) |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/has_optional_gui", c->client_id ); |
|
|
|
if ( c->label() ) // could be NULL |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, c->label() ); |
|
|
|
if ( c->active ) |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/new", c->client_id, c->name ); // upgrade to pretty-name |
|
|
|
} |
|
|
|
|
|
|
|
//Send two parameters. The first one is the short session name, which is the directory name. |
|
|
|
//The second parameter is the full file path. |
|
|
|
//If both are empty it signals that no session is currently open, which is the default state if |
|
|
|
//a GUI started nsmd. |
|
|
|
DMESSAGE( "Informing GUI about potentially running session name: %s", session_name ); |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", session_name ? session_name : "", session_path ? session_path : "" ); |
|
|
|
DMESSAGE( "Informing GUI about running session name: %s with relative path %s", session_name, session_path + strlen( session_root ) ); |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", session_name, session_path + strlen( session_root )); |
|
|
|
} |
|
|
|
|
|
|
|
DMESSAGE( "Registration with GUI complete\n" ); |
|
|
|
} |
|
|
|