From 7ee03076d140da23fe414130a13f4c03c3c9c376 Mon Sep 17 00:00:00 2001 From: Sangchul Lee Date: Fri, 13 Jan 2017 18:18:24 +0900 Subject: [PATCH] Divide case for registering focus node depending on session backward compatibility [Version] 0.3.91 [Profile] Common [Issue Type] Backward compatibility Change-Id: I27b75b7aed32737ed96f2d21fcaa7f35295168c9 Signed-off-by: Sangchul Lee --- include/sound_manager_private.h | 2 +- packaging/capi-media-sound-manager.spec | 2 +- src/sound_manager.c | 2 +- src/sound_manager_internal.c | 2 +- src/sound_manager_private.c | 11 +++++++---- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/sound_manager_private.h b/include/sound_manager_private.h index 2fe3bb9..ea472b4 100644 --- a/include/sound_manager_private.h +++ b/include/sound_manager_private.h @@ -279,7 +279,7 @@ void _pa_stream_state_cb(pa_stream *s, void * userdata); int _set_session_mode(_session_mode_e mode); -int _make_pa_connection_and_register_focus(sound_stream_info_s *stream_h, sound_stream_focus_state_changed_cb callback, void *user_data); +int _make_pa_connection_and_register_focus(sound_stream_info_s *stream_h, bool is_for_session, sound_stream_focus_state_changed_cb callback, void *user_data); int _destroy_pa_connection_and_unregister_focus(sound_stream_info_s *stream_h); diff --git a/packaging/capi-media-sound-manager.spec b/packaging/capi-media-sound-manager.spec index 060c407..e7a46d7 100755 --- a/packaging/capi-media-sound-manager.spec +++ b/packaging/capi-media-sound-manager.spec @@ -1,6 +1,6 @@ Name: capi-media-sound-manager Summary: Sound Manager library -Version: 0.3.90 +Version: 0.3.91 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/sound_manager.c b/src/sound_manager.c index 6d4d201..d50c826 100644 --- a/src/sound_manager.c +++ b/src/sound_manager.c @@ -232,7 +232,7 @@ int sound_manager_create_stream_information(sound_stream_type_e stream_type, sou memset(stream_h, 0, sizeof(sound_stream_info_s)); ret = _convert_stream_type(stream_type, &stream_h->stream_type); if (ret == MM_ERROR_NONE) { - ret = _make_pa_connection_and_register_focus(stream_h, callback, user_data); + ret = _make_pa_connection_and_register_focus(stream_h, false, callback, user_data); if (ret == MM_ERROR_NONE) { *stream_info = (sound_stream_info_h)stream_h; SM_REF_FOR_STREAM_INFO(g_stream_info_count, ret); diff --git a/src/sound_manager_internal.c b/src/sound_manager_internal.c index 6e883d4..ba352ef 100644 --- a/src/sound_manager_internal.c +++ b/src/sound_manager_internal.c @@ -88,7 +88,7 @@ int sound_manager_create_stream_information_internal(sound_stream_type_internal_ ret = _convert_stream_type_for_internal(stream_type, &stream_h->stream_type); if (ret == MM_ERROR_NONE) { _set_focus_availability(stream_h); - ret = _make_pa_connection_and_register_focus(stream_h, callback, user_data); + ret = _make_pa_connection_and_register_focus(stream_h, false, callback, user_data); if (!ret) { *stream_info = (sound_stream_info_h)stream_h; LOGI("stream_h(%p), index(%u), user_cb(%p), ret(0x%x)", stream_h, stream_h->index, stream_h->user_cb, ret); diff --git a/src/sound_manager_private.c b/src/sound_manager_private.c index 3bf3ff7..60f115b 100644 --- a/src/sound_manager_private.c +++ b/src/sound_manager_private.c @@ -1342,7 +1342,7 @@ int _set_session_mode(_session_mode_e mode) } /* create stream info and acquire focus for rintone-voip stream */ g_voip_stream_info->stream_type = "ringtone-voip"; - ret = _make_pa_connection_and_register_focus(g_voip_stream_info, _voip_focus_state_change_callback, NULL); + ret = _make_pa_connection_and_register_focus(g_voip_stream_info, true, _voip_focus_state_change_callback, NULL); if (ret != MM_ERROR_NONE) { free(g_voip_stream_info); g_voip_stream_info = NULL; @@ -1447,7 +1447,7 @@ int _set_session_mode(_session_mode_e mode) memset(g_voip_stream_info, 0, sizeof(sound_stream_info_s)); } g_voip_stream_info->stream_type = "voip"; - ret = _make_pa_connection_and_register_focus(g_voip_stream_info, _voip_focus_state_change_callback, NULL); + ret = _make_pa_connection_and_register_focus(g_voip_stream_info, true, _voip_focus_state_change_callback, NULL); if (ret != MM_ERROR_NONE) { free(g_voip_stream_info); g_voip_stream_info = NULL; @@ -1520,7 +1520,7 @@ ERROR_CASE_NO_DESTROY: return ret; } -int _make_pa_connection_and_register_focus(sound_stream_info_s *stream_h, sound_stream_focus_state_changed_cb callback, void *user_data) +int _make_pa_connection_and_register_focus(sound_stream_info_s *stream_h, bool is_for_session, sound_stream_focus_state_changed_cb callback, void *user_data) { int ret = MM_ERROR_NONE; int pa_ret = PA_OK; @@ -1588,7 +1588,10 @@ int _make_pa_connection_and_register_focus(sound_stream_info_s *stream_h, sound_ /* register focus */ if (!stream_h->is_focus_unavailable) { - ret = mm_sound_register_focus(stream_h->index, stream_h->stream_type, _focus_state_change_callback, user_data); + if (is_for_session) + ret = mm_sound_register_focus_for_session(stream_h->index, getpid(), stream_h->stream_type, _focus_state_change_callback, user_data); + else + ret = mm_sound_register_focus(stream_h->index, stream_h->stream_type, _focus_state_change_callback, user_data); if (ret == MM_ERROR_NONE) { stream_h->user_cb = callback; stream_h->user_data = user_data; -- 2.7.4