uvch264: Prevent temporary elements from going to playing
authorOlivier Crête <olivier.crete@collabora.com>
Wed, 16 Jan 2013 19:48:46 +0000 (14:48 -0500)
committerOlivier Crête <olivier.crete@collabora.com>
Wed, 16 Jan 2013 19:51:11 +0000 (14:51 -0500)
sys/uvch264/gstuvch264_src.c

index 6901131..388e519 100644 (file)
@@ -29,7 +29,7 @@
  */
 
 #ifdef HAVE_CONFIG_H
-#  include <config.h>
+#include <config.h>
 #endif
 
 #include "gstuvch264_src.h"
@@ -2189,7 +2189,7 @@ _transform_caps (GstUvcH264Src * self, GstCaps * caps, const gchar * name)
   GstPad *sink;
   GstCaps *out_caps = NULL;
 
-  if (!el || !cf || !fs || !gst_bin_add (GST_BIN (self), el)) {
+  if (!el || !cf || !fs) {
     if (el)
       gst_object_unref (el);
     if (cf)
@@ -2198,6 +2198,17 @@ _transform_caps (GstUvcH264Src * self, GstCaps * caps, const gchar * name)
       gst_object_unref (fs);
     goto done;
   }
+
+  gst_element_set_locked_state (el, TRUE);
+  gst_element_set_locked_state (cf, TRUE);
+  gst_element_set_locked_state (fs, TRUE);
+
+  if (!gst_bin_add (GST_BIN (self), el)) {
+    gst_object_unref (el);
+    gst_object_unref (cf);
+    gst_object_unref (fs);
+    goto done;
+  }
   if (!gst_bin_add (GST_BIN (self), cf)) {
     gst_object_unref (cf);
     gst_object_unref (fs);