| @@ -362,21 +362,23 @@ handle_client_process_death ( int pid ) | |||
| } | |||
| else | |||
| { | |||
| if ( c->launch_error ) | |||
| /* NSM API treats the stopped status as switch. You can only remove stopped. | |||
| * Furthermore the GUI will change its client-buttons. | |||
| * In consequence we cannot add an arbitrary "launch-error" status. | |||
| * Compatible compromise is to use the label field to relay info the user, | |||
| * which was the goal. There is nothing we can do about a failed launch anyway. | |||
| */ | |||
| c->label( "launch error!" ); | |||
| else | |||
| c->label( "" ); | |||
| c->status = "stopped"; | |||
| if ( gui_is_active ) | |||
| { | |||
| osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, c->label() ); | |||
| osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status ); | |||
| if ( c->launch_error ) | |||
| { | |||
| /* NSM API treats the stopped status as switch. You can only remove stopped. | |||
| * Furthermore the GUI will change its client-buttons. | |||
| * In consequence we cannot add an arbitrary "launch-error" status. | |||
| * Compatible compromise is to use the label field to relay info the user, | |||
| * which was the goal. There is nothing we can do about a failed launch anyway. | |||
| */ | |||
| GUIMSG("Client %s had a launch error.", c->name_with_id); | |||
| osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, "launch error!" ); //do not set the client objects label. | |||
| } | |||
| } | |||
| } | |||
| @@ -740,7 +742,6 @@ launch ( const char *executable, const char *client_id ) | |||
| //At this point we do not know if launched program will start or fail | |||
| //And we do not know if it has nsm-support or not. This will be decided if it announces. | |||
| osc_server->send( gui_addr, "/nsm/gui/client/new", c->client_id, c->name ); | |||
| osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, "" ); //clear label from potential previous-and-fixed launch error | |||
| osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status ); | |||
| } | |||
| @@ -2061,9 +2062,8 @@ OSC_HANDLER( label ) | |||
| return -1; | |||
| c->label( &argv[0]->s ); | |||
| if ( gui_is_active ) | |||
| osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, &argv[0]->s ); | |||
| osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, c->label() ); | |||
| return 0; | |||
| } | |||
| @@ -2289,6 +2289,7 @@ announce_gui( const char *url, bool is_reply ) | |||
| 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 ); | |||
| osc_server->send( gui_addr, "/nsm/gui/client/label", c->client_id, c->label() ); | |||
| } | |||