dvbsrc: unify exit paths on _start()
authorReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
Mon, 6 Jun 2016 23:35:15 +0000 (16:35 -0700)
committerReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
Thu, 9 Jun 2016 21:45:59 +0000 (14:45 -0700)
sys/dvb/gstdvbsrc.c

index 76e9ebf..45adba8 100644 (file)
@@ -1985,32 +1985,29 @@ gst_dvbsrc_start (GstBaseSrc * bsrc)
   }
   if (!gst_dvbsrc_tune (src)) {
     GST_ERROR_OBJECT (src, "Not able to lock on to the dvb channel");
-    gst_dvbsrc_unset_pes_filters (src);
-    close (src->fd_frontend);
-    return FALSE;
+    goto fail;
   }
   if (!gst_dvbsrc_open_dvr (src)) {
     GST_ERROR_OBJECT (src, "Not able to open DVR device");
-    /* unset filters also */
-    gst_dvbsrc_unset_pes_filters (src);
-    close (src->fd_frontend);
-    return FALSE;
+    goto fail;
   }
   if (!(src->poll = gst_poll_new (TRUE))) {
     GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE, (NULL),
         ("Could not create an fd set: %s (%d)", g_strerror (errno), errno));
-    /* unset filters also */
-    gst_dvbsrc_unset_pes_filters (src);
-    close (src->fd_frontend);
-    return FALSE;
-  } else {
-    gst_poll_fd_init (&src->poll_fd_dvr);
-    src->poll_fd_dvr.fd = src->fd_dvr;
-    gst_poll_add_fd (src->poll, &src->poll_fd_dvr);
-    gst_poll_fd_ctl_read (src->poll, &src->poll_fd_dvr, TRUE);
+    goto fail;
   }
 
+  gst_poll_fd_init (&src->poll_fd_dvr);
+  src->poll_fd_dvr.fd = src->fd_dvr;
+  gst_poll_add_fd (src->poll, &src->poll_fd_dvr);
+  gst_poll_fd_ctl_read (src->poll, &src->poll_fd_dvr, TRUE);
+
   return TRUE;
+
+fail:
+  gst_dvbsrc_unset_pes_filters (src);
+  close (src->fd_frontend);
+  return FALSE;
 }
 
 static gboolean