} 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;
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;
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);
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;
}