[0.6.67] get lock before setting buffering done 30/148630/2 accepted/tizen/4.0/unified/20170911.154912 submit/tizen_4.0/20170908.082724
authorEunhae Choi <eunhae1.choi@samsung.com>
Fri, 8 Sep 2017 07:04:42 +0000 (16:04 +0900)
committerEunhae Choi <eunhae1.choi@samsung.com>
Fri, 8 Sep 2017 07:37:57 +0000 (16:37 +0900)
before accessing the streamer, the streamer can be free
by calling player_unprepare.
(cherry picked from commit ee10e8823fb02c8ebf4b6eb3694422821d1c5d9e)

Change-Id: I42b60de5db866ee29d0bc6f1b22af7b78c894ef5

packaging/libmm-player.spec
src/mm_player_common_priv.c

index 918426458970bb0b4a72e4d4bad42e9b9c979cae..d7894d485e84c419cd8aacc3f6b80dcd87fe310e 100644 (file)
@@ -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
index 6e1feded6db4a0c69c4ca5db34b8eeaf6f81e0b4..675a9557e38a2ce0f0b29ae6e47b101b6290e890 100644 (file)
@@ -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;
        }