From: Jeongmo Yang Date: Tue, 9 Jul 2024 09:59:25 +0000 (+0900) Subject: Update for multi-HAL interface X-Git-Tag: accepted/tizen/unified/20240805.114552^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2ccf7d5d335b0e1ef3aedaa4216f1b6bb371af27;p=platform%2Fhal%2Fapi%2Fcamera.git Update for multi-HAL interface [Version] 1.0.0 [Issue Type] New feature Change-Id: I80478cf00a69516bb347713abfd35160c60153b9 Signed-off-by: Jeongmo Yang --- diff --git a/packaging/hal-api-camera.spec b/packaging/hal-api-camera.spec index b8b340f..136692b 100644 --- a/packaging/hal-api-camera.spec +++ b/packaging/hal-api-camera.spec @@ -4,7 +4,7 @@ ### main package ######### Name: %{name} Summary: %{name} interface -Version: 0.0.23 +Version: 1.0.0 Release: 0 Group: Development/Libraries License: Apache-2.0 diff --git a/src/hal-api-camera.c b/src/hal-api-camera.c index a7570ad..122daed 100644 --- a/src/hal-api-camera.c +++ b/src/hal-api-camera.c @@ -57,6 +57,38 @@ typedef struct _hal_camera_s { } hal_camera_s; +static int hal_camera_init_backend(void **data, void *user_data) +{ + if (!data) { + SLOGE("NULL data"); + return -EINVAL; + } + + *data = g_new0(hal_backend_camera_funcs, 1); + + SLOGI("new - camera HAL funcs[%p], size[%zu]", + *data, sizeof(hal_backend_camera_funcs)); + + return 0; +} + + +static int hal_camera_exit_backend(void *data, void *user_data) +{ + if (!data) { + SLOGE("NULL data"); + return -EINVAL; + } + + SLOGI("release - camera HAL funcs[%p], size[%zu]", + data, sizeof(hal_backend_camera_funcs)); + + g_free(data); + + return 0; +} + + int hal_camera_init(const char *hal_name, void **camera_handle) { int ret = 0; @@ -64,9 +96,15 @@ int hal_camera_init(const char *hal_name, void **camera_handle) HAL_CAMERA_RETURN_IF_FAILED(camera_handle, CAMERA_ERROR_INVALID_PARAMETER); + SLOGI("start - lib[%s]", hal_name ? hal_name : "default"); + new_handle = g_new0(hal_camera_s, 1); - ret = hal_common_get_backend_with_library_name(HAL_MODULE_CAMERA, (void **)&new_handle->funcs, hal_name); + ret = hal_common_get_backend_with_library_name_v2(HAL_MODULE_CAMERA, + (void **)&new_handle->funcs, + NULL, + hal_camera_init_backend, + hal_name); if (ret != TIZEN_ERROR_NONE) { SLOGE("Failed to get backend"); goto __HAL_INIT_FAILED; @@ -91,8 +129,13 @@ int hal_camera_init(const char *hal_name, void **camera_handle) return CAMERA_ERROR_NONE; __HAL_INIT_FAILED: - if (new_handle->funcs) - hal_common_put_backend_with_library_name(HAL_MODULE_CAMERA, (void *)new_handle->funcs, hal_name); + if (new_handle->funcs) { + hal_common_put_backend_with_library_name_v2(HAL_MODULE_CAMERA, + (void *)new_handle->funcs, + NULL, + hal_camera_exit_backend, + hal_name); + } g_free(new_handle); @@ -117,14 +160,19 @@ int hal_camera_deinit(void *camera_handle) return ret; } - hal_common_put_backend_with_library_name(HAL_MODULE_CAMERA, (void *)handle->funcs, handle->hal_name); + hal_common_put_backend_with_library_name_v2(HAL_MODULE_CAMERA, + (void *)handle->funcs, + NULL, + hal_camera_exit_backend, + handle->hal_name); if (handle->hal_name) g_free(handle->hal_name); - memset(handle, 0x0, sizeof(hal_camera_s)); g_free(handle); + SLOGI("done"); + return CAMERA_ERROR_NONE; }