policy: Revise codes 73/65973/6
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 14 Apr 2016 08:03:23 +0000 (17:03 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Tue, 19 Apr 2016 04:21:34 +0000 (13:21 +0900)
stream-mananager: Call pa_hal_manager_update_route_option() directly rather than use communicator hook.
communicator: Add PA_COMMUNICATOR_HOOK_UPDATE_INFORMATION, remove PA_COMMUNICATOR_HOOK_UPDATE_ROUTE_OPTION and update description.
policy: Use PA_COMMUNICATOR_HOOK_UPDATE_INFORMATION to get notified arguments of module-loopback from HAL.

[Version] 5.0.44
[Profile] Common
[Issue Type] Refactorying

Change-Id: I0a5a4631dac1fffd05cef935c62bc4ff5ced367c

packaging/pulseaudio-modules-tizen.spec
src/communicator.h
src/module-policy.c
src/stream-manager.c
src/stream-manager.h

index 3feed04..e4b8c94 100644 (file)
@@ -1,6 +1,6 @@
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          5.0.43
+Version:          5.0.44
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index 36ae457..3fb2f30 100644 (file)
@@ -3,13 +3,12 @@
 #include <pulsecore/core.h>
 
 typedef enum pa_communicator_hook {
-    PA_COMMUNICATOR_HOOK_SELECT_INIT_SINK_OR_SOURCE,
-    PA_COMMUNICATOR_HOOK_CHANGE_ROUTE,
-    PA_COMMUNICATOR_HOOK_UPDATE_ROUTE_OPTION,
-    PA_COMMUNICATOR_HOOK_DEVICE_CONNECTION_CHANGED,
-    PA_COMMUNICATOR_HOOK_DEVICE_INFORMATION_CHANGED,
-    /* This hook is fired when a event is handled by all subscribers */
-    PA_COMMUNICATOR_HOOK_EVENT_FULLY_HANDLED,
+    PA_COMMUNICATOR_HOOK_SELECT_INIT_SINK_OR_SOURCE, /* It is fired when a stream is created and needs to be set to sink or source */
+    PA_COMMUNICATOR_HOOK_CHANGE_ROUTE,               /* It is fired when routing using internal codec should be processed */
+    PA_COMMUNICATOR_HOOK_DEVICE_CONNECTION_CHANGED,  /* It is fired when a device is connected or disconnected */
+    PA_COMMUNICATOR_HOOK_DEVICE_INFORMATION_CHANGED, /* It is fired when a device's property is changed */
+    PA_COMMUNICATOR_HOOK_EVENT_FULLY_HANDLED,        /* It is fired when a event is handled by all subscribers */
+    PA_COMMUNICATOR_HOOK_UPDATE_INFORMATION,         /* It is fired when information should be updated */
     PA_COMMUNICATOR_HOOK_MAX
 } pa_communicator_hook_t;
 
index 2f13087..5222d91 100644 (file)
@@ -134,9 +134,9 @@ struct userdata {
         pa_communicator *comm;
         pa_hook_slot *comm_hook_select_proper_sink_or_source_slot;
         pa_hook_slot *comm_hook_change_route_slot;
-        pa_hook_slot *comm_hook_update_route_option_slot;
         pa_hook_slot *comm_hook_device_connection_changed_slot;
         pa_hook_slot *comm_hook_device_info_changed_slot;
+        pa_hook_slot *comm_hook_update_info_slot;
     } communicator;
 
     pa_hal_manager *hal_manager;
@@ -1001,32 +1001,20 @@ static pa_hook_result_t route_change_hook_cb(pa_core *c, pa_stream_manager_hook_
     return PA_HOOK_OK;
 }
 
-/* Forward routing option to HAL */
-static pa_hook_result_t route_option_update_hook_cb(pa_core *c, pa_stream_manager_hook_data_for_option *data, struct userdata *u) {
-    hal_route_option route_option;
-
+static pa_hook_result_t update_info_hook_cb(pa_core *c, pa_stream_manager_hook_data_for_update_info *data, struct userdata *u) {
     pa_assert(c);
     pa_assert(data);
     pa_assert(u);
 
-    pa_log_info("[ROUTE_OPT] route_option_update_hook_cb is called. (%p), stream_role(%s), option[name(%s)/value(%d)]",
-            data, data->stream_role, data->name, data->value);
-    route_option.role = data->stream_role;
-    route_option.name = data->name;
-    route_option.value = data->value;
-
-    if (pa_streq(route_option.role, STREAM_ROLE_LOOPBACK)) {
-        if (pa_streq(route_option.name, MSG_FOR_LOOPBACK_ARG_LATENCY))
-            u->loopback_args.latency_msec = route_option.value;
-        else if (pa_streq(route_option.name, MSG_FOR_LOOPBACK_ARG_ADJUST_TIME))
-            u->loopback_args.adjust_sec = route_option.value;
-        return PA_HOOK_OK;
+    if (pa_streq(data->stream_role, STREAM_ROLE_LOOPBACK)) {
+        pa_log_info("[UPDATE] update_info_hook_cb is called. stream_role(%s) [name(%s)/value(%d)]",
+            data->stream_role, data->name, data->value);
+        if (pa_streq(data->name, MSG_FOR_LOOPBACK_ARG_LATENCY))
+            u->loopback_args.latency_msec = data->value;
+        else if (pa_streq(data->name, MSG_FOR_LOOPBACK_ARG_ADJUST_TIME))
+            u->loopback_args.adjust_sec = data->value;
     }
 
-    /* send information to HAL to update routing option */
-    if (pa_hal_manager_update_route_option(u->hal_manager, &route_option))
-        pa_log_error("[ROUTE_OPT] Failed to pa_hal_manager_update_route_option()");
-
     return PA_HOOK_OK;
 }
 
@@ -1217,15 +1205,15 @@ int pa__init(pa_module *m)
         u->communicator.comm_hook_change_route_slot = pa_hook_connect(
                 pa_communicator_hook(u->communicator.comm, PA_COMMUNICATOR_HOOK_CHANGE_ROUTE),
                 PA_HOOK_EARLY, (pa_hook_cb_t)route_change_hook_cb, u);
-        u->communicator.comm_hook_update_route_option_slot = pa_hook_connect(
-                pa_communicator_hook(u->communicator.comm, PA_COMMUNICATOR_HOOK_UPDATE_ROUTE_OPTION),
-                PA_HOOK_EARLY, (pa_hook_cb_t)route_option_update_hook_cb, u);
         u->communicator.comm_hook_device_connection_changed_slot = pa_hook_connect(
                 pa_communicator_hook(u->communicator.comm, PA_COMMUNICATOR_HOOK_DEVICE_CONNECTION_CHANGED),
                 PA_HOOK_EARLY, (pa_hook_cb_t)device_connection_changed_hook_cb, u);
         u->communicator.comm_hook_device_info_changed_slot = pa_hook_connect(
                 pa_communicator_hook(u->communicator.comm, PA_COMMUNICATOR_HOOK_DEVICE_INFORMATION_CHANGED),
                 PA_HOOK_EARLY, (pa_hook_cb_t)device_info_changed_hook_cb, u);
+        u->communicator.comm_hook_update_info_slot = pa_hook_connect(
+                pa_communicator_hook(u->communicator.comm, PA_COMMUNICATOR_HOOK_UPDATE_INFORMATION),
+                PA_HOOK_EARLY, (pa_hook_cb_t)update_info_hook_cb, u);
     }
     u->device_manager = pa_device_manager_get(u->core);
 
@@ -1279,12 +1267,12 @@ void pa__done(pa_module *m)
             pa_hook_slot_free(u->communicator.comm_hook_select_proper_sink_or_source_slot);
         if (u->communicator.comm_hook_change_route_slot)
             pa_hook_slot_free(u->communicator.comm_hook_change_route_slot);
-        if (u->communicator.comm_hook_update_route_option_slot)
-            pa_hook_slot_free(u->communicator.comm_hook_update_route_option_slot);
         if (u->communicator.comm_hook_device_connection_changed_slot)
             pa_hook_slot_free(u->communicator.comm_hook_device_connection_changed_slot);
         if (u->communicator.comm_hook_device_info_changed_slot)
             pa_hook_slot_free(u->communicator.comm_hook_device_info_changed_slot);
+        if (u->communicator.comm_hook_update_info_slot)
+            pa_hook_slot_free(u->communicator.comm_hook_update_info_slot);
         pa_communicator_unref(u->communicator.comm);
     }
 
index f91d8e0..da005c8 100644 (file)
@@ -2024,8 +2024,8 @@ static void fill_device_info_to_hook_data(pa_stream_manager *m, void *hook_data,
 static void do_notify(pa_stream_manager *m, notify_command_type_t command, stream_type_t type, bool is_new_data, void *user_data) {
     pa_stream_manager_hook_data_for_select hook_call_select_data;
     pa_stream_manager_hook_data_for_route hook_call_route_data;
-    pa_stream_manager_hook_data_for_option hook_call_option_data;
     hal_stream_connection_info stream_conn_info;
+    hal_route_option route_option;
     const char *role = NULL;
     void *s = NULL;
     const char *modifier_gain = NULL;
@@ -2136,15 +2136,15 @@ static void do_notify(pa_stream_manager *m, notify_command_type_t command, strea
     }
     case NOTIFY_COMMAND_UPDATE_ROUTE_OPTION: {
         pa_assert(user_data);
-        memset(&hook_call_option_data, 0, sizeof(pa_stream_manager_hook_data_for_option));
+        memset(&route_option, 0, sizeof(hal_route_option));
         s = (type == STREAM_SINK_INPUT) ? (void*)(m->cur_highest_priority.sink_input) :
                                           (void*)(m->cur_highest_priority.source_output);
         if (s) {
-            hook_call_option_data.stream_role = (type == STREAM_SINK_INPUT) ? (m->cur_highest_priority.role_si) :
+            route_option.role = (type == STREAM_SINK_INPUT) ? (m->cur_highest_priority.role_si) :
                                                                               (m->cur_highest_priority.role_so);
-            hook_call_option_data.name = ((stream_route_option*)user_data)->name;
-            hook_call_option_data.value = ((stream_route_option*)user_data)->value;
-            pa_hook_fire(pa_communicator_hook(m->comm.comm, PA_COMMUNICATOR_HOOK_UPDATE_ROUTE_OPTION), &hook_call_option_data);
+            route_option.name = ((stream_route_option*)user_data)->name;
+            route_option.value = ((stream_route_option*)user_data)->value;
+            pa_hal_manager_update_route_option(m->hal, &route_option);
         }
         break;
     }
@@ -3228,7 +3228,7 @@ static void subscribe_cb(pa_core *core, pa_subscription_event_type_t t, uint32_t
 
 static void message_cb(const char *name, int value, void *user_data) {
     pa_stream_manager *m;
-    pa_stream_manager_hook_data_for_option hook_call_option_data;
+    pa_stream_manager_hook_data_for_update_info hook_call_data;
 
     pa_assert(user_data);
     pa_assert(name);
@@ -3236,11 +3236,11 @@ static void message_cb(const char *name, int value, void *user_data) {
     m = (pa_stream_manager*)user_data;
 
     if (strstr(name, STREAM_ROLE_LOOPBACK)) {
-        memset(&hook_call_option_data, 0, sizeof(pa_stream_manager_hook_data_for_option));
-        hook_call_option_data.stream_role = STREAM_ROLE_LOOPBACK;
-        hook_call_option_data.name = name;
-        hook_call_option_data.value = value;
-        pa_hook_fire(pa_communicator_hook(m->comm.comm, PA_COMMUNICATOR_HOOK_UPDATE_ROUTE_OPTION), &hook_call_option_data);
+        memset(&hook_call_data, 0, sizeof(pa_stream_manager_hook_data_for_update_info));
+        hook_call_data.stream_role = STREAM_ROLE_LOOPBACK;
+        hook_call_data.name = name;
+        hook_call_data.value = value;
+        pa_hook_fire(pa_communicator_hook(m->comm.comm, PA_COMMUNICATOR_HOOK_UPDATE_INFORMATION), &hook_call_data);
     }
 #ifdef HAVE_DBUS
     else {
index ea6f6e6..b4942bc 100644 (file)
@@ -68,11 +68,11 @@ typedef struct _hook_call_data_for_route {
     bool origins_from_new_data;
 } pa_stream_manager_hook_data_for_route;
 
-typedef struct _hook_call_data_for_option {
+typedef struct _hook_call_data_for_update_info {
     const char *stream_role;
     const char *name;
     int32_t value;
-} pa_stream_manager_hook_data_for_option;
+} pa_stream_manager_hook_data_for_update_info;
 
 int32_t pa_stream_manager_get_route_type(void *stream, bool origins_from_new_data, stream_type_t stream_type, stream_route_type_t *stream_route_type);