From 1d9e1d6a3df4f58aef4ba82e2844262793af8093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 11 Feb 2008 18:31:43 +0000 Subject: [PATCH] gst/playback/: Handle case where we can't create the volume element a bit better (#514307). Original commit message from CVS: * gst/playback/gstplaybin.c: (gen_audio_element): * gst/playback/gstplaysink.c: (gen_audio_chain): Handle case where we can't create the volume element a bit better (#514307). --- ChangeLog | 7 +++++++ gst/playback/gstplaybin.c | 12 +++++++++++- gst/playback/gstplaysink.c | 12 +++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index db2ec854f4..a064bce100 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-02-11 Tim-Philipp Müller + + * gst/playback/gstplaybin.c: (gen_audio_element): + * gst/playback/gstplaysink.c: (gen_audio_chain): + Handle case where we can't create the volume element a bit + better (#514307). + 2008-02-11 Tim-Philipp Müller * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_check_get_range): diff --git a/gst/playback/gstplaybin.c b/gst/playback/gstplaybin.c index c5ddf00fed..47e9f2c309 100644 --- a/gst/playback/gstplaybin.c +++ b/gst/playback/gstplaybin.c @@ -1052,6 +1052,8 @@ gen_audio_element (GstPlayBin * play_bin) gst_bin_add (GST_BIN_CAST (element), scale); volume = gst_element_factory_make ("volume", "volume"); + if (volume == NULL) + goto no_volume; g_object_set (G_OBJECT (volume), "volume", play_bin->volume, NULL); play_bin->volume_element = volume; gst_bin_add (GST_BIN_CAST (element), volume); @@ -1092,7 +1094,6 @@ no_audioconvert: gst_object_unref (element); return NULL; } - no_audioresample: { post_missing_element_message (play_bin, "audioresample"); @@ -1102,6 +1103,15 @@ no_audioresample: gst_object_unref (element); return NULL; } +no_volume: + { + post_missing_element_message (play_bin, "volume"); + GST_ELEMENT_ERROR (play_bin, CORE, MISSING_PLUGIN, + (_("Missing element '%s' - check your GStreamer installation."), + "volume"), ("possibly a liboil version mismatch?")); + gst_object_unref (element); + return NULL; + } link_failed: { GST_ELEMENT_ERROR (play_bin, CORE, PAD, diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 8eedf00fc5..a4da99cca7 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -946,6 +946,8 @@ gen_audio_chain (GstPlaySink * playsink, gboolean raw) if (playsink->flags & GST_PLAY_FLAG_SOFT_VOLUME) { chain->volume = gst_element_factory_make ("volume", "volume"); + if (chain->volume == NULL) + goto no_volume; /* configure with the latest volume */ g_object_set (G_OBJECT (chain->volume), "volume", playsink->volume, NULL); gst_bin_add (bin, chain->volume); @@ -987,7 +989,6 @@ no_audioconvert: free_chain ((GstPlayChain *) chain); return NULL; } - no_audioresample: { post_missing_element_message (playsink, "audioresample"); @@ -997,6 +998,15 @@ no_audioresample: free_chain ((GstPlayChain *) chain); return NULL; } +no_volume: + { + post_missing_element_message (playsink, "volume"); + GST_ELEMENT_ERROR (playsink, CORE, MISSING_PLUGIN, + (_("Missing element '%s' - check your GStreamer installation."), + "volume"), ("possibly a liboil version mismatch?")); + free_chain ((GstPlayChain *) chain); + return NULL; + } link_failed: { GST_ELEMENT_ERROR (playsink, CORE, PAD,