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_connect_request_handler connect_handler,
ladish_graph_disconnect_request_handler disconnect_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->context = graph_context;
graph_ptr->connect_handler = connect_handler; graph_ptr->connect_handler = connect_handler;
graph_ptr->disconnect_handler = disconnect_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); 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) void on_event_jack_started(void)
{ {
if (!studio_fetch_jack_settings()) if (!studio_fetch_jack_settings())
@ -244,10 +254,14 @@ void on_event_jack_started(void)
} }
else 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."); 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)) 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; 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); ladish_room_get_uuid(room, room_uuid);
if (!ladish_client_create(room_uuid, &room_client)) if (!ladish_client_create(room_uuid, &room_client))

View File

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

View File

@ -2,7 +2,7 @@
/* /*
* LADI Session Handler (ladish) * 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 * This file contains interface to graph dispatcher object
@ -37,9 +37,13 @@ bool
ladish_virtualizer_create( ladish_virtualizer_create(
graph_proxy_handle jack_graph_proxy, graph_proxy_handle jack_graph_proxy,
ladish_graph_handle jack_graph, ladish_graph_handle jack_graph,
ladish_graph_handle studio_graph,
ladish_virtualizer_handle * handle_ptr); ladish_virtualizer_handle * handle_ptr);
void
ladish_virtualizer_set_graph_connection_handlers(
ladish_virtualizer_handle handle,
ladish_graph_handle graph);
unsigned int unsigned int
ladish_virtualizer_get_our_clients_count( ladish_virtualizer_get_our_clients_count(
ladish_virtualizer_handle handle); ladish_virtualizer_handle handle);