From ee10e8823fb02c8ebf4b6eb3694422821d1c5d9e Mon Sep 17 00:00:00 2001 From: Eunhae Choi Date: Fri, 8 Sep 2017 16:04:42 +0900 Subject: [PATCH] [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 --- packaging/libmm-player.spec | 2 +- src/mm_player_common_priv.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) 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; } -- 2.7.4