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;
_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);
return MM_ERROR_PLAYER_INTERNAL;
}
+ __mmplayer_destroy_hw_resource(player);
+
g_queue_free(player->bus_msg_q);
/* release subtitle info lock and cond */