diff --git a/daemon/graph.c b/daemon/graph.c index 4dc98eb9..60e7066c 100644 --- a/daemon/graph.c +++ b/daemon/graph.c @@ -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; diff --git a/daemon/studio.c b/daemon/studio.c index 452a856b..d1ea495a 100644 --- a/daemon/studio.c +++ b/daemon/studio.c @@ -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)) diff --git a/daemon/virtualizer.c b/daemon/virtualizer.c index cf3becff..e480bd1c 100644 --- a/daemon/virtualizer.c +++ b/daemon/virtualizer.c @@ -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) diff --git a/daemon/virtualizer.h b/daemon/virtualizer.h index 2e474bdc..3d4357b0 100644 --- a/daemon/virtualizer.h +++ b/daemon/virtualizer.h @@ -2,7 +2,7 @@ /* * LADI Session Handler (ladish) * - * Copyright (C) 2009 Nedko Arnaudov + * Copyright (C) 2009, 2010 Nedko Arnaudov * ************************************************************************** * 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);