diff options
Diffstat (limited to 'ext/gconf/gstgconfaudiosrc.c')
-rw-r--r-- | ext/gconf/gstgconfaudiosrc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/gconf/gstgconfaudiosrc.c b/ext/gconf/gstgconfaudiosrc.c index b9379c4c..589cf6af 100644 --- a/ext/gconf/gstgconfaudiosrc.c +++ b/ext/gconf/gstgconfaudiosrc.c @@ -71,7 +71,7 @@ gst_gconf_audio_src_class_init (GstGConfAudioSrcClass * klass) * Hack to make negotiation work. */ -static void +static gboolean gst_gconf_audio_src_reset (GstGConfAudioSrc * src) { GstPad *targetpad; @@ -82,6 +82,10 @@ gst_gconf_audio_src_reset (GstGConfAudioSrc * src) gst_bin_remove (GST_BIN (src), src->kid); } src->kid = gst_element_factory_make ("fakesrc", "testsrc"); + if (!src->kid) { + GST_ERROR_OBJECT (src, "Failed to create fakesrc"); + return FALSE; + } gst_bin_add (GST_BIN (src), src->kid); targetpad = gst_element_get_pad (src->kid, "src"); @@ -90,6 +94,7 @@ gst_gconf_audio_src_reset (GstGConfAudioSrc * src) g_free (src->gconf_str); src->gconf_str = NULL; + return TRUE; } static void @@ -225,7 +230,8 @@ gst_gconf_audio_src_change_state (GstElement * element, switch (transition) { case GST_STATE_CHANGE_READY_TO_NULL: - gst_gconf_audio_src_reset (src); + if (!gst_gconf_audio_src_reset (src)) + ret = GST_STATE_CHANGE_FAILURE; break; default: break; |