From: Sangchul Lee Date: Wed, 1 Apr 2020 23:43:22 +0000 (+0900) Subject: stream-manager: Check role/route_type functions to skip process are revised X-Git-Tag: submit/tizen/20200406.030837^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cf37f9eacd4010e7fefa7fa2f97720b03fbb44bd;p=platform%2Fcore%2Fmultimedia%2Fpulseaudio-modules-tizen.git stream-manager: Check role/route_type functions to skip process are revised 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 --- diff --git a/packaging/pulseaudio-modules-tizen.spec b/packaging/pulseaudio-modules-tizen.spec index b9b0c18..c465e25 100644 --- a/packaging/pulseaudio-modules-tizen.spec +++ b/packaging/pulseaudio-modules-tizen.spec @@ -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+ diff --git a/src/stream-manager.c b/src/stream-manager.c index 72e26bb..8ca0809 100644 --- a/src/stream-manager.c +++ b/src/stream-manager.c @@ -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; }