daemon: on studio stop, wait apps to finish before stopping jack server. Fix for #24

This commit is contained in:
Nedko Arnaudov 2009-12-12 01:41:20 +02:00
parent 27c9709164
commit 58be0887f5
3 changed files with 32 additions and 1 deletions

View File

@ -28,9 +28,11 @@
#include "cmd.h"
#include "studio_internal.h"
#include "loader.h"
#define STOP_STATE_WAITING_FOR_JACK_CLIENTS_DISAPPEAR 1
#define STOP_STATE_WAITING_FOR_JACK_SERVER_STOP 2
#define STOP_STATE_WAITING_FOR_CHILDS_TERMINATION 2
#define STOP_STATE_WAITING_FOR_JACK_SERVER_STOP 3
struct ladish_command_stop_studio
{
@ -75,6 +77,18 @@ static bool run(void * context)
return true;
}
cmd_ptr->stop_state = STOP_STATE_WAITING_FOR_CHILDS_TERMINATION;
}
if (cmd_ptr->stop_state == STOP_STATE_WAITING_FOR_CHILDS_TERMINATION)
{
clients_count = loader_get_app_count();
log_info("%u child processes are running", clients_count);
if (clients_count != 0)
{
return true;
}
log_info("Stopping JACK server...");
ladish_graph_dump(g_studio.studio_graph);

View File

@ -564,3 +564,18 @@ free_struct:
fail:
return false;
}
unsigned int loader_get_app_count(void)
{
struct list_head * node_ptr;
unsigned int count;
count = 0;
list_for_each(node_ptr, &g_childs_list)
{
count++;
}
return count;
}

View File

@ -42,4 +42,6 @@ void loader_run(void);
void loader_uninit(void);
unsigned int loader_get_app_count(void);
#endif /* __LASHD_LOADER_H__ */