|
|
@@ -1343,6 +1343,9 @@ load_session_file ( const char * path ) |
|
|
|
|
|
|
|
if ( gui_is_active ) |
|
|
|
{ |
|
|
|
//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 |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", session_name, session_path + strlen( session_root )); |
|
|
|
} |
|
|
|
|
|
|
@@ -1592,8 +1595,8 @@ OSC_HANDLER( list ) |
|
|
|
// osc_server->send( lo_message_get_source( msg ), path, ERR_OK, "Done." ); |
|
|
|
|
|
|
|
// As marker that all sessions were sent reply with an empty string, which is impossible to conflict with a session name |
|
|
|
osc_server->send( list_response_address, "/reply", "/nsm/server/list", "" ); |
|
|
|
|
|
|
|
osc_server->send( list_response_address, "/reply", "/nsm/server/list", "" ); |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
@@ -2149,16 +2152,23 @@ OSC_HANDLER( client_hide_optional_gui ) |
|
|
|
void |
|
|
|
announce_gui( const char *url, bool is_reply ) |
|
|
|
{ |
|
|
|
// This is send for a new and empty nsmd as well as already running, headless, ones. |
|
|
|
// If a GUI connects to an existing server with a running session this will trigger a list of |
|
|
|
// clients send to the new GUI. |
|
|
|
|
|
|
|
gui_addr = lo_address_new_from_url( url ); |
|
|
|
gui_is_active = true; |
|
|
|
gui_is_active = true; //global state |
|
|
|
|
|
|
|
if ( is_reply ) |
|
|
|
// the default case. A GUI starts its own nsmd or connects to a running one |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/gui_announce", "hi" ); |
|
|
|
else |
|
|
|
//The server was started directly and instructed to connect to a running GUI. |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/server_announce", "hi" ); |
|
|
|
|
|
|
|
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 |
|
|
|
for ( std::list<Client*>::iterator i = client.begin(); |
|
|
|
i != client.end(); |
|
|
|
++i ) |
|
|
@@ -2167,9 +2177,12 @@ announce_gui( const char *url, bool is_reply ) |
|
|
|
|
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/new", c->client_id, c->name ); |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status ); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//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. |
|
|
|
osc_server->send( gui_addr, "/nsm/gui/session/name", session_name ? session_name : "", session_path ? session_path : "" ); |
|
|
|
|
|
|
|
DMESSAGE( "Registered with GUI" ); |
|
|
@@ -2310,6 +2323,7 @@ int main(int argc, char *argv[]) |
|
|
|
|
|
|
|
if ( gui_url ) |
|
|
|
{ |
|
|
|
//The server was started directly and instructed to connect to a running GUI. |
|
|
|
announce_gui( gui_url, false ); |
|
|
|
} |
|
|
|
|
|
|
|