From 0a37923d3bce3923eb2410cb62976f8ee500536e Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 23 Jul 2024 17:28:27 +0900 Subject: [PATCH] Allocate backend data and funcs in hal-api Change-Id: Ia95300f2b08ac78bc989b3834de22970db557223 --- src/hal-api-tdm.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/hal-api-tdm.c b/src/hal-api-tdm.c index 2f41a3d..6914f4b 100644 --- a/src/hal-api-tdm.c +++ b/src/hal-api-tdm.c @@ -208,6 +208,70 @@ hal_tdm_get_backend(hal_tdm_error *error) 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"); @@ -224,6 +288,18 @@ hal_tdm_get_backend(hal_tdm_error *error) 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 @@ -243,6 +319,15 @@ hal_tdm_put_backend(hal_tdm_backend *backend) 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"); -- 2.34.1