summaryrefslogtreecommitdiffstats
path: root/ext/gconf/gstgconfaudiosrc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/gconf/gstgconfaudiosrc.c')
-rw-r--r--ext/gconf/gstgconfaudiosrc.c10
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;