summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEunhae Choi <eunhae1.choi@samsung.com>2017-02-08 18:31:52 +0900
committerEunhae Choi <eunhae1.choi@samsung.com>2017-02-08 20:29:40 +0900
commita1cd2a68da527366d6e5ed5f17818181dbe6f133 (patch)
treec371d21e0df81b7d95ba52bd6c6dbdd3237c41d8
parentb2149f09ed2de1ac0a9fdc91c50657bb3699de0c (diff)
downloadlibmm-player-a1cd2a68da527366d6e5ed5f17818181dbe6f133.tar.gz
libmm-player-a1cd2a68da527366d6e5ed5f17818181dbe6f133.tar.bz2
libmm-player-a1cd2a68da527366d6e5ed5f17818181dbe6f133.zip
[v0.6.29] remove resource set after handling the resource conflict
Change-Id: I3482857bd2aba0262ea939e7009e75b5dc0a585d
-rw-r--r--packaging/libmm-player.spec2
-rw-r--r--src/mm_player_priv.c9
-rw-r--r--src/mm_player_resource.c17
3 files changed, 19 insertions, 9 deletions
diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec
index efd7c1d..8e5483f 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.28
+Version: 0.6.29
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c
index 3755568..511ba4e 100644
--- a/src/mm_player_priv.c
+++ b/src/mm_player_priv.c
@@ -7651,9 +7651,7 @@ __gst_get_position(mm_player_t* player, int format, unsigned long* position) //
*(returning zero when getting current position in paused state
* and when failed to get postion during seeking
*/
- if ((current_state == MM_PLAYER_STATE_PAUSED)
- || (!ret)) {
- //|| (player->last_position != 0 && pos_msec == 0))
+ if ((current_state == MM_PLAYER_STATE_PAUSED) || (!ret)) {
LOGD("pos_msec = %"GST_TIME_FORMAT" and ret = %d and state = %d", GST_TIME_ARGS(pos_msec), ret, current_state);
if (player->playback_rate < 0.0)
@@ -7675,8 +7673,9 @@ __gst_get_position(mm_player_t* player, int format, unsigned long* position) //
if (player->sound_focus.keep_last_pos) {
LOGD("return last pos as stop by asm, %"GST_TIME_FORMAT, GST_TIME_ARGS(player->last_position));
pos_msec = player->last_position;
- } else
+ } else {
player->last_position = pos_msec;
+ }
}
switch (format) {
@@ -9054,7 +9053,7 @@ _mmplayer_unrealize(MMHandleType hplayer)
if (ret != MM_ERROR_NONE)
LOGE("failed to release sound focus, ret(0x%x)\n", ret);
- if (!player->resource_manager.by_rm_cb &&
+ if (!player->resource_manager.by_rm_cb && /* is being released */
_mmplayer_resource_manager_get_state(&player->resource_manager, &resource_state) == MM_ERROR_NONE) {
if (resource_state >= RESOURCE_STATE_ACQUIRED) {
ret = _mmplayer_resource_manager_release(&player->resource_manager);
diff --git a/src/mm_player_resource.c b/src/mm_player_resource.c
index ab95c86..5011e81 100644
--- a/src/mm_player_resource.c
+++ b/src/mm_player_resource.c
@@ -175,6 +175,17 @@ static void mrp_rset_state_callback(mrp_res_context_t *cx, const mrp_res_resourc
LOGD(" - resource set is released");
player->resource_manager.state = RESOURCE_STATE_PREPARED;
MMPLAYER_RESOURCE_SIGNAL(&player->resource_manager);
+
+ /* mm player was unrealized by resource conflict. */
+ if (player->resource_manager.by_rm_cb == TRUE) {
+ LOGD(" - delete resource set ");
+ if (player->resource_manager.rset) {
+ mrp_res_delete_resource_set(player->resource_manager.rset);
+ player->resource_manager.rset = NULL;
+ }
+ player->resource_manager.state = RESOURCE_STATE_INITIALIZED;
+ player->resource_manager.by_rm_cb = FALSE;
+ }
}
MMPLAYER_RESOURCE_UNLOCK(&player->resource_manager);
@@ -222,14 +233,14 @@ static void mrp_resource_release_cb(mrp_res_context_t *cx, const mrp_res_resourc
LOGW("no need to interrupt, so leave");
} else {
if (resource_released) {
- player->resource_manager.by_rm_cb = TRUE;
+ player->resource_manager.by_rm_cb = TRUE; /* will be reset in state cb */
LOGD("video resource conflict so, resource will be freed by unrealizing");
result = _mmplayer_unrealize((MMHandleType)player);
if (result)
LOGW("failed to unrealize");
- player->resource_manager.by_rm_cb = FALSE;
- } else
+ } else {
LOGW("could not find videobin");
+ }
/* lock is called in __mmplayer_can_do_interrupt() */
MMPLAYER_CMD_UNLOCK(player);