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 "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();

View File

@ -29,10 +29,10 @@
#include <assert.h>
#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);

View File

@ -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;

View File

@ -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

View File

@ -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);

17
wscript
View File

@ -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')