move /gui/graph to /graph_proxy; [re]move duplicate code from jack_proxy
This commit is contained in:
parent
46f27770ec
commit
1c5c9f28e2
|
@ -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,24 +106,14 @@ jack_init(
|
|||
{
|
||||
bool started;
|
||||
|
||||
if (!jack_proxy_init())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
jack_proxy_set_server_callbacks(
|
||||
if (!jack_proxy_init(
|
||||
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);
|
||||
on_jack_server_disappeared))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (jack_proxy_is_started(&started) && started)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
@ -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;
|
||||
|
|
234
jack_proxy.c
234
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
|
||||
|
|
57
jack_proxy.h
57
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);
|
||||
|
|
17
wscript
17
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')
|
||||
|
||||
|
|
Loading…
Reference in New Issue