move /gui/graph to /graph_proxy; [re]move duplicate code from jack_proxy

This commit is contained in:
Nedko Arnaudov 2009-08-11 15:31:33 +03:00
parent 46f27770ec
commit 1c5c9f28e2
7 changed files with 58 additions and 368 deletions

View File

@ -29,59 +29,6 @@
#include "studio.h" #include "studio.h"
#include "dbus_iface_control.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 void
on_jack_server_started( on_jack_server_started(
void) void)
@ -159,25 +106,15 @@ jack_init(
{ {
bool started; 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; 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) if (jack_proxy_is_started(&started) && started)
{ {
on_jack_server_started(); on_jack_server_started();

View File

@ -29,10 +29,10 @@
#include <assert.h> #include <assert.h>
#include "common.h" #include "common.h"
#include "graph.h" #include "graph_proxy.h"
#include "../common/klist.h" #include "common/klist.h"
#include "../common/debug.h" #include "common/debug.h"
#include "../dbus/helpers.h" #include "dbus/helpers.h"
#define JACKDBUS_IFACE_PATCHBAY "org.jackaudio.JackPatchbay" #define JACKDBUS_IFACE_PATCHBAY "org.jackaudio.JackPatchbay"
@ -363,6 +363,17 @@ graph_create(
graph_handle * graph_handle_ptr) graph_handle * graph_handle_ptr)
{ {
struct graph * graph_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)); graph_ptr = malloc(sizeof(struct graph));
if (graph_ptr == NULL) if (graph_ptr == NULL)
@ -389,12 +400,24 @@ graph_create(
graph_ptr->version = 0; graph_ptr->version = 0;
dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=ClientAppeared", NULL); for (signal = patchbay_signals; *signal != NULL; signal++)
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); snprintf(
dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=PortDisappeared", NULL); rule,
dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=PortsConnected", NULL); sizeof(rule),
dbus_bus_add_match(g_dbus_connection, "type='signal',interface='" JACKDBUS_IFACE_PATCHBAY "',member=PortsDisconnected", NULL); "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); dbus_connection_add_filter(g_dbus_connection, message_hook, graph_ptr, NULL);

View File

@ -27,7 +27,7 @@
#ifndef GRAPH_CANVAS_H__F145C6FA_633C_4E64_9117_ED301618B587__INCLUDED #ifndef GRAPH_CANVAS_H__F145C6FA_633C_4E64_9117_ED301618B587__INCLUDED
#define 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" #include "canvas.h"
typedef struct graph_canvas_tag { int unused; } * graph_canvas_handle; typedef struct graph_canvas_tag { int unused; } * graph_canvas_handle;

View File

@ -33,185 +33,14 @@
#include "dbus/helpers.h" #include "dbus/helpers.h"
#include "common/debug.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_CONTROL "org.jackaudio.JackControl"
#define JACKDBUS_IFACE_PATCHBAY "org.jackaudio.JackPatchbay"
#define JACKDBUS_IFACE_CONFIGURE "org.jackaudio.Configure" #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_started g_on_server_started;
jack_proxy_callback_server_stopped g_on_server_stopped; jack_proxy_callback_server_stopped g_on_server_stopped;
jack_proxy_callback_server_appeared g_on_server_appeared; jack_proxy_callback_server_appeared g_on_server_appeared;
jack_proxy_callback_server_disappeared g_on_server_disappeared; 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 static
void void
on_jack_control_signal( on_jack_control_signal(
@ -337,12 +166,6 @@ dbus_signal_handler(
/* Handle JACK patchbay and control interface signals */ /* Handle JACK patchbay and control interface signals */
if (object_path != NULL && strcmp(object_path, JACKDBUS_OBJECT) == 0) 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) if (strcmp(interface, JACKDBUS_IFACE_CONTROL) == 0)
{ {
on_jack_control_signal(message_ptr, signal_name); on_jack_control_signal(message_ptr, signal_name);
@ -364,20 +187,15 @@ dbus_signal_handler(
bool bool
jack_proxy_init( 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; DBusError err;
char rule[1024]; char rule[1024];
const char ** signal; const char ** signal;
const char * patchbay_signals[] = {
"ClientAppeared",
"ClientDisappeared",
"PortAppeared",
"PortsConnected",
"PortsDisconnected",
NULL};
const char * control_signals[] = { const char * control_signals[] = {
"ServerStarted", "ServerStarted",
"ServerStopped", "ServerStopped",
@ -394,23 +212,6 @@ jack_proxy_init(
return false; 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++) for (signal = control_signals; *signal != NULL; signal++)
{ {
snprintf( snprintf(
@ -434,37 +235,12 @@ jack_proxy_init(
return false; 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_started = server_started;
g_on_server_stopped = server_stopped; g_on_server_stopped = server_stopped;
g_on_server_appeared = server_appeared; g_on_server_appeared = server_appeared;
g_on_server_disappeared = server_disappeared; g_on_server_disappeared = server_disappeared;
}
void return true;
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;
} }
void void

View File

@ -30,6 +30,9 @@
#include "common.h" #include "common.h"
#define JACKDBUS_SERVICE "org.jackaudio.service"
#define JACKDBUS_OBJECT "/org/jackaudio/Controller"
struct jack_parameter_variant struct jack_parameter_variant
{ {
enum enum
@ -61,47 +64,6 @@ struct jack_parameter_variant
} value; } 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 typedef
void void
(* jack_proxy_callback_server_started)( (* jack_proxy_callback_server_started)(
@ -124,24 +86,11 @@ void
bool bool
jack_proxy_init( jack_proxy_init(
void);
void
jack_proxy_set_server_callbacks(
jack_proxy_callback_server_started server_started, jack_proxy_callback_server_started server_started,
jack_proxy_callback_server_stopped server_stopped, jack_proxy_callback_server_stopped server_stopped,
jack_proxy_callback_server_appeared server_appeared, jack_proxy_callback_server_appeared server_appeared,
jack_proxy_callback_server_disappeared server_disappeared); 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 void
jack_proxy_uninit( jack_proxy_uninit(
void); void);

17
wscript
View File

@ -162,7 +162,11 @@ def build(bld):
daemon.uselib = 'DBUS-1 LIBXML-2.0 UUID' daemon.uselib = 'DBUS-1 LIBXML-2.0 UUID'
daemon.ver_header = 'version.h' daemon.ver_header = 'version.h'
daemon.env.append_value("LINKFLAGS", ["-lutil", "-ldl"]) daemon.env.append_value("LINKFLAGS", ["-lutil", "-ldl"])
daemon.source = []
daemon.source = [
'jack_proxy.c',
]
for source in [ for source in [
'main.c', 'main.c',
'loader.c', 'loader.c',
@ -191,7 +195,6 @@ def build(bld):
daemon.source.append(os.path.join("dbus", source)) daemon.source.append(os.path.join("dbus", source))
daemon.source.append(os.path.join("common", "safety.c")) 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 # process name.arnaudov.nedko.ladish.service.in -> name.arnaudov.nedko.ladish.service
import misc import misc
@ -255,7 +258,12 @@ def build(bld):
gladish.defines = ['DEBUG_OUTPUT_TERMINAL'] gladish.defines = ['DEBUG_OUTPUT_TERMINAL']
gladish.includes = "build/default" # XXX config.h version.h and other generated files 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.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 [ for source in [
'main.cpp', 'main.cpp',
'Patchage.cpp', 'Patchage.cpp',
@ -271,7 +279,6 @@ def build(bld):
'a2j_proxy.cpp', 'a2j_proxy.cpp',
'dbus_helpers.c', 'dbus_helpers.c',
'canvas.cpp', 'canvas.cpp',
'graph.c',
'graph_canvas.c', 'graph_canvas.c',
]: ]:
gladish.source.append(os.path.join("gui", source)) 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(os.path.join("dbus", source))
gladish.source.append('jack_proxy.c')
# Glade UI definitions (XML) # Glade UI definitions (XML)
bld.install_files(bld.env['DATA_DIR'], 'gui/gui.glade') bld.install_files(bld.env['DATA_DIR'], 'gui/gui.glade')