__resource_release_cb, new_wfd_sink, &new_wfd_sink->resource_manager)
!= MM_RESOURCE_MANAGER_ERROR_NONE) {
wfd_sink_error("failed to initialize resource manager");
- result = MM_ERROR_WFD_INTERNAL;
- goto fail_to_init;
+ MMWFDSINK_FREEIF(new_wfd_sink);
+ return MM_ERROR_WFD_INTERNAL;
}
/* Initialize gstreamer related */
/* construct attributes */
new_wfd_sink->attrs = _mmwfd_construct_attribute((MMHandleType)new_wfd_sink);
if (!new_wfd_sink->attrs) {
- MMWFDSINK_FREEIF(new_wfd_sink);
wfd_sink_error("failed to set attribute");
- return MM_ERROR_WFD_INTERNAL;
+ goto fail_to_attrs;
}
/* load ini for initialize */
mm_wfd_sink_ini_unload(&new_wfd_sink->ini);
fail_to_load_ini:
_mmwfd_deconstruct_attribute(new_wfd_sink->attrs);
+fail_to_attrs:
+ mm_resource_manager_destroy(new_wfd_sink->resource_manager);
MMWFDSINK_FREEIF(new_wfd_sink);
*wfd_sink = NULL;
/* release attributes */
_mmwfd_deconstruct_attribute(wfd_sink->attrs);
+ /* release resource manager */
+ if(MM_ERROR_NONE != mm_resource_manager_destroy(wfd_sink->resource_manager)) {
+ wfd_sink_error("failed to destroy resource manager");
+ return MM_ERROR_WFD_INTERNAL;
+ }
+
/* release the others */
g_free(wfd_sink->coupled_sink_address);