gst/autodetect/: Post an error when we can't set the internal ghostpad target.
authorWim Taymans <wim.taymans@gmail.com>
Tue, 25 Nov 2008 16:26:16 +0000 (16:26 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 25 Nov 2008 16:26:16 +0000 (16:26 +0000)
Original commit message from CVS:
* gst/autodetect/gstautoaudiosink.c: (gst_auto_audio_sink_detect):
* gst/autodetect/gstautoaudiosrc.c: (gst_auto_audio_src_detect):
* gst/autodetect/gstautovideosink.c: (gst_auto_video_sink_reset),
(gst_auto_video_sink_detect):
* gst/autodetect/gstautovideosrc.c: (gst_auto_video_src_detect):
Post an error when we can't set the internal ghostpad target.

ChangeLog
gst/autodetect/gstautoaudiosink.c
gst/autodetect/gstautoaudiosrc.c
gst/autodetect/gstautovideosink.c
gst/autodetect/gstautovideosrc.c

index 864787de0a064a4eaa37865c276a4d2375fad602..60fe3198a3b8c0c7fdcdf9fb00a3d4bb26a407c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-11-25  Wim Taymans  <wim.taymans@collabora.co.uk>
+
+       * gst/autodetect/gstautoaudiosink.c: (gst_auto_audio_sink_detect):
+       * gst/autodetect/gstautoaudiosrc.c: (gst_auto_audio_src_detect):
+       * gst/autodetect/gstautovideosink.c: (gst_auto_video_sink_reset),
+       (gst_auto_video_sink_detect):
+       * gst/autodetect/gstautovideosrc.c: (gst_auto_video_src_detect):
+       Post an error when we can't set the internal ghostpad target.
+
 2008-11-25  Wim Taymans  <wim.taymans@collabora.co.uk>
 
        * gst/videocrop/gstvideocrop.c: (gst_video_crop_init),
index e378539049bc5f9dbd7b2348a88c528e9bd5fc3d..4ed1ba9ee4ddea71557e20577c0435a1bb4572d5 100644 (file)
@@ -361,7 +361,9 @@ gst_auto_audio_sink_detect (GstAutoAudioSink * sink)
   /* attach ghost pad */
   GST_DEBUG_OBJECT (sink, "Re-assigning ghostpad");
   targetpad = gst_element_get_static_pad (sink->kid, "sink");
-  gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad);
+  if (!gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad))
+    goto target_failed;
+
   gst_object_unref (targetpad);
   GST_DEBUG_OBJECT (sink, "done changing auto audio sink");
 
@@ -374,6 +376,13 @@ no_sink:
         ("Failed to find a supported audio sink"));
     return FALSE;
   }
+target_failed:
+  {
+    GST_ELEMENT_ERROR (sink, LIBRARY, INIT, (NULL),
+        ("Failed to set target pad"));
+    gst_object_unref (targetpad);
+    return FALSE;
+  }
 }
 
 static GstStateChangeReturn
index 8e23490ae4b51e990753acf02fac0517831da7a6..8d352c55479b04d43198f27a320a232d2c8c5217 100644 (file)
@@ -362,7 +362,9 @@ gst_auto_audio_src_detect (GstAutoAudioSrc * src)
   /* attach ghost pad */
   GST_DEBUG_OBJECT (src, "Re-assigning ghostpad");
   targetpad = gst_element_get_static_pad (src->kid, "src");
-  gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad);
+  if (!gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad))
+    goto target_failed;
+
   gst_object_unref (targetpad);
   GST_DEBUG_OBJECT (src, "done changing auto audio source");
 
@@ -375,6 +377,13 @@ no_src:
         ("Failed to find a supported audio source"));
     return FALSE;
   }
+target_failed:
+  {
+    GST_ELEMENT_ERROR (src, LIBRARY, INIT, (NULL),
+        ("Failed to set target pad"));
+    gst_object_unref (targetpad);
+    return FALSE;
+  }
 }
 
 static GstStateChangeReturn
index 6f309e887c56b7fed977b0e7cb88a514aadf2c02..d1427c703a08909eeff48474704654f6097b61c3 100644 (file)
@@ -157,7 +157,7 @@ gst_auto_video_sink_reset (GstAutoVideoSink * sink)
   sink->kid = gst_element_factory_make ("fakesink", "tempsink");
   gst_bin_add (GST_BIN (sink), sink->kid);
 
-  /* pad */
+  /* pad, setting this target should always work */
   targetpad = gst_element_get_static_pad (sink->kid, "sink");
   gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad);
   gst_object_unref (targetpad);
@@ -352,7 +352,9 @@ gst_auto_video_sink_detect (GstAutoVideoSink * sink)
   /* attach ghost pad */
   GST_DEBUG_OBJECT (sink, "Re-assigning ghostpad");
   targetpad = gst_element_get_static_pad (sink->kid, "sink");
-  gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad);
+  if (!gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad))
+    goto target_failed;
+
   gst_object_unref (targetpad);
   GST_DEBUG_OBJECT (sink, "done changing auto video sink");
 
@@ -365,6 +367,13 @@ no_sink:
         ("Failed to find a supported video sink"));
     return FALSE;
   }
+target_failed:
+  {
+    GST_ELEMENT_ERROR (sink, LIBRARY, INIT, (NULL),
+        ("Failed to set target pad"));
+    gst_object_unref (targetpad);
+    return FALSE;
+  }
 }
 
 static GstStateChangeReturn
index d542178e204eecb1004d1e9b2bab9b36aad3a641..1de2160b2fa25e6354b1c4123e3130c8fc0ea1e0 100644 (file)
@@ -353,7 +353,9 @@ gst_auto_video_src_detect (GstAutoVideoSrc * src)
   /* attach ghost pad */
   GST_DEBUG_OBJECT (src, "Re-assigning ghostpad");
   targetpad = gst_element_get_static_pad (src->kid, "src");
-  gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad);
+  if (!gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad))
+    goto target_failed;
+
   gst_object_unref (targetpad);
   GST_DEBUG_OBJECT (src, "done changing auto video source");
 
@@ -366,6 +368,13 @@ no_src:
         ("Failed to find a supported video source"));
     return FALSE;
   }
+target_failed:
+  {
+    GST_ELEMENT_ERROR (src, LIBRARY, INIT, (NULL),
+        ("Failed to set target pad"));
+    gst_object_unref (targetpad);
+    return FALSE;
+  }
 }
 
 static GstStateChangeReturn