dlsym(handle->dl_handle, "attach_backend");
char *error = dlerror();
- if (error != NULL) {
+ if (error) {
LOGE("Failed dlsym : %s", error);
return VISION_SOURCE_ERROR_INTERNAL;
}
attach_backend(&(handle->funcs));
+ VISION_SOURCE_IMPLEMENT_CHECK(handle->funcs.init);
int ret = handle->funcs.init(&(handle->backend_handle));
if (ret != VISION_SOURCE_ERROR_NONE) {
const char *backend_name = iniparser_getstring(ini, "common:name", NULL);
- if (backend_name == NULL) {
+ if (!backend_name) {
iniparser_freedict(ini);
return VISION_SOURCE_ERROR_INVALID_PARAMETER;
}
return ret;
}
- source_handle = malloc(sizeof(vision_source_internal_s));
+ source_handle = calloc(1, sizeof(vision_source_internal_s));
VISION_SOURCE_NULL_ARG_CHECK(source_handle);
const char *backend_name = backend_tmp;
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.exit);
int ret = source_handle->funcs.exit(source_handle->backend_handle);
if (ret != VISION_SOURCE_ERROR_NONE) {
VISION_SOURCE_NULL_ARG_CHECK(source_handle->dl_handle);
ret = dlclose(source_handle->dl_handle);
- if (ret) {
+ if (ret != 0) {
LOGE("Failed to close shared object : %s", dlerror());
return VISION_SOURCE_ERROR_INTERNAL;
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.open_device);
return source_handle->funcs.open_device(source_handle->backend_handle,
device_index);
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.close_device);
return source_handle->funcs.close_device(source_handle->backend_handle);
}
int vision_source_start_stream(vision_source_h handle, stream_cb callback,
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.start_stream);
return source_handle->funcs.start_stream(source_handle->backend_handle,
callback, user_data);
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.stop_stream);
return source_handle->funcs.stop_stream(source_handle->backend_handle);
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.enumerate_devices);
return source_handle->funcs.enumerate_devices(source_handle->backend_handle,
info_list);
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.set_stream_format);
return source_handle->funcs.set_stream_format(source_handle->backend_handle,
format);
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.get_capture_frame);
return source_handle->funcs.get_capture_frame(source_handle->backend_handle,
buffer);
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.release_capture_frame);
return source_handle->funcs.release_capture_frame(
source_handle->backend_handle, buffer_index);
}
VISION_SOURCE_NULL_ARG_CHECK(handle);
vision_source_internal_s *source_handle =
(vision_source_internal_s *) handle;
+ VISION_SOURCE_IMPLEMENT_CHECK(source_handle->funcs.ioctl);
return source_handle->funcs.ioctl(source_handle->backend_handle, request,
arg);
}
\ No newline at end of file