From e05ef8610f275f9e1ed393c5fc4871cd77df2ce2 Mon Sep 17 00:00:00 2001 From: Gilbok Lee Date: Mon, 10 Feb 2020 17:32:10 +0900 Subject: [PATCH] [0.6.107] Fix unprepare error when the resource_manager state is not aquired Change-Id: I3cbcfbd111a298c28a9ced00c8d4ae523ee68a05 --- packaging/libmm-player.spec | 2 +- src/mm_player_priv.c | 29 ++++++++++++++++++----------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index 3c69beb..94b9b86 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.106 +Version: 0.6.107 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 8891fdc..a8a5201 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -9344,22 +9344,29 @@ _mmplayer_unrealize(MMHandleType hplayer) ret = __gst_unrealize(player); /* set asm stop if success */ - if (MM_ERROR_NONE == ret) { + if (ret == MM_ERROR_NONE) { ret = _mmplayer_sound_release_focus(&player->sound_focus); if (ret != MM_ERROR_NONE) LOGE("failed to release sound focus, ret(0x%x)\n", ret); - if (player->resource_manager[RESOURCE_TYPE_VIDEO_OVERLAY].by_rm_cb || - !player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER].by_rm_cb) { - ret = _mmplayer_resource_manager_release(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER]); - if (ret != MM_ERROR_NONE) - LOGE("failed to release decoder resource, ret(0x%x)\n", ret); + if ((player->resource_manager[RESOURCE_TYPE_VIDEO_OVERLAY].by_rm_cb || + !player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER].by_rm_cb) && + _mmplayer_resource_manager_get_state(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER], &resource_state) == MM_ERROR_NONE) { + if (resource_state == RESOURCE_STATE_ACQUIRED) { + ret = _mmplayer_resource_manager_release(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER]); + if (ret != MM_ERROR_NONE) + LOGE("failed to release decoder resource, ret(0x%x)\n", ret); + } } - if (player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER].by_rm_cb || - !player->resource_manager[RESOURCE_TYPE_VIDEO_OVERLAY].by_rm_cb) { - ret = _mmplayer_resource_manager_release(&player->resource_manager[RESOURCE_TYPE_VIDEO_OVERLAY]); - if (ret != MM_ERROR_NONE) - LOGE("failed to release overlay resource, ret(0x%x)\n", ret); + + if ((player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER].by_rm_cb || + !player->resource_manager[RESOURCE_TYPE_VIDEO_OVERLAY].by_rm_cb) && + _mmplayer_resource_manager_get_state(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER], &resource_state) == MM_ERROR_NONE) { + if (resource_state == RESOURCE_STATE_ACQUIRED) { + ret = _mmplayer_resource_manager_release(&player->resource_manager[RESOURCE_TYPE_VIDEO_OVERLAY]); + if (ret != MM_ERROR_NONE) + LOGE("failed to release overlay resource, ret(0x%x)\n", ret); + } } if (_mmplayer_resource_manager_get_state(&player->resource_manager[RESOURCE_TYPE_VIDEO_DECODER], &resource_state) == MM_ERROR_NONE) { -- 2.34.1