Divide case for registering focus node depending on session backward compatibility 40/110240/3 accepted/tizen/3.0/common/20170118.130827 accepted/tizen/3.0/ivi/20170118.042759 accepted/tizen/3.0/mobile/20170118.042708 accepted/tizen/3.0/tv/20170118.042721 accepted/tizen/3.0/wearable/20170118.042739 submit/tizen_3.0/20170116.094232
authorSangchul Lee <sc11.lee@samsung.com>
Fri, 13 Jan 2017 09:18:24 +0000 (18:18 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 16 Jan 2017 05:22:30 +0000 (14:22 +0900)
[Version] 0.3.91
[Profile] Common
[Issue Type] Backward compatibility

Change-Id: I27b75b7aed32737ed96f2d21fcaa7f35295168c9
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
include/sound_manager_private.h
packaging/capi-media-sound-manager.spec
src/sound_manager.c
src/sound_manager_internal.c
src/sound_manager_private.c

index 2fe3bb9..ea472b4 100644 (file)
@@ -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);
 
index 060c407..e7a46d7 100755 (executable)
@@ -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
index 6d4d201..d50c826 100644 (file)
@@ -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);
index 6e883d4..ba352ef 100644 (file)
@@ -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);
index 3bf3ff7..60f115b 100644 (file)
@@ -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;