From: Changyeon Lee Date: Tue, 23 Jul 2024 08:28:27 +0000 (+0900) Subject: Allocate backend data and funcs in hal-api X-Git-Tag: accepted/tizen/unified/x/20240727.073538~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0a37923d3bce3923eb2410cb62976f8ee500536e;p=platform%2Fhal%2Fapi%2Ftdm.git Allocate backend data and funcs in hal-api Change-Id: Ia95300f2b08ac78bc989b3834de22970db557223 --- 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");