From: Eunhae Choi Date: Fri, 8 Sep 2017 07:04:42 +0000 (+0900) Subject: [0.6.67] get lock before setting buffering done X-Git-Tag: submit/tizen_4.0/20170908.082724^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=209c5477dbbc31977ebb4646793f39d0afedbe3a;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [0.6.67] get lock before setting buffering done before accessing the streamer, the streamer can be free by calling player_unprepare. (cherry picked from commit ee10e8823fb02c8ebf4b6eb3694422821d1c5d9e) Change-Id: I42b60de5db866ee29d0bc6f1b22af7b78c894ef5 --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 9184264..d7894d4 100644 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@ -1,6 +1,6 @@ Name: libmm-player Summary: Multimedia Framework Player Library -Version: 0.6.63 +Version: 0.6.64 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_common_priv.c b/src/mm_player_common_priv.c index 6e1fede..675a955 100644 --- a/src/mm_player_common_priv.c +++ b/src/mm_player_common_priv.c @@ -526,15 +526,21 @@ __mmplayer_check_useful_message(mm_player_t *player, GstMessage * message) gint buffer_percent = 0; gst_message_parse_buffering(message, &buffer_percent); + if (buffer_percent != MAX_BUFFER_PERCENT) + break; - if ((MMPLAYER_IS_STREAMING(player)) && - (player->streamer) && - (player->streamer->is_buffering == TRUE) && - (buffer_percent == MAX_BUFFER_PERCENT)) { - LOGD(">>> [%s] Buffering DONE is detected !!\n", GST_OBJECT_NAME(GST_MESSAGE_SRC(message))); + if (!MMPLAYER_CMD_TRYLOCK(player)) { + LOGW("can't get cmd lock, send msg to bus"); + break; + } + + if ((player->streamer) && (player->streamer->is_buffering == TRUE)) { + LOGD("[%s] Buffering DONE is detected !!\n", GST_OBJECT_NAME(GST_MESSAGE_SRC(message))); player->streamer->is_buffering_done = TRUE; } + MMPLAYER_CMD_UNLOCK(player); + retval = TRUE; break; }