From: aman.jeph Date: Wed, 28 Oct 2020 10:04:52 +0000 (+0530) Subject: [TIZENIOT-1686] Fixed Play/Pause update issue with other media player X-Git-Tag: submit/tizen/20201029.115430~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b20d5197a35e032c8cf24be68da4f7f451fcc1e;p=profile%2Fiot%2Fapps%2Fnative%2Fvideo-player.git [TIZENIOT-1686] Fixed Play/Pause update issue with other media player Change-Id: I6443a40a3f15c1c5afa314be8210eadbba4100f8 Signed-off-by: aman.jeph --- diff --git a/playview/src/core/vp-sound.c b/playview/src/core/vp-sound.c index c529e89..ef77f64 100755 --- a/playview/src/core/vp-sound.c +++ b/playview/src/core/vp-sound.c @@ -31,6 +31,17 @@ static int earjack_conn_changed_cb_id; + +static void vp_player_pause_main_thread_callback(void *user_data) { + VideoLogInfo("Main loop thread safe pause callback called"); + vp_play_normal_view_pause_player(user_data); +} + +static void vp_player_play_main_thread_callback(void *user_data) { + VideoLogInfo("Main loop thread safe play callback called"); + vp_play_normal_view_play_player(user_data); +} + /** * * @param stream_info @@ -68,7 +79,14 @@ void vp_player_focus_callback(sound_stream_info_h stream_info, VideoLogDebug("Reason for change : %d and state of playback is : %d", reason_for_change, state_for_playback); if (state_for_playback == SOUND_STREAM_FOCUS_STATE_RELEASED) { - vp_play_normal_view_pause_player(pPlayView); + + // this callback is called from internal thread of sound manager not from main thread + // elementry api need to be called from main thread to work + // so we can't update ui in this thread. + // we need to add main loop callback to update ui. + VideoLogInfo("Added main lopp callback to pause ui"); + ecore_main_loop_thread_safe_call_sync(vp_player_pause_main_thread_callback, user_data); + sound_manager_get_focus_reacquisition(pPlayView->stream_info, &pPlayView->reacquire_state); if (reason_for_change == SOUND_STREAM_FOCUS_CHANGED_BY_VOIP @@ -88,7 +106,12 @@ void vp_player_focus_callback(sound_stream_info_h stream_info, } } } else { - vp_play_normal_view_play_player(pPlayView); + // this callback is called from internal thread of sound manager not from main thread + // elementry api need to be called from main thread to work + // so we can't update ui in this thread. + // we need to add main loop callback to update ui. + VideoLogInfo("Added main lopp callback to play ui"); + ecore_main_loop_thread_safe_call_sync(vp_player_play_main_thread_callback, user_data); } }