[0.6.232] Always release h/w resource, when player destroy 75/238375/3 accepted/tizen/unified/20200715.002118 submit/tizen/20200714.074336
authorGilbok Lee <gilbok.lee@samsung.com>
Mon, 13 Jul 2020 06:21:21 +0000 (15:21 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Mon, 13 Jul 2020 08:36:23 +0000 (17:36 +0900)
Change-Id: I71c79e4e3405e0cc26eb2e01ad34c6d11acbee9c

packaging/libmm-player.spec
src/mm_player_priv.c

index cf0f4ba..a24f255 100644 (file)
@@ -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
index f4773fd..71db29e 100644 (file)
@@ -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 */