diff options
author | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-04-23 16:37:40 +0900 |
---|---|---|
committer | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-04-23 16:37:40 +0900 |
commit | 18ec192ec85f366f2333f264a0e69e2c5c9e5635 (patch) | |
tree | fac7e590260d70bd164aa18b8058d72b7e5f52e4 | |
parent | 8a48fdbedde4cc38f86b9abfad829c2521c86041 (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.c | 25 |
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"); |