return NULL;
}
+ backend_data = calloc(1, sizeof(*backend_data));
+ if (!backend_data) {
+ HAL_TDM_ERR("Failed to allocate backend_data");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ return NULL;
+ }
+
+ backend_data->display_funcs = calloc(1, sizeof(*backend_data->display_funcs));
+ if (!backend_data->display_funcs) {
+ HAL_TDM_ERR("Failed to allocate display_funcs");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ backend_data->output_funcs = calloc(1, sizeof(*backend_data->output_funcs));
+ if (!backend_data->output_funcs) {
+ HAL_TDM_ERR("Failed to allocate output_funcs");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ backend_data->hwc_funcs = calloc(1, sizeof(*backend_data->hwc_funcs));
+ if (!backend_data->hwc_funcs) {
+ HAL_TDM_ERR("Failed to allocate hwc_funcs");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ backend_data->hwc_window_funcs = calloc(1, sizeof(*backend_data->hwc_window_funcs));
+ if (!backend_data->hwc_window_funcs) {
+ HAL_TDM_ERR("Failed to allocate hwc_window_funcs");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ backend_data->pp_funcs = calloc(1, sizeof(*backend_data->pp_funcs));
+ if (!backend_data->pp_funcs) {
+ HAL_TDM_ERR("Failed to allocate pp_funcs");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ backend_data->capture_funcs = calloc(1, sizeof(*backend_data->capture_funcs));
+ if (!backend_data->capture_funcs) {
+ HAL_TDM_ERR("Failed to allocate capture_funcs");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ backend_data->voutput_funcs = calloc(1, sizeof(*backend_data->voutput_funcs));
+ if (!backend_data->voutput_funcs) {
+ HAL_TDM_ERR("Failed to allocate voutput_funcs");
+ if (error)
+ *error = HAL_TDM_ERROR_OUT_OF_MEMORY;
+ goto fail;
+ }
+
ret = hal_common_get_backend(HAL_MODULE_TDM, (void **)&backend_data);
if (ret < 0) {
HAL_TDM_ERR("Failed to get backend\n");
HAL_TDM_INFO("hal_tdm_get_backend");
return (hal_tdm_backend *)backend_data;
+
+fail:
+ if (backend_data->display_funcs) free(backend_data->display_funcs);
+ if (backend_data->output_funcs) free(backend_data->output_funcs);
+ if (backend_data->hwc_funcs) free(backend_data->hwc_funcs);
+ if (backend_data->hwc_window_funcs) free(backend_data->hwc_window_funcs);
+ if (backend_data->pp_funcs) free(backend_data->pp_funcs);
+ if (backend_data->capture_funcs) free(backend_data->capture_funcs);
+ if (backend_data->voutput_funcs) free(backend_data->voutput_funcs);
+ free(backend_data);
+
+ return NULL;
}
EXTERN hal_tdm_error
return HAL_TDM_ERROR_OPERATION_FAILED;
}
+ free(backend_data->display_funcs);
+ free(backend_data->output_funcs);
+ free(backend_data->hwc_funcs);
+ free(backend_data->hwc_window_funcs);
+ free(backend_data->pp_funcs);
+ free(backend_data->capture_funcs);
+ free(backend_data->voutput_funcs);
+ free(backend_data);
+
g_hal_tdm_backend_data = NULL;
HAL_TDM_INFO("hal_tdm_put_backend");