From c30ec7d1a53ce1956011896270a19e103ea6455b Mon Sep 17 00:00:00 2001 From: Denis Dolzhenko Date: Wed, 30 Nov 2016 14:27:13 +0200 Subject: [PATCH] Fixed: MediaPlayer focus for call reason. Change-Id: Ia8a1fc985325c52593cf8eb5d610fc6535018959 Signed-off-by: Denis Dolzhenko --- src/Viewer/Utils/inc/MediaPlayer.h | 1 + src/Viewer/Utils/src/MediaPlayer.cpp | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Viewer/Utils/inc/MediaPlayer.h b/src/Viewer/Utils/inc/MediaPlayer.h index 60d0d66b..9dbd8b29 100644 --- a/src/Viewer/Utils/inc/MediaPlayer.h +++ b/src/Viewer/Utils/inc/MediaPlayer.h @@ -56,6 +56,7 @@ namespace Msg const char *extra_info, void *user_data); player_state_e getState() const; + static bool isCallReason(sound_stream_focus_change_reason_e reason); private: player_h m_Player; diff --git a/src/Viewer/Utils/src/MediaPlayer.cpp b/src/Viewer/Utils/src/MediaPlayer.cpp index 2aaf31f9..92435422 100644 --- a/src/Viewer/Utils/src/MediaPlayer.cpp +++ b/src/Viewer/Utils/src/MediaPlayer.cpp @@ -71,6 +71,13 @@ player_state_e MediaPlayer::getState() const return state; } +bool MediaPlayer::isCallReason(sound_stream_focus_change_reason_e reason) +{ + return reason == SOUND_STREAM_FOCUS_CHANGED_BY_RINGTONE || + reason == SOUND_STREAM_FOCUS_CHANGED_BY_VOIP || + reason == SOUND_STREAM_FOCUS_CHANGED_BY_CALL; +} + bool MediaPlayer::getFocus() const { sound_stream_focus_change_reason_e acquiredBy = SOUND_STREAM_FOCUS_CHANGED_BY_MEDIA; @@ -80,9 +87,7 @@ bool MediaPlayer::getFocus() const if (sound_manager_get_current_playback_focus(&acquiredBy, &flags, &extraInfo) == SOUND_MANAGER_ERROR_NONE) { free(extraInfo); - return acquiredBy != SOUND_STREAM_FOCUS_CHANGED_BY_RINGTONE && - acquiredBy != SOUND_STREAM_FOCUS_CHANGED_BY_VOIP && - acquiredBy != SOUND_STREAM_FOCUS_CHANGED_BY_CALL; + return !isCallReason(acquiredBy); } return true; @@ -180,8 +185,9 @@ void MediaPlayer::on_sound_stream_focus_state_changed_cb(sound_stream_info_h str { MSG_LOG("Interrupted focus change reason = ", reason); auto *self = static_cast(user_data); - ecore_main_loop_thread_safe_call_async - ( + if (isCallReason(reason)) + { + ecore_main_loop_thread_safe_call_async( [](void *data) { auto *self = (MediaPlayer*)data; @@ -189,4 +195,5 @@ void MediaPlayer::on_sound_stream_focus_state_changed_cb(sound_stream_info_h str self->m_pListener->onMediaPlayerSoundFocusChanged(); }, self); + } } -- 2.34.1