[IIO] bugfixes related to errors from yocto run
authorParichay Kapoor <pk.kapoor@samsung.com>
Fri, 12 Apr 2019 02:13:00 +0000 (11:13 +0900)
committerJijoong Moon <jijoong.moon@samsung.com>
Fri, 12 Apr 2019 07:15:04 +0000 (16:15 +0900)
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 <pk.kapoor@samsung.com>
gst/nnstreamer/tensor_source/tensor_src_iio.c
tests/nnstreamer_source/unittest_src_iio.cpp

index 58ba063..c64adf4 100644 (file)
@@ -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
index ccb63de..a102ee4 100644 (file)
@@ -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;