From: Eunhae Choi Date: Wed, 8 Feb 2017 09:31:52 +0000 (+0900) Subject: [v0.6.29] remove resource set after handling the resource conflict X-Git-Tag: accepted/tizen/common/20170210.170636~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ab8d43e4601690f56d659a911960948447e793d9;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [v0.6.29] remove resource set after handling the resource conflict Change-Id: I3482857bd2aba0262ea939e7009e75b5dc0a585d --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 2f674c3..8c29ee4 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 f0f470a..b41627d 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -7663,9 +7663,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) @@ -7687,8 +7685,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) { @@ -9066,7 +9065,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);