Send device state changed signal 44/102544/1 accepted/tizen/common/20161207.184610 accepted/tizen/ivi/20161208.012250 accepted/tizen/mobile/20161208.011937 accepted/tizen/tv/20161208.012051 accepted/tizen/wearable/20161208.012143 submit/tizen/20161207.075356
authorJeongho Mok <jho.mok@samsung.com>
Thu, 1 Dec 2016 13:47:51 +0000 (22:47 +0900)
committerJeongho Mok <jho.mok@samsung.com>
Tue, 6 Dec 2016 05:25:20 +0000 (21:25 -0800)
[Version] 5.0.99
[Profile] Common
[Issue Type] Enhancement

Change-Id: Ia20cbf88d2e3e069b9203251e6b2cc6b80843094
(cherry picked from commit 5982b475260926006c88ccb62909dc86eeba93f3)

packaging/pulseaudio-modules-tizen.spec
src/device-manager.c

index 6ee1474..f6f921e 100644 (file)
@@ -1,6 +1,6 @@
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          5.0.98
+Version:          5.0.99
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index ed07c80..7ebf8de 100644 (file)
@@ -2544,6 +2544,43 @@ static void send_device_info_changed_signal(uint32_t event_id, pa_tz_device *dev
     dbus_message_unref(signal_msg);
 }
 
+static void send_device_state_changed_signal(uint32_t event_id, pa_tz_device *device, bool activated, pa_device_manager *dm) {
+    DBusMessage *signal_msg;
+    DBusMessageIter msg_iter, device_iter;
+    dm_device_state_t compound_state;
+    dbus_int32_t device_id, direction;
+    char *type, *name;
+
+    pa_assert(device);
+    pa_assert(dm);
+
+    pa_log_debug("Send device state changed signal, event_id(%u)", event_id);
+
+    pa_assert_se(signal_msg = dbus_message_new_signal(DBUS_OBJECT_DEVICE_MANAGER, DBUS_INTERFACE_DEVICE_MANAGER, "DeviceStateChanged"));
+    dbus_message_iter_init_append(signal_msg, &msg_iter);
+    dbus_message_iter_append_basic(&msg_iter, DBUS_TYPE_UINT32, &event_id);
+    pa_assert_se(dbus_message_iter_open_container(&msg_iter, DBUS_TYPE_STRUCT, NULL, &device_iter));
+
+    direction = (dbus_int32_t) pa_tz_device_get_direction(device);
+    type = pa_tz_device_get_type(device);
+    name = pa_tz_device_get_name(device);
+    device_id = (dbus_int32_t) pa_tz_device_get_id(device);
+    compound_state = activated ? DM_DEVICE_STATE_ACTIVATED : DM_DEVICE_STATE_DEACTIVATED;
+
+    simple_device_dump(PA_LOG_DEBUG, "[State Changed]", device_id, type, name, direction, compound_state);
+
+    dbus_message_iter_append_basic(&device_iter, DBUS_TYPE_INT32, &device_id);
+    dbus_message_iter_append_basic(&device_iter, DBUS_TYPE_STRING, &type);
+    dbus_message_iter_append_basic(&device_iter, DBUS_TYPE_INT32, &direction);
+    dbus_message_iter_append_basic(&device_iter, DBUS_TYPE_INT32, &compound_state);
+    dbus_message_iter_append_basic(&device_iter, DBUS_TYPE_STRING, &name);
+    pa_assert_se(dbus_message_iter_close_container(&msg_iter, &device_iter));
+
+    pa_assert_se(dbus_connection_send(pa_dbus_connection_get(dm->dbus_conn), signal_msg, NULL));
+
+    dbus_message_unref(signal_msg);
+}
+
 static bool device_is_match_direction(pa_tz_device *device, int direction_mask) {
     dm_device_direction_t direction;
 
@@ -3096,6 +3133,7 @@ static pa_hook_result_t device_connection_changed_hook_cb(pa_core *c, pa_tz_devi
 
 static pa_hook_result_t device_state_changed_hook_cb(pa_core *c, pa_tz_device_hook_data_for_state_changed *data, pa_device_manager *dm) {
     send_device_info_changed_signal(data->event_id, data->device, DM_DEVICE_CHANGED_INFO_STATE, dm);
+    send_device_state_changed_signal(data->event_id, data->device, data->activated, dm);
     return PA_HOOK_OK;
 }