autodetect: check if the kid has a sync property
authorStefan Sauer <ensonic@users.sf.net>
Thu, 20 Feb 2014 21:52:57 +0000 (22:52 +0100)
committerStefan Sauer <ensonic@users.sf.net>
Thu, 20 Feb 2014 21:52:57 +0000 (22:52 +0100)
previously autovideosrc did not have a sync property and v4l2src has none either.

gst/autodetect/gstautodetect.c
gst/autodetect/gstautodetect.h

index 9497c0c..a3a1c8a 100644 (file)
@@ -349,7 +349,10 @@ gst_auto_detect_detect (GstAutoDetect * self)
   if (!(kid = gst_auto_detect_find_best (self)))
     goto no_sink;
 
-  g_object_set (G_OBJECT (kid), "sync", self->sync, NULL);
+  self->has_sync =
+      g_object_class_find_property (G_OBJECT_GET_CLASS (kid), "sync") != NULL;
+  if (self->has_sync)
+    g_object_set (G_OBJECT (kid), "sync", self->sync, NULL);
   if (klass->configure) {
     klass->configure (self, kid);
   }
@@ -432,7 +435,7 @@ gst_auto_detect_set_property (GObject * object, guint prop_id,
       break;
     case PROP_SYNC:
       self->sync = g_value_get_boolean (value);
-      if (self->kid)
+      if (self->kid && self->has_sync)
         g_object_set_property (G_OBJECT (self->kid), pspec->name, value);
       break;
     default:
index 105c289..03b06ae 100644 (file)
@@ -51,6 +51,7 @@ typedef struct _GstAutoDetect {
 
   /* < private > */ 
   GstElement *kid;
+  gboolean has_sync;
   const gchar *type_klass; /* Source/Sink */
   const gchar *media_klass_lc, *type_klass_lc; /* lower case versions */