From c25b0fcb9272712c67adc5d3855aa583b35c42d5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 25 Nov 2008 16:26:16 +0000 Subject: [PATCH] gst/autodetect/: Post an error when we can't set the internal ghostpad target. 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 | 9 +++++++++ gst/autodetect/gstautoaudiosink.c | 11 ++++++++++- gst/autodetect/gstautoaudiosrc.c | 11 ++++++++++- gst/autodetect/gstautovideosink.c | 13 +++++++++++-- gst/autodetect/gstautovideosrc.c | 11 ++++++++++- 5 files changed, 50 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 864787d..60fe319 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2008-11-25 Wim Taymans + * 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 + * gst/videocrop/gstvideocrop.c: (gst_video_crop_init), (gst_video_crop_transform), (gst_video_crop_transform_caps), (gst_video_crop_set_caps), (gst_video_crop_set_property): diff --git a/gst/autodetect/gstautoaudiosink.c b/gst/autodetect/gstautoaudiosink.c index e378539..4ed1ba9 100644 --- a/gst/autodetect/gstautoaudiosink.c +++ b/gst/autodetect/gstautoaudiosink.c @@ -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 diff --git a/gst/autodetect/gstautoaudiosrc.c b/gst/autodetect/gstautoaudiosrc.c index 8e23490..8d352c5 100644 --- a/gst/autodetect/gstautoaudiosrc.c +++ b/gst/autodetect/gstautoaudiosrc.c @@ -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 diff --git a/gst/autodetect/gstautovideosink.c b/gst/autodetect/gstautovideosink.c index 6f309e8..d1427c7 100644 --- a/gst/autodetect/gstautovideosink.c +++ b/gst/autodetect/gstautovideosink.c @@ -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 diff --git a/gst/autodetect/gstautovideosrc.c b/gst/autodetect/gstautovideosrc.c index d542178..1de2160 100644 --- a/gst/autodetect/gstautovideosrc.c +++ b/gst/autodetect/gstautovideosrc.c @@ -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 -- 2.7.4