Fixed TSAM-9761 and TSAM-9762 (Call Related issues while music is playing) 67/96867/2
authorbhutani.92 <bhutani.92@samsung.com>
Thu, 10 Nov 2016 11:59:10 +0000 (17:29 +0530)
committerbhutani.92 <bhutani.92@samsung.com>
Thu, 10 Nov 2016 12:00:44 +0000 (17:30 +0530)
Change-Id: I90aace9c2275296f1a44f82cc98e1375e84693f3
Signed-off-by: bhutani.92 <bhutani.92@samsung.com>
src/core/mp-player-mgr.c
src/view/mp-player-view.c
src/widget/mp-now-playing.c

index 2402a676690f40015529ad8476a7b5c4d31c480b..6fb8ba0af8f27dba55269517fdceaedf66ae1a27 100755 (executable)
@@ -1139,6 +1139,7 @@ mp_player_mgr_safety_volume_set(int foreground)
 void mp_player_focus_callback(sound_stream_info_h stream_info, sound_stream_focus_change_reason_e reason_for_change,
                                        const char *additional_info, void *user_data)
 {
+       startfunc;
        struct appdata *ad = user_data;
 
        sound_stream_focus_state_e state_for_playback;
@@ -1188,7 +1189,7 @@ void mp_player_focus_callback(sound_stream_info_h stream_info, sound_stream_focu
                        sound_manager_set_focus_reacquisition(ad->stream_info, EINA_FALSE);
                }
        } else {
-               if (ad->stream_info) {
+               if (ad->stream_info && !g_strcmp0(additional_info, "cam_capture")) {
                        ret = sound_manager_release_focus(ad->stream_info, SOUND_STREAM_FOCUS_FOR_PLAYBACK, NULL);
                        if (ret != SOUND_MANAGER_ERROR_NONE) {
                                ERROR_TRACE("failed to release focus error[%x]", ret);
index bccb2cee09f802877c70628bb3fb46731bbaa141..27bf89a8eba7e1ad3223b6d4e9314d986c8a2874 100755 (executable)
@@ -2750,6 +2750,11 @@ static void _mp_player_view_play_pause_btn_clicked_cb(void *data, Evas_Object *o
        struct appdata *ad = mp_util_get_appdata();
        MP_CHECK(ad);
 
+       if (_mp_is_current_focus_available(ad) != 0) {
+               ERROR_TRACE("Some other application has the focus currently... Returning...");
+               return;
+       }
+
        MpPlayerView_t *view = (MpPlayerView_t *)data;
        MP_CHECK(view);
 
@@ -2842,18 +2847,8 @@ static void _mp_player_view_prev_btn_pressed_cb(void *data, Evas_Object *obj, vo
        struct appdata *ad = mp_util_get_appdata();
        MP_CHECK(ad);
 
-       int ret = SOUND_MANAGER_ERROR_NONE;
-       int playback_flag = SOUND_BEHAVIOR_NONE;
-       char *additional_info = NULL;
-       int changed_by = SOUND_STREAM_FOCUS_CHANGED_BY_MEDIA;
-       ret = sound_manager_get_current_playback_focus(&changed_by, &playback_flag, &additional_info);
-       if (ret != SOUND_MANAGER_ERROR_NONE) {
-               ERROR_TRACE("Cannot determine current playback focus");
-       }
-
-       DEBUG_TRACE("Changed by : %d", changed_by);
-       if (changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_CALL || changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_VOIP || changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_RINGTONE) {
-               DEBUG_TRACE("Cannot resume Music Player due to call... Changing state in paused state...");
+       if (_mp_is_current_focus_available(ad) != 0) {
+               ERROR_TRACE("Some other application has the focus currently... Changing state in paused state...");
                ad->paused_by_user = TRUE;
        }
 
@@ -2881,18 +2876,8 @@ static void _mp_player_view_next_btn_pressed_cb(void *data, Evas_Object *obj, vo
        struct appdata *ad = mp_util_get_appdata();
        MP_CHECK(ad);
 
-       int ret = SOUND_MANAGER_ERROR_NONE;
-       int playback_flag = SOUND_BEHAVIOR_NONE;
-       char *additional_info = NULL;
-       int changed_by = SOUND_STREAM_FOCUS_CHANGED_BY_MEDIA;
-       ret = sound_manager_get_current_playback_focus(&changed_by, &playback_flag, &additional_info);
-       if (ret != SOUND_MANAGER_ERROR_NONE) {
-               ERROR_TRACE("Cannot determine current playback focus");
-       }
-
-       DEBUG_TRACE("Changed by : %d", changed_by);
-       if (changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_CALL || changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_VOIP || changed_by == SOUND_STREAM_FOCUS_CHANGED_BY_RINGTONE) {
-               DEBUG_TRACE("Cannot resume Music Player due to call... Changing state in paused state...");
+       if (_mp_is_current_focus_available(ad) != 0) {
+               ERROR_TRACE("Some other application has the focus currently... Changing state in paused state...");
                ad->paused_by_user = TRUE;
        }
 
index 8084539711fa0226ef0f1a59dff3ebc113819c01..ab7e06cfe414c49772045b5d22c9b853c2893736 100755 (executable)
@@ -562,6 +562,11 @@ static void _mp_now_playing_btn_clicked_cb(void *data, Evas_Object *obj, void *e
        struct appdata *ad = mp_util_get_appdata();
        MP_CHECK(ad);
 
+       if (_mp_is_current_focus_available(ad) != 0) {
+               ERROR_TRACE("Some other application has the focus currently... Returning...");
+               return;
+       }
+
        ad->hide_player_view = true;
        mp_setting_set_nowplaying_id(getpid());
 
@@ -575,6 +580,15 @@ static void _mp_now_playing_btn_clicked_cb(void *data, Evas_Object *obj, void *e
 static void _mp_now_playing_btn_pressed_cb(void *data, Evas_Object *obj, void *event_info)
 {
        DEBUG_TRACE("button pressed");
+
+       struct appdata *ad = mp_util_get_appdata();
+       MP_CHECK(ad);
+
+       if (_mp_is_current_focus_available(ad) != 0) {
+               ERROR_TRACE("Some other application has the focus currently... Changing state in paused state...");
+               ad->paused_by_user = TRUE;
+       }
+
        char *source = (char *)data;
        if (!g_strcmp0(source, NOW_PLAYING_FF_SOURCE)) {
                mp_play_control_ff(true, false, true);