Without the camera manager, it is not possible to cleanly delete the FrameBufferAllocator object. Keep the camera manager alive until all the memory object have been released. A shared_ptr to the CameraManager is introduced which is itself stored as a plain pointer and allocated and released explicitly. When more than one C++ member is required, this can be refactored to use a new C++ class, but the struct _GstLibcameraAllocator is allocated and freed by glib, so it does not have automatic destruction presently. Bug: https://bugs.libcamera.org/show_bug.cgi?id=211 [Kieran: Update test framework to remove expected test fail] Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
31 lines
1.2 KiB
Meson
31 lines
1.2 KiB
Meson
# SPDX-License-Identifier: CC0-1.0
|
|
|
|
if not gst_enabled
|
|
subdir_done()
|
|
endif
|
|
|
|
gstreamer_tests = [
|
|
{'name': 'single_stream_test', 'sources': ['gstreamer_single_stream_test.cpp']},
|
|
{'name': 'multi_stream_test', 'sources': ['gstreamer_multi_stream_test.cpp']},
|
|
{'name': 'device_provider_test', 'sources': ['gstreamer_device_provider_test.cpp']},
|
|
{'name': 'memory_lifetime_test', 'sources': ['gstreamer_memory_lifetime_test.cpp']},
|
|
]
|
|
gstreamer_dep = dependency('gstreamer-1.0', required : true)
|
|
gstapp_dep = dependency('gstreamer-app-1.0', required : true)
|
|
|
|
gstreamer_test_args = []
|
|
|
|
if asan_enabled
|
|
gstreamer_test_args += ['-D', 'HAVE_ASAN=1']
|
|
endif
|
|
|
|
foreach test : gstreamer_tests
|
|
exe = executable(test['name'], test['sources'], 'gstreamer_test.cpp',
|
|
cpp_args : gstreamer_test_args,
|
|
dependencies : [libcamera_private, gstreamer_dep, gstapp_dep],
|
|
link_with : test_libraries,
|
|
include_directories : test_includes_internal)
|
|
|
|
test(test['name'], exe, suite : 'gstreamer', is_parallel : false,
|
|
env : gst_env, should_fail : test.get('should_fail', false))
|
|
endforeach
|