From 948e4d50a6c6f43ede5ba32758e43c759cf007d8 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Wed, 23 Feb 2011 10:32:08 +0100 Subject: [PATCH] playsink: avoid crashing on the way out when needed chain missing --- gst/playback/gstplaysink.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index bb41a036a8..76c6e677cb 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -2217,6 +2217,8 @@ gst_play_sink_reconfigure (GstPlaySink * playsink) if (!playsink->videochain) playsink->videochain = gen_video_chain (playsink, raw, async); + if (!playsink->videochain) + goto no_chain; if (!playsink->video_sinkpad_stream_synchronizer) { GstIterator *it; @@ -2241,6 +2243,8 @@ gst_play_sink_reconfigure (GstPlaySink * playsink) if (!playsink->videodeinterlacechain) playsink->videodeinterlacechain = gen_video_deinterlace_chain (playsink); + if (!playsink->videodeinterlacechain) + goto no_chain; GST_DEBUG_OBJECT (playsink, "adding video deinterlace chain"); @@ -2574,6 +2578,15 @@ gst_play_sink_reconfigure (GstPlaySink * playsink) GST_PLAY_SINK_UNLOCK (playsink); return TRUE; + + /* ERRORS */ +no_chain: + { + /* gen_ chain already posted error */ + GST_DEBUG_OBJECT (playsink, "failed to setup chain"); + GST_PLAY_SINK_UNLOCK (playsink); + return FALSE; + } } /**