[0.11] gst-plugins-bad: basecamerasrc: Fail state change if preview pipeline fails creation

Wim Taymans wtay at kemper.freedesktop.org
Mon Sep 26 13:32:36 PDT 2011


Module: gst-plugins-bad
Branch: 0.11
Commit: 43ec4f46b8b4ebdc5aae2aef0667db5c188621d0
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=43ec4f46b8b4ebdc5aae2aef0667db5c188621d0

Author: Thiago Santos <thiago.sousa.santos at collabora.co.uk>
Date:   Tue Sep 20 13:00:49 2011 -0300

basecamerasrc: Fail state change if preview pipeline fails creation

If the preview pipeline fails creation, for any reason, we should
fail basecamerasrc state change.

Also adds a missing g_return_if_fail check to preview pipeline
functions

---

 gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c   |    6 +++++-
 .../gst/basecamerabinsrc/gstcamerabinpreview.c     |    2 ++
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c b/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
index 56bdc6c..d5b8ed7 100644
--- a/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
+++ b/gst-libs/gst/basecamerabinsrc/gstbasecamerasrc.c
@@ -445,7 +445,11 @@ gst_base_camera_src_change_state (GstElement * element,
             gst_camerabin_create_preview_pipeline (GST_ELEMENT_CAST (self),
             self->preview_filter);
 
-      g_assert (self->preview_pipeline != NULL);
+      if (self->preview_pipeline == NULL) {
+        /* failed to create preview pipeline, fail state change */
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
       self->preview_filter_changed = FALSE;
       if (self->preview_caps) {
         GST_DEBUG_OBJECT (self,
diff --git a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
index 5dd82da..be42c98 100644
--- a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
+++ b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
@@ -231,6 +231,8 @@ void
 gst_camerabin_destroy_preview_pipeline (GstCameraBinPreviewPipelineData *
     preview)
 {
+  g_return_if_fail (preview != NULL);
+
   if (preview->processing_lock) {
     g_mutex_free (preview->processing_lock);
     preview->processing_lock = NULL;



More information about the gstreamer-commits mailing list