stream-manager: Check role/route_type functions to skip process are revised 39/229539/2 accepted/tizen/unified/20200408.131511 submit/tizen/20200406.030837 submit/tizen/20200407.002130 submit/tizen/20200408.002613
authorSangchul Lee <sc11.lee@samsung.com>
Wed, 1 Apr 2020 23:43:22 +0000 (08:43 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 6 Apr 2020 01:19:39 +0000 (10:19 +0900)
check_role_to_skip()/check_route_type_to_skip() are renamed to
is_invalid_role()/is_invalid_route_type() respectively.

Specific conditions inside of the previous functions are
moved out of the new renamed functions.

[Version] 13.0.10
[Issue Type] Refactoring

Change-Id: Ie6ec2e0a3b42078d1265e15ef35db240daad2111
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/pulseaudio-modules-tizen.spec
src/stream-manager.c

index b9b0c18..c465e25 100644 (file)
@@ -1,6 +1,6 @@
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          13.0.10
+Version:          13.0.11
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index 72e26bb..8ca0809 100644 (file)
@@ -982,43 +982,35 @@ static bool check_name_to_skip(pa_stream_manager *m, process_command_type_t comm
     return ret;
 }
 
-static bool check_role_to_skip(pa_stream_manager *m, process_command_type_t command, const char *role) {
-    bool ret = true;
+static bool is_invalid_role(pa_stream_manager *m, const char *role) {
     stream_info *s = NULL;
 
     pa_assert(m);
     pa_assert(m->stream_infos);
     pa_assert(role);
 
-    if ((s = pa_hashmap_get(m->stream_infos, role)))
-      ret = false;
-    if (s && pa_safe_streq(role, STREAM_ROLE_LOOPBACK_MIRRORING) &&
-       (command == PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_STARTED ||
-       command == PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_ENDED))
-      ret = true;
-
-    pa_log_debug("role is [%s], skip(%d)", role, ret);
+    if (!(s = pa_hashmap_get(m->stream_infos, role))) {
+        pa_log_warn("invalid role[%s], skip it", role);
+        return true;
+    }
 
-    return ret;
+    return false;
 }
 
-static bool check_route_type_to_skip(process_command_type_t command, const char *route_type_str) {
-    bool ret = false;
-    stream_route_type_t route_type;
+static bool is_invalid_route_type(const char *route_type_str, stream_route_type_t *route_type) {
+    int32_t _route_type;
 
     pa_assert(route_type_str);
 
-    if (!pa_atoi(route_type_str, (int32_t*)&route_type)) {
-        if ((route_type == STREAM_ROUTE_TYPE_MANUAL_EXT) &&
-            (command > PROCESS_COMMAND_PREPARE && command < PROCESS_COMMAND_UPDATE_VOLUME))
-            ret = true; /* this route route is for external device, need to skip */
-    } else {
+    if (pa_atoi(route_type_str, &_route_type)) {
         pa_log_error("could not convert route_type_str(%s) to int", route_type_str);
-        ret = true;
+        return true;
     }
-    pa_log_debug("command is [%s], skip(%d) for route_type(%d)", process_command_type_str[command], ret, route_type);
 
-    return ret;
+    if (route_type)
+        *route_type = (stream_route_type_t)_route_type;
+
+    return false;
 }
 
 static bool check_name_is_vstream(void *stream, stream_type_t type, bool is_new_data) {
@@ -1999,7 +1991,7 @@ static process_stream_result_t handle_command_prepare(pa_stream_manager *m, void
         pa_log_warn("role is null, set default to [%s]", role);
     } else {
         /* skip roles */
-        if (check_role_to_skip(m, PROCESS_COMMAND_PREPARE, role))
+        if (is_invalid_role(m, role))
             return PROCESS_STREAM_RESULT_SKIP;
 
         /* load forwarding device */
@@ -2022,7 +2014,7 @@ static process_stream_result_t handle_command_prepare(pa_stream_manager *m, void
 
     /* skip route types */
     if ((route_type_str = pa_proplist_gets(GET_STREAM_NEW_PROPLIST(stream, type), PA_PROP_MEDIA_ROLE_ROUTE_TYPE))) {
-        if (check_route_type_to_skip(PROCESS_COMMAND_PREPARE, route_type_str))
+        if (is_invalid_route_type(route_type_str, NULL))
             return PROCESS_STREAM_RESULT_SKIP;
     }
 
@@ -2048,6 +2040,7 @@ static process_stream_result_t handle_command_change_route_by_stream_started(pa_
                                                                         stream_type_t type, bool is_new_data) {
     const char *role = NULL;
     const char *route_type_str = NULL;
+    stream_route_type_t route_type;
     const char *preferred_device_role;
     bool need_update = false;
 
@@ -2080,11 +2073,17 @@ static process_stream_result_t handle_command_change_route_by_stream_started(pa_
     }
 
     /* skip roles */
-    if (check_role_to_skip(m, PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_STARTED, role))
+    if (is_invalid_role(m, role))
+        return PROCESS_STREAM_RESULT_SKIP;
+    if (pa_safe_streq(role, STREAM_ROLE_LOOPBACK_MIRRORING)) {
+        pa_log_debug("role is [%s], skip it", role);
         return PROCESS_STREAM_RESULT_SKIP;
+    }
 
     /* skip route types */
-    if (check_route_type_to_skip(PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_STARTED, route_type_str))
+    if (is_invalid_route_type(route_type_str, &route_type))
+        return PROCESS_STREAM_RESULT_SKIP;
+    if (route_type == STREAM_ROUTE_TYPE_MANUAL_EXT)
         return PROCESS_STREAM_RESULT_SKIP;
 
     if (!is_new_data) {
@@ -2165,12 +2164,19 @@ static process_stream_result_t handle_command_change_route_by_stream_ended(pa_st
         update_forwarding_device(m, false);
 
     /* skip roles */
-    if (check_role_to_skip(m, PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_ENDED, role))
+    if (is_invalid_role(m, role))
+        return PROCESS_STREAM_RESULT_SKIP;
+    if (pa_safe_streq(role, STREAM_ROLE_LOOPBACK_MIRRORING)) {
+        pa_log_debug("role is [%s], skip it", role);
         return PROCESS_STREAM_RESULT_SKIP;
+    }
 
     /* skip route types */
     if ((route_type_str = pa_proplist_gets(GET_STREAM_PROPLIST(stream, type), PA_PROP_MEDIA_ROLE_ROUTE_TYPE))) {
-        if (check_route_type_to_skip(PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_ENDED, route_type_str))
+        stream_route_type_t route_type;
+        if (is_invalid_route_type(route_type_str, &route_type))
+            return PROCESS_STREAM_RESULT_SKIP;
+        if (route_type == STREAM_ROUTE_TYPE_MANUAL_EXT)
             return PROCESS_STREAM_RESULT_SKIP;
     }
 
@@ -2213,12 +2219,15 @@ static process_stream_result_t handle_command_change_route_by_stream_focus_chang
     }
 
     /* skip roles */
-    if (check_role_to_skip(m, PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_FOCUS_CHANGED, role))
+    if (is_invalid_role(m, role))
         return PROCESS_STREAM_RESULT_SKIP;
 
     /* skip route types */
     if ((route_type_str = pa_proplist_gets(GET_STREAM_PROPLIST(stream, type), PA_PROP_MEDIA_ROLE_ROUTE_TYPE))) {
-        if (check_route_type_to_skip(PROCESS_COMMAND_CHANGE_ROUTE_BY_STREAM_FOCUS_CHANGED, route_type_str))
+        stream_route_type_t route_type;
+        if (is_invalid_route_type(route_type_str, &route_type))
+            return PROCESS_STREAM_RESULT_SKIP;
+        if (route_type == STREAM_ROUTE_TYPE_MANUAL_EXT)
             return PROCESS_STREAM_RESULT_SKIP;
     }
 
@@ -2302,12 +2311,12 @@ static process_stream_result_t handle_command_add_remove_parent_id(pa_stream_man
     }
 
     /* skip roles */
-    if (check_role_to_skip(m, command, role))
+    if (is_invalid_role(m, role))
         return PROCESS_STREAM_RESULT_SKIP;
 
     /* skip route types */
     if ((route_type_str = pa_proplist_gets(GET_STREAM_PROPLIST(stream, type), PA_PROP_MEDIA_ROLE_ROUTE_TYPE))) {
-        if (check_route_type_to_skip(command, route_type_str))
+        if (is_invalid_route_type(route_type_str, NULL))
             return PROCESS_STREAM_RESULT_SKIP;
     }