From 1cdc62416db719dea429eae4425b51a957f2664c Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Sun, 26 Feb 2012 18:09:04 -0800 Subject: [PATCH] NSM: Don't forget to inform GUI of the removal of stopped clients when closing a session. --- session/src/nsmd.C | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/session/src/nsmd.C b/session/src/nsmd.C index f1d881f..554c9d3 100644 --- a/session/src/nsmd.C +++ b/session/src/nsmd.C @@ -246,22 +246,23 @@ handle_client_process_death ( int pid ) c->pending_command = COMMAND_NONE; - if ( gui_is_active ) - { - if ( ! c->dead_because_we_said ) - osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "stopped" ); - else - osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "removed" ); - } - c->active = false; c->pid = 0; if ( c->dead_because_we_said ) { + if ( gui_is_active ) + osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "removed" ); + client.remove( c ); + delete c; } + else + { + if ( gui_is_active ) + osc_server->send( gui_addr, "/nsm/gui/client/status", c->client_id, c->status = "stopped" ); + } } } @@ -583,7 +584,11 @@ purge_inactive_clients ( ) { if ( ! (*i)->active ) { + if ( gui_is_active ) + osc_server->send( gui_addr, "/nsm/gui/client/status", (*i)->client_id, (*i)->status = "removed" ); + delete *i; + i = client.erase( i ); } }