From 1c5c9f28e2516a54882d96012ff95cddf38251eb Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Tue, 11 Aug 2009 15:31:33 +0300 Subject: [PATCH] move /gui/graph to /graph_proxy; [re]move duplicate code from jack_proxy --- daemon/jack.c | 73 +---------- gui/graph.c => graph_proxy.c | 43 +++++-- gui/graph.h => graph_proxy.h | 0 gui/graph_canvas.h | 2 +- jack_proxy.c | 234 +---------------------------------- jack_proxy.h | 57 +-------- wscript | 17 ++- 7 files changed, 58 insertions(+), 368 deletions(-) rename gui/graph.c => graph_proxy.c (95%) rename gui/graph.h => graph_proxy.h (100%) diff --git a/daemon/jack.c b/daemon/jack.c index 014beabf..b8ad1e75 100644 --- a/daemon/jack.c +++ b/daemon/jack.c @@ -29,59 +29,6 @@ #include "studio.h" #include "dbus_iface_control.h" -void -on_jack_client_appeared( - uint64_t client_id, - const char * client_name) -{ - lash_info("JACK client appeared."); -} - -void -on_jack_client_disappeared( - uint64_t client_id) -{ - lash_info("JACK client disappeared."); -} - -void -on_jack_port_appeared( - uint64_t client_id, - uint64_t port_id, - const char * port_name) -{ - lash_info("JACK port appeared."); -} - -void -on_jack_port_disappeared( - uint64_t client_id, - uint64_t port_id, - const char * port_name) -{ - lash_info("JACK port disappeared."); -} - -void -on_jack_ports_connected( - uint64_t client1_id, - uint64_t port1_id, - uint64_t client2_id, - uint64_t port2_id) -{ - lash_info("JACK ports connected."); -} - -void -on_jack_ports_disconnected( - uint64_t client1_id, - uint64_t port1_id, - uint64_t client2_id, - uint64_t port2_id) -{ - lash_info("JACK ports disconnected."); -} - void on_jack_server_started( void) @@ -159,25 +106,15 @@ jack_init( { bool started; - if (!jack_proxy_init()) + if (!jack_proxy_init( + on_jack_server_started, + on_jack_server_stopped, + on_jack_server_appeared, + on_jack_server_disappeared)) { return false; } - jack_proxy_set_server_callbacks( - on_jack_server_started, - on_jack_server_stopped, - on_jack_server_appeared, - on_jack_server_disappeared); - - jack_proxy_set_patchbay_callbacks( - on_jack_client_appeared, - on_jack_client_disappeared, - on_jack_port_appeared, - on_jack_port_disappeared, - on_jack_ports_connected, - on_jack_ports_disconnected); - if (jack_proxy_is_started(&started) && started) { on_jack_server_started(); diff --git a/gui/graph.c b/graph_proxy.c similarity index 95% rename from gui/graph.c rename to graph_proxy.c index 26c5bdf3..1b920ede 100644 --- a/gui/graph.c +++ b/graph_proxy.c @@ -29,10 +29,10 @@ #include #include "common.h" -#include "graph.h" -#include "../common/klist.h" -#include "../common/debug.h" -#include "../dbus/helpers.h" +#include "graph_proxy.h" +#include "common/klist.h" +#include "common/debug.h" +#include "dbus/helpers.h" #define JACKDBUS_IFACE_PATCHBAY "org.jackaudio.JackPatchbay" @@ -363,6 +363,17 @@ graph_create( graph_handle * graph_handle_ptr) { struct graph * graph_ptr; + char rule[1024]; + const char ** signal; + + const char * patchbay_signals[] = { + "ClientAppeared", + "ClientDisappeared", + "PortAppeared", + "PortDisappeared", + "PortsConnected", + "PortsDisconnected", + NULL}; graph_ptr = malloc(sizeof(struct graph)); if (graph_ptr == NULL) @@ -389,12 +400,24 @@ graph_create( graph_ptr->version = 0; - dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=ClientAppeared", NULL); - dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=ClientDisappeared", NULL); - dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=PortAppeared", NULL); - dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=PortDisappeared", NULL); - dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=PortsConnected", NULL); - dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=PortsDisconnected", NULL); + for (signal = patchbay_signals; *signal != NULL; signal++) + { + snprintf( + rule, + sizeof(rule), + "type='signal',sender='%s',path='%s',interface='" JACKDBUS_IFACE_PATCHBAY "',member='%s'", + service, + object, + *signal); + + dbus_bus_add_match(g_dbus_connection, rule, &g_dbus_error); + if (dbus_error_is_set(&g_dbus_error)) + { + lash_error("Failed to add D-Bus match rule: %s", g_dbus_error.message); + dbus_error_free(&g_dbus_error); + return false; + } + } dbus_connection_add_filter(g_dbus_connection, message_hook, graph_ptr, NULL); diff --git a/gui/graph.h b/graph_proxy.h similarity index 100% rename from gui/graph.h rename to graph_proxy.h diff --git a/gui/graph_canvas.h b/gui/graph_canvas.h index b90a5a87..ee213815 100644 --- a/gui/graph_canvas.h +++ b/gui/graph_canvas.h @@ -27,7 +27,7 @@ #ifndef GRAPH_CANVAS_H__F145C6FA_633C_4E64_9117_ED301618B587__INCLUDED #define GRAPH_CANVAS_H__F145C6FA_633C_4E64_9117_ED301618B587__INCLUDED -#include "graph.h" +#include "../graph_proxy.h" #include "canvas.h" typedef struct graph_canvas_tag { int unused; } * graph_canvas_handle; diff --git a/jack_proxy.c b/jack_proxy.c index 1ad2b5a0..e8a710f7 100644 --- a/jack_proxy.c +++ b/jack_proxy.c @@ -33,185 +33,14 @@ #include "dbus/helpers.h" #include "common/debug.h" -#define JACKDBUS_SERVICE "org.jackaudio.service" -#define JACKDBUS_OBJECT "/org/jackaudio/Controller" #define JACKDBUS_IFACE_CONTROL "org.jackaudio.JackControl" -#define JACKDBUS_IFACE_PATCHBAY "org.jackaudio.JackPatchbay" #define JACKDBUS_IFACE_CONFIGURE "org.jackaudio.Configure" -jack_proxy_callback_client_appeared g_on_client_appeared; -jack_proxy_callback_client_disappeared g_on_client_disappeared; -jack_proxy_callback_port_appeared g_on_port_appeared; -jack_proxy_callback_port_disappeared g_on_port_disappeared; -jack_proxy_callback_ports_connected g_on_ports_connected; -jack_proxy_callback_ports_disconnected g_on_ports_disconnected; jack_proxy_callback_server_started g_on_server_started; jack_proxy_callback_server_stopped g_on_server_stopped; jack_proxy_callback_server_appeared g_on_server_appeared; jack_proxy_callback_server_disappeared g_on_server_disappeared; -static -void -on_jack_patchbay_signal( - DBusMessage * message_ptr, - const char * signal_name) -{ - const char * client1_name; - const char * port1_name; - const char * client2_name; - const char * port2_name; - dbus_uint64_t dummy; - dbus_uint64_t client1_id; - dbus_uint64_t client2_id; - dbus_uint64_t port1_id; - dbus_uint64_t port2_id; - - dbus_error_init(&g_dbus_error); - - if (strcmp(signal_name, "ClientAppeared") == 0) - { - lash_debug("Received ClientAppeared signal"); - - if (!dbus_message_get_args( - message_ptr, - &g_dbus_error, - DBUS_TYPE_UINT64, &dummy, - DBUS_TYPE_UINT64, &client1_id, - DBUS_TYPE_STRING, &client1_name, - DBUS_TYPE_INVALID)) - { - goto fail; - } - - if (g_on_client_appeared != NULL) - { - g_on_client_appeared(client1_id, client1_name); - } - - return; - } - - if (strcmp(signal_name, "ClientDisappeared") == 0) - { - lash_debug("Received ClientDisappeared signal"); - - if (!dbus_message_get_args( - message_ptr, - &g_dbus_error, - DBUS_TYPE_UINT64, &dummy, - DBUS_TYPE_UINT64, &client1_id, - DBUS_TYPE_STRING, &client1_name, - DBUS_TYPE_INVALID)) - { - goto fail; - } - - if (g_on_client_disappeared != NULL) - { - g_on_client_disappeared(client1_id); - } - - return; - } - - if (strcmp(signal_name, "PortAppeared") == 0) - { - lash_debug("Received PortAppeared signal"); - - if (!dbus_message_get_args( - message_ptr, - &g_dbus_error, - DBUS_TYPE_UINT64, &dummy, - DBUS_TYPE_UINT64, &client1_id, - DBUS_TYPE_STRING, &client1_name, - DBUS_TYPE_UINT64, &port1_id, - DBUS_TYPE_STRING, &port1_name, - DBUS_TYPE_INVALID)) - { - goto fail; - } - - if (g_on_port_appeared != NULL) - { - g_on_port_appeared(client1_id, port1_id, port1_name); - } - - return; - } - - if (strcmp(signal_name, "PortsConnected") == 0) - { - lash_debug("Received PortsConnected signal"); - - if (!dbus_message_get_args( - message_ptr, - &g_dbus_error, - DBUS_TYPE_UINT64, &dummy, - DBUS_TYPE_UINT64, &client1_id, - DBUS_TYPE_STRING, &client1_name, - DBUS_TYPE_UINT64, &port1_id, - DBUS_TYPE_STRING, &port1_name, - DBUS_TYPE_UINT64, &client2_id, - DBUS_TYPE_STRING, &client2_name, - DBUS_TYPE_UINT64, &port2_id, - DBUS_TYPE_STRING, &port2_name, - DBUS_TYPE_INVALID)) - { - goto fail; - } - - if (g_on_ports_disconnected != NULL) - { - g_on_ports_connected( - client1_id, - port1_id, - client2_id, - port2_id); - } - - return; - } - - if (strcmp(signal_name, "PortsDisconnected") == 0) - { - lash_debug("Received PortsDisconnected signal"); - - if (!dbus_message_get_args( - message_ptr, - &g_dbus_error, - DBUS_TYPE_UINT64, &dummy, - DBUS_TYPE_UINT64, &client1_id, - DBUS_TYPE_STRING, &client1_name, - DBUS_TYPE_UINT64, &port1_id, - DBUS_TYPE_STRING, &port1_name, - DBUS_TYPE_UINT64, &client2_id, - DBUS_TYPE_STRING, &client2_name, - DBUS_TYPE_UINT64, &port2_id, - DBUS_TYPE_STRING, &port2_name, - DBUS_TYPE_INVALID)) - { - goto fail; - } - - if (g_on_ports_disconnected != NULL) - { - g_on_ports_disconnected( - client1_id, - port1_id, - client2_id, - port2_id); - } - - return; - } - - return; - -fail: - lash_error("Cannot get message arguments: %s", g_dbus_error.message); - dbus_error_free(&g_dbus_error); -} - static void on_jack_control_signal( @@ -337,12 +166,6 @@ dbus_signal_handler( /* Handle JACK patchbay and control interface signals */ if (object_path != NULL && strcmp(object_path, JACKDBUS_OBJECT) == 0) { - if (strcmp(interface, JACKDBUS_IFACE_PATCHBAY) == 0) - { - on_jack_patchbay_signal(message_ptr, signal_name); - return DBUS_HANDLER_RESULT_HANDLED; - } - if (strcmp(interface, JACKDBUS_IFACE_CONTROL) == 0) { on_jack_control_signal(message_ptr, signal_name); @@ -364,20 +187,15 @@ dbus_signal_handler( bool jack_proxy_init( - void) + jack_proxy_callback_server_started server_started, + jack_proxy_callback_server_stopped server_stopped, + jack_proxy_callback_server_appeared server_appeared, + jack_proxy_callback_server_disappeared server_disappeared) { DBusError err; char rule[1024]; const char ** signal; - const char * patchbay_signals[] = { - "ClientAppeared", - "ClientDisappeared", - "PortAppeared", - "PortsConnected", - "PortsDisconnected", - NULL}; - const char * control_signals[] = { "ServerStarted", "ServerStopped", @@ -394,23 +212,6 @@ jack_proxy_init( return false; } - for (signal = patchbay_signals; *signal != NULL; signal++) - { - snprintf( - rule, - sizeof(rule), - "type='signal',sender='"JACKDBUS_SERVICE"',path='"JACKDBUS_OBJECT"',interface='"JACKDBUS_IFACE_PATCHBAY"',member='%s'", - *signal); - - dbus_bus_add_match(g_dbus_connection, rule, &err); - if (dbus_error_is_set(&err)) - { - lash_error("Failed to add D-Bus match rule: %s", err.message); - dbus_error_free(&err); - return false; - } - } - for (signal = control_signals; *signal != NULL; signal++) { snprintf( @@ -434,37 +235,12 @@ jack_proxy_init( return false; } - return true; -} - -void -jack_proxy_set_server_callbacks( - jack_proxy_callback_server_started server_started, - jack_proxy_callback_server_stopped server_stopped, - jack_proxy_callback_server_appeared server_appeared, - jack_proxy_callback_server_disappeared server_disappeared) -{ g_on_server_started = server_started; g_on_server_stopped = server_stopped; g_on_server_appeared = server_appeared; g_on_server_disappeared = server_disappeared; -} -void -jack_proxy_set_patchbay_callbacks( - jack_proxy_callback_client_appeared client_appeared, - jack_proxy_callback_client_disappeared client_disappeared, - jack_proxy_callback_port_appeared port_appeared, - jack_proxy_callback_port_disappeared port_disappeared, - jack_proxy_callback_ports_connected ports_connected, - jack_proxy_callback_ports_disconnected ports_disconnected) -{ - g_on_client_appeared = client_appeared; - g_on_client_disappeared = client_disappeared; - g_on_port_appeared = port_appeared; - g_on_port_disappeared = port_disappeared; - g_on_ports_connected = ports_connected; - g_on_ports_disconnected = ports_disconnected; + return true; } void diff --git a/jack_proxy.h b/jack_proxy.h index b558ccdc..7a6d15ec 100644 --- a/jack_proxy.h +++ b/jack_proxy.h @@ -30,6 +30,9 @@ #include "common.h" +#define JACKDBUS_SERVICE "org.jackaudio.service" +#define JACKDBUS_OBJECT "/org/jackaudio/Controller" + struct jack_parameter_variant { enum @@ -61,47 +64,6 @@ struct jack_parameter_variant } value; }; -typedef -void -(* jack_proxy_callback_client_appeared)( - uint64_t client_id, - const char * client_name); - -typedef -void -(* jack_proxy_callback_client_disappeared)( - uint64_t client_id); - -typedef -void -(* jack_proxy_callback_port_appeared)( - uint64_t client_id, - uint64_t port_id, - const char * port_name); - -typedef -void -(* jack_proxy_callback_port_disappeared)( - uint64_t client_id, - uint64_t port_id, - const char * port_name); - -typedef -void -(* jack_proxy_callback_ports_connected)( - uint64_t client1_id, - uint64_t port1_id, - uint64_t client2_id, - uint64_t port2_id); - -typedef -void -(* jack_proxy_callback_ports_disconnected)( - uint64_t client1_id, - uint64_t port1_id, - uint64_t client2_id, - uint64_t port2_id); - typedef void (* jack_proxy_callback_server_started)( @@ -124,24 +86,11 @@ void bool jack_proxy_init( - void); - -void -jack_proxy_set_server_callbacks( jack_proxy_callback_server_started server_started, jack_proxy_callback_server_stopped server_stopped, jack_proxy_callback_server_appeared server_appeared, jack_proxy_callback_server_disappeared server_disappeared); -void -jack_proxy_set_patchbay_callbacks( - jack_proxy_callback_client_appeared client_appeared, - jack_proxy_callback_client_disappeared client_disappeared, - jack_proxy_callback_port_appeared port_appeared, - jack_proxy_callback_port_disappeared port_disappeared, - jack_proxy_callback_ports_connected ports_connected, - jack_proxy_callback_ports_disconnected ports_disconnected); - void jack_proxy_uninit( void); diff --git a/wscript b/wscript index d205a657..e1b251fe 100644 --- a/wscript +++ b/wscript @@ -162,7 +162,11 @@ def build(bld): daemon.uselib = 'DBUS-1 LIBXML-2.0 UUID' daemon.ver_header = 'version.h' daemon.env.append_value("LINKFLAGS", ["-lutil", "-ldl"]) - daemon.source = [] + + daemon.source = [ + 'jack_proxy.c', + ] + for source in [ 'main.c', 'loader.c', @@ -191,7 +195,6 @@ def build(bld): daemon.source.append(os.path.join("dbus", source)) daemon.source.append(os.path.join("common", "safety.c")) - daemon.source.append('jack_proxy.c') # process name.arnaudov.nedko.ladish.service.in -> name.arnaudov.nedko.ladish.service import misc @@ -255,7 +258,12 @@ def build(bld): gladish.defines = ['DEBUG_OUTPUT_TERMINAL'] gladish.includes = "build/default" # XXX config.h version.h and other generated files gladish.uselib = 'DBUS-1 LIBGNOMECANVASMM-2.6 LIBGLADEMM-2.4 FLOWCANVAS DBUS-GLIB-1' - gladish.source = [] + + gladish.source = [ + 'jack_proxy.c', + 'graph_proxy.c', + ] + for source in [ 'main.cpp', 'Patchage.cpp', @@ -271,7 +279,6 @@ def build(bld): 'a2j_proxy.cpp', 'dbus_helpers.c', 'canvas.cpp', - 'graph.c', 'graph_canvas.c', ]: gladish.source.append(os.path.join("gui", source)) @@ -282,8 +289,6 @@ def build(bld): ]: gladish.source.append(os.path.join("dbus", source)) - gladish.source.append('jack_proxy.c') - # Glade UI definitions (XML) bld.install_files(bld.env['DATA_DIR'], 'gui/gui.glade')