Divide case for registering focus node depending on session backward compatibility
[platform/core/api/sound-manager.git] / src / sound_manager_private.c
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;