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);
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);
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);
}
/* 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;
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;
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;
/* 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;