return MM_ERROR_PLAYER_INTERNAL;
}
+ LOGD("commit [%d type] resource", type);
rm_ret = mm_resource_manager_commit(player->resource_manager);
if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
LOGE("failed to commit of resource, ret(0x%x)", rm_ret);
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);
+
+ rm_ret = mm_resource_manager_mark_all_for_release(player->resource_manager);
+ if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
+ LOGW("failed to mark all for release of resource, ret(0x%x)", rm_ret);
+ goto rm_destroy;
+ }
+
+ rm_ret = mm_resource_manager_commit(player->resource_manager);
+ if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE)
+ LOGW("failed to commit resource, ret(0x%x)", rm_ret);
+
+rm_destroy:
+ /* 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);
+ return;
+ }
+
+ 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;
player->hw_resource[type] = NULL;
+ LOGD("commit [%d type] resource", type);
rm_ret = mm_resource_manager_commit(player->resource_manager);
if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
- LOGE("failed to commit of resource, ret(0x%x)", rm_ret);
+ LOGE("failed to commit resource, ret(0x%x)", rm_ret);
return MM_ERROR_PLAYER_INTERNAL;
}
MMPLAYER_GST_GET_CAPS_INFO(ref_caps, str, name, caps_ret);
if (!caps_ret)
goto ERROR;
-
+ if (caps)
+ gst_caps_unref(caps);
caps = gst_caps_ref(ref_caps);
}
MMPLAYER_RETURN_IF_FAIL(unused);
MMPLAYER_RETURN_IF_FAIL(data);
- caps = gst_pad_get_current_caps(pad);
- if (!caps)
- return;
-
MMPLAYER_GST_GET_CAPS_INFO_FROM_PAD(pad, caps, str, name, caps_ret);
if (!caps_ret)
goto ERROR;
_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 */
player->uri_info.uri_list = g_list_append(player->uri_info.uri_list, g_strdup(uri));
SECURE_LOGD("add original path : %s", uri);
} else {
- player->uri_info.uri_list = g_list_delete_link(player->uri_info.uri_list, g_list_nth(player->uri_info.uri_list, 0));
- player->uri_info.uri_list = g_list_insert(player->uri_info.uri_list, g_strdup(uri), 0);
-
+ g_free(g_list_nth_data(player->uri_info.uri_list, 0));
+ player->uri_info.uri_list = g_list_prepend(
+ g_list_delete_link(player->uri_info.uri_list, player->uri_info.uri_list), g_strdup(uri));
SECURE_LOGD("change original path : %s", uri);
}
} else {
static void
__mmplayer_release_misc_post(mmplayer_t *player)
{
- char *original_uri = NULL;
+ gchar *original_uri = NULL;
MMPLAYER_FENTER();
/* player->pipeline is already released before. */
mm_player_set_attribute((MMHandleType)player, NULL, "profile_uri",
original_uri, (original_uri) ? strlen(original_uri) : (0), NULL);
-
+ MMPLAYER_FREEIF(original_uri);
}
/* clear the audio stream buffer list */