daemon: when unloading remove all app clients

The clear persist approach does not work for stopped apps
because their clients and ports dont disappear during project unload.
This commit is contained in:
Nedko Arnaudov 2010-09-05 23:08:03 +03:00
parent e94e85da23
commit efce106a23
1 changed files with 21 additions and 2 deletions

View File

@ -633,6 +633,22 @@ ladish_room_app_is_stopped(
return true;
}
static
bool
ladish_remove_room_app(
void * context,
const char * name,
bool running,
const char * command,
bool terminal,
uint8_t level,
pid_t pid,
const uuid_t uuid)
{
ladish_virtualizer_remove_app(ladish_studio_get_jack_graph(), uuid, name);
return true;
}
bool ladish_room_unload_project(ladish_room_handle room_handle)
{
if (!room_ptr->project_unloading)
@ -645,7 +661,7 @@ bool ladish_room_unload_project(ladish_room_handle room_handle)
log_info("Stopping room apps...");
ladish_graph_dump(room_ptr->graph);
room_ptr->project_unloading = true;
ladish_graph_clear_persist(room_ptr->graph);
//ladish_graph_clear_persist(room_ptr->graph);
ladish_app_supervisor_stop(room_ptr->app_supervisor);
return false;
}
@ -655,10 +671,13 @@ bool ladish_room_unload_project(ladish_room_handle room_handle)
return false;
}
/* remove app clients, ports and connections */
ladish_app_supervisor_enum(room_ptr->app_supervisor, room_ptr, ladish_remove_room_app);
ladish_app_supervisor_clear(room_ptr->app_supervisor);
ASSERT(!ladish_app_supervisor_has_apps(room_ptr->app_supervisor));
ladish_graph_set_persist(room_ptr->graph);
//ladish_graph_set_persist(room_ptr->graph);
log_info("Room apps stopped.");
ladish_graph_dump(room_ptr->graph);