diff options
author | Eunhae Choi <eunhae1.choi@samsung.com> | 2017-02-08 18:31:52 +0900 |
---|---|---|
committer | Eunhae Choi <eunhae1.choi@samsung.com> | 2017-02-08 20:29:40 +0900 |
commit | a1cd2a68da527366d6e5ed5f17818181dbe6f133 (patch) | |
tree | c371d21e0df81b7d95ba52bd6c6dbdd3237c41d8 | |
parent | b2149f09ed2de1ac0a9fdc91c50657bb3699de0c (diff) | |
download | libmm-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.spec | 2 | ||||
-rw-r--r-- | src/mm_player_priv.c | 9 | ||||
-rw-r--r-- | src/mm_player_resource.c | 17 |
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); |