From: Gilbok Lee Date: Mon, 13 Jul 2020 06:21:21 +0000 (+0900) Subject: [0.6.218] Always release h/w resource, when player destroy X-Git-Tag: submit/tizen_5.5/20200721.020220~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e24c4ca98fa0d7e14e25b4399c81da095c30372e;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [0.6.218] Always release h/w resource, when player destroy Change-Id: I71c79e4e3405e0cc26eb2e01ad34c6d11acbee9c --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index ae93736..0bbda67 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.217 +Version: 0.6.218 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index 788b412..3d295a7 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -600,6 +600,29 @@ static int __mmplayer_acquire_hw_resource(mmplayer_t *player, mmplayer_resource_ return MM_ERROR_NONE; } +static void __mmplayer_destroy_hw_resource(mmplayer_t *player) +{ + int rm_ret = MM_RESOURCE_MANAGER_ERROR_NONE; + + MMPLAYER_RETURN_IF_FAIL(player); + MMPLAYER_RETURN_IF_FAIL(player->resource_manager); + + mm_resource_manager_mark_all_for_release(player->resource_manager); + + rm_ret = mm_resource_manager_commit(player->resource_manager); + if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) + LOGW("failed to commit of resource, ret(0x%x)", rm_ret); + + /* de-initialize resource manager */ + rm_ret = mm_resource_manager_destroy(player->resource_manager); + if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) + LOGW("failed to destroy resource manager, ret(0x%x)", rm_ret); + + player->resource_manager = NULL; + + LOGD("resource manager is destroyed"); +} + static int __mmplayer_release_hw_resource(mmplayer_t *player, mmplayer_resource_type_e type) { int rm_ret = MM_RESOURCE_MANAGER_ERROR_NONE; @@ -4865,11 +4888,6 @@ _mmplayer_destroy(MMHandleType handle) _mmplayer_release_video_capture(player); - /* de-initialize resource manager */ - if (MM_RESOURCE_MANAGER_ERROR_NONE != mm_resource_manager_destroy( - player->resource_manager)) - LOGE("failed to deinitialize resource manager"); - /* release miscellaneous information */ __mmplayer_release_misc(player); @@ -4879,6 +4897,8 @@ _mmplayer_destroy(MMHandleType handle) return MM_ERROR_PLAYER_INTERNAL; } + __mmplayer_destroy_hw_resource(player); + g_queue_free(player->bus_msg_q); /* release subtitle info lock and cond */