From: Gilbok Lee Date: Mon, 13 Jul 2020 06:21:21 +0000 (+0900) Subject: [0.6.232] Always release h/w resource, when player destroy X-Git-Tag: accepted/tizen/unified/20200715.002118^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git;a=commitdiff_plain;h=bb38b744f824b0917dad76e1f3efc19d8381920e [0.6.232] Always release h/w resource, when player destroy Change-Id: I71c79e4e3405e0cc26eb2e01ad34c6d11acbee9c --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index cf0f4ba..a24f255 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.231 +Version: 0.6.232 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index f4773fd..71db29e 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -594,6 +594,29 @@ int _mmplayer_acquire_hw_resource(mmplayer_t *player, mmplayer_resource_type_e t 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; @@ -4964,12 +4987,6 @@ _mmplayer_destroy(MMHandleType handle) _mmplayer_release_video_capture(player); - /* de-initialize resource manager */ - if (mm_resource_manager_destroy(player->resource_manager) - != MM_RESOURCE_MANAGER_ERROR_NONE) - LOGE("failed to destroy resource manager"); - LOGD("resource manager is destroyed"); - /* release miscellaneous information */ __mmplayer_release_misc(player); @@ -4979,6 +4996,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 */