daemon: register virtualizer graph connection handlers for rooms

This commit is contained in:
Nedko Arnaudov 2010-04-05 04:18:24 +03:00
parent 58db7cba75
commit c78c4c6483
4 changed files with 35 additions and 6 deletions

View File

@ -966,6 +966,7 @@ ladish_graph_set_connection_handlers(
ladish_graph_connect_request_handler connect_handler,
ladish_graph_disconnect_request_handler disconnect_handler)
{
log_info("setting connection handlers for graph '%s'", graph_ptr->opath != NULL ? graph_ptr->opath : "JACK");
graph_ptr->context = graph_context;
graph_ptr->connect_handler = connect_handler;
graph_ptr->disconnect_handler = disconnect_handler;

View File

@ -226,6 +226,16 @@ static void emit_room_disappeared(ladish_room_handle room)
dbus_message_unref(message_ptr);
}
bool
set_graph_connection_handlers(
void * context,
ladish_graph_handle graph,
ladish_app_supervisor_handle app_supervisor)
{
ladish_virtualizer_set_graph_connection_handlers(context, graph);
return true; /* iterate all graphs */
}
void on_event_jack_started(void)
{
if (!studio_fetch_jack_settings())
@ -244,10 +254,14 @@ void on_event_jack_started(void)
}
else
{
if (!ladish_virtualizer_create(g_studio.jack_graph_proxy, g_studio.jack_graph, g_studio.studio_graph, &g_studio.virtualizer))
if (!ladish_virtualizer_create(g_studio.jack_graph_proxy, g_studio.jack_graph, &g_studio.virtualizer))
{
log_error("ladish_virtualizer_create() failed.");
}
else
{
studio_iterate_virtual_graphs(g_studio.virtualizer, set_graph_connection_handlers);
}
if (!graph_proxy_activate(g_studio.jack_graph_proxy))
{
@ -950,6 +964,11 @@ static void ladish_studio_create_room(struct dbus_method_call * call_ptr)
goto fail_decrement_room_count;
}
if (g_studio.virtualizer != NULL)
{
ladish_virtualizer_set_graph_connection_handlers(g_studio.virtualizer, ladish_room_get_graph(room));
}
ladish_room_get_uuid(room, room_uuid);
if (!ladish_client_create(room_uuid, &room_client))

View File

@ -801,7 +801,6 @@ bool
ladish_virtualizer_create(
graph_proxy_handle jack_graph_proxy,
ladish_graph_handle jack_graph,
ladish_graph_handle studio_graph,
ladish_virtualizer_handle * handle_ptr)
{
struct virtualizer * virtualizer_ptr;
@ -835,14 +834,20 @@ ladish_virtualizer_create(
return false;
}
ladish_graph_set_connection_handlers(studio_graph, virtualizer_ptr, ports_connect_request, ports_disconnect_request);
*handle_ptr = (ladish_virtualizer_handle)virtualizer_ptr;
return true;
}
#define virtualizer_ptr ((struct virtualizer *)handle)
void
ladish_virtualizer_set_graph_connection_handlers(
ladish_virtualizer_handle handle,
ladish_graph_handle graph)
{
ladish_graph_set_connection_handlers(graph, virtualizer_ptr, ports_connect_request, ports_disconnect_request);
}
unsigned int
ladish_virtualizer_get_our_clients_count(
ladish_virtualizer_handle handle)

View File

@ -2,7 +2,7 @@
/*
* LADI Session Handler (ladish)
*
* Copyright (C) 2009 Nedko Arnaudov <nedko@arnaudov.name>
* Copyright (C) 2009, 2010 Nedko Arnaudov <nedko@arnaudov.name>
*
**************************************************************************
* This file contains interface to graph dispatcher object
@ -37,9 +37,13 @@ bool
ladish_virtualizer_create(
graph_proxy_handle jack_graph_proxy,
ladish_graph_handle jack_graph,
ladish_graph_handle studio_graph,
ladish_virtualizer_handle * handle_ptr);
void
ladish_virtualizer_set_graph_connection_handlers(
ladish_virtualizer_handle handle,
ladish_graph_handle graph);
unsigned int
ladish_virtualizer_get_our_clients_count(
ladish_virtualizer_handle handle);