[0.6.107] Fix unprepare error when the resource_manager state is not aquired 03/224403/2 accepted/tizen/4.0/unified/20200220.234445 submit/tizen_4.0/20200210.085020
authorGilbok Lee <gilbok.lee@samsung.com>
Mon, 10 Feb 2020 08:32:10 +0000 (17:32 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Mon, 10 Feb 2020 08:38:56 +0000 (17:38 +0900)
Change-Id: I3cbcfbd111a298c28a9ced00c8d4ae523ee68a05

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

index 3c69bebeb3ed5b3deef2bf8b4368021b64d8edc0..94b9b86ebe6b74fae6269ef78c261a8dabd8c962 100644 (file)
@@ -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
index 8891fdcda0c64533eff54d2a4c4fb3a3562f0e06..a8a5201bcf394b65a75cd6a76e4df22514aed8b3 100644 (file)
@@ -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) {