From 8b544c9ab09a1c52553a402b239d65b509471b45 Mon Sep 17 00:00:00 2001 From: Parichay Kapoor Date: Fri, 12 Apr 2019 11:13:00 +0900 Subject: [PATCH] [IIO] bugfixes related to errors from yocto run 1. set base src as async, resolves the error of hanging without setting base_src as async, _start_complete gets called twice 2. initializing log_file to NULL 3. NULL check for variable before using it for remove/rmdir 4. remove _query function, was incomplete, and complete function was same as parent class function resolve #1353 Signed-off-by: Parichay Kapoor --- gst/nnstreamer/tensor_source/tensor_src_iio.c | 35 ++++----------------------- tests/nnstreamer_source/unittest_src_iio.cpp | 6 +++-- 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/gst/nnstreamer/tensor_source/tensor_src_iio.c b/gst/nnstreamer/tensor_source/tensor_src_iio.c index 58ba063..c64adf4 100644 --- a/gst/nnstreamer/tensor_source/tensor_src_iio.c +++ b/gst/nnstreamer/tensor_source/tensor_src_iio.c @@ -244,7 +244,6 @@ static gboolean gst_tensor_src_iio_stop (GstBaseSrc * src); static GstStateChangeReturn gst_tensor_src_iio_change_state (GstElement * element, GstStateChange transition); static gboolean gst_tensor_src_iio_event (GstBaseSrc * src, GstEvent * event); -static gboolean gst_tensor_src_iio_query (GstBaseSrc * src, GstQuery * query); static gboolean gst_tensor_src_iio_set_caps (GstBaseSrc * src, GstCaps * caps); static GstCaps *gst_tensor_src_iio_get_caps (GstBaseSrc * src, GstCaps * filter); @@ -354,7 +353,6 @@ gst_tensor_src_iio_class_init (GstTensorSrcIIOClass * klass) bsrc_class->start = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_start); bsrc_class->stop = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_stop); bsrc_class->event = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_event); - bsrc_class->query = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_query); bsrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_set_caps); bsrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_get_caps); bsrc_class->fixate = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_fixate); @@ -426,6 +424,11 @@ gst_tensor_src_iio_init (GstTensorSrcIIO * self) gst_base_src_set_live (GST_BASE_SRC (self), TRUE); /** set the timestamps on each buffer */ gst_base_src_set_do_timestamp (GST_BASE_SRC (self), TRUE); + /** + * set async is necessary to make state change async + * sync state changes does not need calling _start_complete() from _start() + */ + gst_base_src_set_async (GST_BASE_SRC (self), TRUE); } /** @@ -1874,34 +1877,6 @@ gst_tensor_src_iio_event (GstBaseSrc * src, GstEvent * event) } /** - * @brief handle queries - */ -static gboolean -gst_tensor_src_iio_query (GstBaseSrc * src, GstQuery * query) -{ - gboolean res = FALSE; - - switch (GST_QUERY_TYPE (query)) { - case GST_QUERY_SCHEDULING: - { - /** Only support sequential data access */ - gst_query_set_scheduling (query, GST_SCHEDULING_FLAG_SEQUENTIAL, 1, -1, - 0); - /** Only support push mode for now */ - gst_query_add_scheduling_mode (query, GST_PAD_MODE_PUSH); - - res = TRUE; - break; - } - default: - res = GST_BASE_SRC_CLASS (parent_class)->query (src, query); - break; - } - - return res; -} - -/** * @brief set new caps */ static gboolean diff --git a/tests/nnstreamer_source/unittest_src_iio.cpp b/tests/nnstreamer_source/unittest_src_iio.cpp index ccb63de..a102ee4 100644 --- a/tests/nnstreamer_source/unittest_src_iio.cpp +++ b/tests/nnstreamer_source/unittest_src_iio.cpp @@ -215,6 +215,8 @@ make_iio_dev_structure (int num) iio_dev->dev_device_dir = g_build_filename (iio_dev->dev_dir, device_folder_name, NULL); + iio_dev->log_file = NULL; + PREV_IIO_DEV_DIR = IIO_DEV_DIR; IIO_DEV_DIR = g_strdup (iio_dev->dev_dir); @@ -697,7 +699,7 @@ static gint safe_remove (const char *filename) { /** cover for both regular file as well as pipes */ - if (g_file_test (filename, G_FILE_TEST_EXISTS) + if (filename && g_file_test (filename, G_FILE_TEST_EXISTS) && !g_file_test (filename, G_FILE_TEST_IS_DIR)) { return remove (filename); } @@ -714,7 +716,7 @@ safe_remove (const char *filename) static gint safe_rmdir (const char *dirname) { - if (g_file_test (dirname, G_FILE_TEST_IS_DIR)) { + if (dirname && g_file_test (dirname, G_FILE_TEST_IS_DIR)) { return rmdir (dirname); } return 0; -- 2.7.4