aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-04-23 16:37:40 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-04-23 16:37:40 +0900
commit18ec192ec85f366f2333f264a0e69e2c5c9e5635 (patch)
treefac7e590260d70bd164aa18b8058d72b7e5f52e4
parent8a48fdbedde4cc38f86b9abfad829c2521c86041 (diff)
Add callback functions to g_dbus_own_name
Change-Id: I94d20ef5574688e4dc0df3c07c226e061acf14f5 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
-rw-r--r--src/audiomanager_proxy.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/audiomanager_proxy.c b/src/audiomanager_proxy.c
index 83774d4..0ce63ec 100644
--- a/src/audiomanager_proxy.c
+++ b/src/audiomanager_proxy.c
@@ -626,9 +626,31 @@ void set_event_callback(const am_event* callback){
G_CALLBACK(_on_set_routing_rundown), NULL);
}
+static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data){
+ GError* error = NULL;
+ AFB_DEBUG("%s is called", __FUNCTION__);
+ guint id = g_dbus_connection_register_object(connection,
+ SOUND_MANAGER_PATH, NULL, NULL, NULL, NULL, &error);
+ // we don't export interface other than AudioManager so user can't introspect soundmanager method
+ if(id < 1){
+ AFB_ERROR("Failed to register soundmanager: %s", error->message);
+ }
+ AFB_DEBUG("register soundmanager path");
+}
+
+static void on_name_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data){
+ AFB_DEBUG("%s is called", __FUNCTION__);
+}
+
+static void on_name_lost(GDBusConnection *connection, const gchar *name, gpointer user_data){
+ AFB_DEBUG("bus name is lost");
+ // TODO: soundmanager should register current status?
+}
+
ErrorCode open_soundmanager_interface(const am_instruction *callback){
guint ret = g_bus_own_name(G_BUS_TYPE_SYSTEM, SOUND_MANAGER_BUS_NAME, G_BUS_NAME_OWNER_FLAGS_NONE,
- NULL,NULL, NULL, NULL, NULL);
+ on_bus_acquired, on_name_acquired, on_name_lost, NULL, NULL);
+ // see https://developer.gnome.org/gio/stable/gio-Owning-Bus-Names.html#g-bus-own-name
AFB_DEBUG( "g_bus_own_name ret: %d", ret);
GError *error = NULL;;
GVariant *value;
@@ -660,6 +682,7 @@ ErrorCode open_soundmanager_interface(const am_instruction *callback){
sigret = g_signal_connect(sm_adapter, "handle-async-set-sink-volume", G_CALLBACK(_on_async_set_sink_volume),NULL);
sigret = g_signal_connect(sm_adapter, "handle-async-set-source-state", G_CALLBACK(_on_async_set_source_state),NULL);
gboolean rc = g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(sm_adapter), system_conn, SOUND_MANAGER_PATH, &error);
+ AFB_DEBUG("export soundmanager path result: %d", rc);
if (FALSE == rc)
{
AFB_ERROR( "failed to export");