daemon: iterate studio graphs instead of app supervisors
The callback has both app supervisor and graph parameters. The graph parameter is needed so virtualizer can know where to add clients/ports
This commit is contained in:
parent
496f8712e2
commit
3e5b69c481
|
@ -511,6 +511,7 @@ static
|
|||
bool
|
||||
studio_on_child_exit_callback(
|
||||
void * context,
|
||||
ladish_graph_handle graph,
|
||||
ladish_app_supervisor_handle app_supervisor)
|
||||
{
|
||||
child_exit_context_ptr->found = ladish_app_supervisor_child_exit(app_supervisor, child_exit_context_ptr->pid);
|
||||
|
@ -528,7 +529,7 @@ void studio_on_child_exit(pid_t pid)
|
|||
context.pid = pid;
|
||||
context.found = false;
|
||||
|
||||
studio_iterate_app_supervisors(&context, studio_on_child_exit_callback);
|
||||
studio_iterate_virtual_graphs(&context, studio_on_child_exit_callback);
|
||||
|
||||
if (!context.found)
|
||||
{
|
||||
|
@ -708,17 +709,19 @@ exit:
|
|||
}
|
||||
|
||||
bool
|
||||
studio_iterate_app_supervisors(
|
||||
studio_iterate_virtual_graphs(
|
||||
void * context,
|
||||
bool (* callback)(
|
||||
void * context,
|
||||
ladish_graph_handle graph,
|
||||
ladish_app_supervisor_handle app_supervisor))
|
||||
{
|
||||
struct list_head * node_ptr;
|
||||
ladish_room_handle room;
|
||||
ladish_app_supervisor_handle room_app_supervisor;
|
||||
ladish_graph_handle room_graph;
|
||||
|
||||
if (!callback(context, g_studio.app_supervisor))
|
||||
if (!callback(context, g_studio.studio_graph, g_studio.app_supervisor))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -728,8 +731,9 @@ studio_iterate_app_supervisors(
|
|||
room = ladish_room_from_list_node(node_ptr);
|
||||
room_app_supervisor = ladish_room_get_app_supervisor(room);
|
||||
ASSERT(room_app_supervisor != NULL);
|
||||
room_graph = ladish_room_get_graph(room);
|
||||
|
||||
if (!callback(context, room_app_supervisor))
|
||||
if (!callback(context, room_graph, room_app_supervisor))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -738,7 +742,7 @@ studio_iterate_app_supervisors(
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool studio_stop_app_supervisor(void * context, ladish_app_supervisor_handle app_supervisor)
|
||||
static bool studio_stop_app_supervisor(void * context, ladish_graph_handle graph, ladish_app_supervisor_handle app_supervisor)
|
||||
{
|
||||
ladish_app_supervisor_stop(app_supervisor);
|
||||
return true; /* iterate all supervisors */
|
||||
|
@ -746,7 +750,7 @@ static bool studio_stop_app_supervisor(void * context, ladish_app_supervisor_han
|
|||
|
||||
void studio_stop_app_supervisors(void)
|
||||
{
|
||||
studio_iterate_app_supervisors(NULL, studio_stop_app_supervisor);
|
||||
studio_iterate_virtual_graphs(NULL, studio_stop_app_supervisor);
|
||||
}
|
||||
|
||||
void emit_studio_renamed()
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#define STUDIO_H__0BEDE85E_4FB3_4D74_BC08_C373A22409C0__INCLUDED
|
||||
|
||||
#include "app_supervisor.h"
|
||||
#include "graph.h"
|
||||
|
||||
bool studio_init(void);
|
||||
void studio_uninit(void);
|
||||
|
@ -40,10 +41,11 @@ bool studio_delete(void * call_ptr, const char * studio_name);
|
|||
void studio_on_child_exit(pid_t pid);
|
||||
|
||||
bool
|
||||
studio_iterate_app_supervisors(
|
||||
studio_iterate_virtual_graphs(
|
||||
void * context,
|
||||
bool (* callback)(
|
||||
void * context,
|
||||
ladish_graph_handle graph,
|
||||
ladish_app_supervisor_handle app_supervisor));
|
||||
|
||||
void studio_stop_app_supervisors(void);
|
||||
|
|
|
@ -61,7 +61,7 @@ struct app_find_context
|
|||
|
||||
#define app_find_context_ptr ((struct app_find_context *)context)
|
||||
|
||||
bool get_app_name_from_supervisor(void * context, ladish_app_supervisor_handle app_supervisor)
|
||||
bool get_app_name_from_supervisor(void * context, ladish_graph_handle graph, ladish_app_supervisor_handle app_supervisor)
|
||||
{
|
||||
pid_t pid;
|
||||
char * app_name;
|
||||
|
@ -114,7 +114,7 @@ char * get_app_name(struct virtualizer * virtualizer_ptr, uint64_t client_id, pi
|
|||
context.pid = (pid_t)pid;
|
||||
context.app_name = NULL;
|
||||
|
||||
studio_iterate_app_supervisors(&context, get_app_name_from_supervisor);
|
||||
studio_iterate_virtual_graphs(&context, get_app_name_from_supervisor);
|
||||
|
||||
if (context.app_name != NULL)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue