Update for multi-HAL interface 61/314261/3 accepted/tizen/unified/20240805.114552 accepted/tizen/unified/dev/20240807.093059 accepted/tizen/unified/toolchain/20240812.132527 accepted/tizen/unified/x/20240806.012738 accepted/tizen/unified/x/asan/20240813.230819
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 9 Jul 2024 09:59:25 +0000 (18:59 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 18 Jul 2024 10:30:31 +0000 (19:30 +0900)
[Version] 1.0.0
[Issue Type] New feature

Change-Id: I80478cf00a69516bb347713abfd35160c60153b9
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/hal-api-camera.spec
src/hal-api-camera.c

index b8b340f34e28e349ad26fdfc6316294daeb6abf4..136692ba9aa9a56b85a54efb3d5cdf2637d61710 100644 (file)
@@ -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
index a7570ada01f4d95c6b7cf967be14cd54d630f094..122daedb7f0891910af6131d4188a587f8722ed3 100644 (file)
@@ -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;
 }