studio appeared/disappeared signals (again)
This commit is contained in:
parent
4b93feb267
commit
f93e4e8761
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "../dbus/interface.h"
|
||||
#include "../dbus/error.h"
|
||||
#include "dbus_iface_control.h"
|
||||
|
||||
#define INTERFACE_NAME DBUS_NAME_BASE ".Control"
|
||||
|
||||
|
@ -194,6 +195,16 @@ static void ladish_exit(method_call_t * call_ptr)
|
|||
g_quit = true;
|
||||
}
|
||||
|
||||
void emit_studio_appeared()
|
||||
{
|
||||
signal_new_valist(g_dbus_connection, CONTROL_OBJECT_PATH, INTERFACE_NAME, "StudioAppeared", DBUS_TYPE_INVALID);
|
||||
}
|
||||
|
||||
void emit_studio_disappeared()
|
||||
{
|
||||
signal_new_valist(g_dbus_connection, CONTROL_OBJECT_PATH, INTERFACE_NAME, "StudioDisappeared", DBUS_TYPE_INVALID);
|
||||
}
|
||||
|
||||
METHOD_ARGS_BEGIN(GetStudioList)
|
||||
METHOD_ARG_DESCRIBE("studio_list", "a(sa{sv})", DIRECTION_OUT)
|
||||
METHOD_ARGS_END
|
||||
|
@ -217,7 +228,15 @@ METHODS_BEGIN
|
|||
METHOD_DESCRIBE(Exit, ladish_exit)
|
||||
METHODS_END
|
||||
|
||||
SIGNAL_ARGS_BEGIN(StudioAppeared)
|
||||
SIGNAL_ARGS_END
|
||||
|
||||
SIGNAL_ARGS_BEGIN(StudioDisappeared)
|
||||
SIGNAL_ARGS_END
|
||||
|
||||
SIGNALS_BEGIN
|
||||
SIGNAL_DESCRIBE(StudioAppeared)
|
||||
SIGNAL_DESCRIBE(StudioDisappeared)
|
||||
SIGNALS_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -28,6 +28,11 @@
|
|||
#ifndef __LASHD_DBUS_IFACE_CONTROL_H__
|
||||
#define __LASHD_DBUS_IFACE_CONTROL_H__
|
||||
|
||||
#define CONTROL_OBJECT_PATH DBUS_BASE_PATH "/Control"
|
||||
|
||||
extern const interface_t g_lashd_interface_control;
|
||||
|
||||
void emit_studio_appeared();
|
||||
void emit_studio_disappeared();
|
||||
|
||||
#endif /* __LASHD_DBUS_IFACE_CONTROL_H__ */
|
||||
|
|
|
@ -431,6 +431,7 @@ on_jack_server_started(
|
|||
g_studio_ptr->jack_conf_stable = true;
|
||||
lash_info("jack conf successfully retrieved");
|
||||
studio_activate(g_studio_ptr);
|
||||
emit_studio_appeared();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -458,6 +459,7 @@ on_jack_server_stopped(
|
|||
|
||||
if (!g_studio_ptr->persisted)
|
||||
{
|
||||
emit_studio_disappeared();
|
||||
studio_destroy(g_studio_ptr);
|
||||
g_studio_ptr = NULL;
|
||||
return;
|
||||
|
|
|
@ -153,7 +153,7 @@ static bool connect_dbus(void)
|
|||
goto unref_connection;
|
||||
}
|
||||
|
||||
g_control_object = object_path_new(DBUS_BASE_PATH "/Control", NULL, 1, &g_lashd_interface_control, NULL);
|
||||
g_control_object = object_path_new(CONTROL_OBJECT_PATH, NULL, 1, &g_lashd_interface_control, NULL);
|
||||
if (g_control_object == NULL)
|
||||
{
|
||||
goto unref_connection;
|
||||
|
@ -265,6 +265,7 @@ int main(int argc, char ** argv, char ** envp)
|
|||
if (g_studio_ptr != NULL)
|
||||
{
|
||||
studio_destroy(g_studio_ptr);
|
||||
emit_studio_disappeared();
|
||||
}
|
||||
|
||||
ret = EXIT_SUCCESS;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* LASH
|
||||
*
|
||||
* Copyright (C) 2009 Nedko Arnaudov <nedko@arnaudov.name>
|
||||
* Copyright (C) 2008 Juuso Alasuutari <juuso.alasuutari@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -28,12 +29,13 @@ static void
|
|||
signal_send(signal_msg_t *signal);
|
||||
|
||||
void
|
||||
signal_new_single(service_t *service,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *name,
|
||||
int type,
|
||||
const void *arg)
|
||||
signal_new_single(
|
||||
DBusConnection * connection_ptr,
|
||||
const char * path,
|
||||
const char * interface,
|
||||
const char * name,
|
||||
int type,
|
||||
const void * arg)
|
||||
{
|
||||
signal_msg_t signal;
|
||||
DBusMessageIter iter;
|
||||
|
@ -43,7 +45,7 @@ signal_new_single(service_t *service,
|
|||
if ((signal.message = dbus_message_new_signal(path, interface, name))) {
|
||||
dbus_message_iter_init_append(signal.message, &iter);
|
||||
if (dbus_message_iter_append_basic(&iter, type, arg)) {
|
||||
signal.connection = service->connection;
|
||||
signal.connection = connection_ptr;
|
||||
signal_send(&signal);
|
||||
} else {
|
||||
lash_error("Ran out of memory trying to append signal argument");
|
||||
|
@ -59,12 +61,13 @@ signal_new_single(service_t *service,
|
|||
}
|
||||
|
||||
void
|
||||
signal_new_valist (service_t *service,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *name,
|
||||
int type,
|
||||
...)
|
||||
signal_new_valist(
|
||||
DBusConnection * connection_ptr,
|
||||
const char * path,
|
||||
const char * interface,
|
||||
const char * name,
|
||||
int type,
|
||||
...)
|
||||
{
|
||||
signal_msg_t signal;
|
||||
va_list argp;
|
||||
|
@ -74,7 +77,7 @@ signal_new_valist (service_t *service,
|
|||
if ((signal.message = dbus_message_new_signal (path, interface, name))) {
|
||||
va_start(argp, type);
|
||||
if (dbus_message_append_args_valist(signal.message, type, argp)) {
|
||||
signal.connection = service->connection;
|
||||
signal.connection = connection_ptr;
|
||||
signal_send(&signal);
|
||||
} else {
|
||||
lash_error("Ran out of memory trying to append signal argument(s)");
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* LASH
|
||||
*
|
||||
* Copyright (C) 2008, 2009 Nedko Arnaudov <nedko@arnaudov.name>
|
||||
* Copyright (C) 2008 Juuso Alasuutari <juuso.alasuutari@gmail.com>
|
||||
* Copyright (C) 2008 Nedko Arnaudov
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -45,20 +45,22 @@ struct _signal
|
|||
};
|
||||
|
||||
void
|
||||
signal_new_single(service_t *service,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *name,
|
||||
int type,
|
||||
const void *arg);
|
||||
signal_new_single(
|
||||
DBusConnection * connection_ptr,
|
||||
const char * path,
|
||||
const char * interface,
|
||||
const char * name,
|
||||
int type,
|
||||
const void * arg);
|
||||
|
||||
void
|
||||
signal_new_valist(service_t *service,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *name,
|
||||
int type,
|
||||
...);
|
||||
signal_new_valist(
|
||||
DBusConnection * connection_ptr,
|
||||
const char * path,
|
||||
const char * interface,
|
||||
const char * name,
|
||||
int type,
|
||||
...);
|
||||
|
||||
#define SIGNAL_ARGS_BEGIN(signal_name) \
|
||||
static const struct _signal_arg signal_name ## _args_dtor[] = \
|
||||
|
|
Loading…
Reference in New Issue