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/20170913.041518~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee10e8823fb02c8ebf4b6eb3694422821d1c5d9e;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. Change-Id: I4f26bcf743014be56f7b40de2e07e08ca3c8c214 --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 7d4ac2d..0370e5b 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.66 +Version: 0.6.67 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 5de645f..acf3aec 100644 --- a/src/mm_player_common_priv.c +++ b/src/mm_player_common_priv.c @@ -518,15 +518,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; }