[0.6.218] Always release h/w resource, when player destroy 81/238481/1
authorGilbok Lee <gilbok.lee@samsung.com>
Mon, 13 Jul 2020 06:21:21 +0000 (15:21 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Tue, 14 Jul 2020 08:12:15 +0000 (17:12 +0900)
Change-Id: I71c79e4e3405e0cc26eb2e01ad34c6d11acbee9c

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

index ae937360e7e1211f48f8b446f866d91249f483e5..0bbda67f66a1f3c947cb1738ed5ab94a1d6440d0 100644 (file)
@@ -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
index 788b4125aef841447253e5a0416bae462cac9dad..3d295a7ddebb0818ab8bbdc674fa725c9cf41d0b 100644 (file)
@@ -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 */