test: gstreamer: Simplify elements' ownerships
In gstreamer, when elements are created, usually a floating [1] reference is returned which simply means, there is no ownership transfer (yet). Once can simply check for NULL and return through an error path, without bothering to clean up. Hence, g_autoptr is not much of help here. If the NULL checks have been passed successfully, elements are ready to use. However, we must claim ownership/reference it before using them via g_object_ref_sink(). This patch build upon this principle and removes the g_autoptr from gstreamer test base class (gstreamer_test.cpp) whereever necessary to tide up the code. [1] https://gstreamer.freedesktop.org/documentation/additional/design/MT-refcounting.html?gi-language=c#refcounting1 Signed-off-by: Vedant Paranjape <vedantparanjape160201@gmail.com> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
parent
fa9a9d7f6b
commit
c7daf645d4
1 changed files with 4 additions and 5 deletions
|
@ -78,18 +78,17 @@ GstreamerTest::~GstreamerTest()
|
|||
|
||||
int GstreamerTest::createPipeline()
|
||||
{
|
||||
g_autoptr(GstElement) libcameraSrc = gst_element_factory_make("libcamerasrc", "libcamera");
|
||||
libcameraSrc_ = gst_element_factory_make("libcamerasrc", "libcamera");
|
||||
pipeline_ = gst_pipeline_new("test-pipeline");
|
||||
g_object_ref_sink(libcameraSrc);
|
||||
|
||||
if (!libcameraSrc || !pipeline_) {
|
||||
if (!libcameraSrc_ || !pipeline_) {
|
||||
g_printerr("Unable to create create pipeline %p.%p\n",
|
||||
libcameraSrc, pipeline_);
|
||||
libcameraSrc_, pipeline_);
|
||||
|
||||
return TestFail;
|
||||
}
|
||||
|
||||
libcameraSrc_ = reinterpret_cast<GstElement *>(g_steal_pointer(&libcameraSrc));
|
||||
g_object_ref_sink(libcameraSrc_);
|
||||
|
||||
return TestPass;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue