From 3e5febcdd10b6a3aa744dd071730f601dca797c9 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 5 May 2005 09:49:08 +0000 Subject: [PATCH] gst/: Don't ignore _push() return values. Original commit message from CVS: * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain), (gst_audio_convert_caps_remove_format_info), (gst_audio_convert_setcaps), (gst_audio_convert_fixate), (gst_audio_convert_change_state), (gst_audio_convert_channels): * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_src_negotiate), (gst_videotestsrc_src_link), (gst_videotestsrc_parse_caps), (gst_videotestsrc_src_accept_caps), (gst_videotestsrc_setcaps), (gst_videotestsrc_activate), (gst_videotestsrc_init), (gst_videotestsrc_loop): Don't ignore _push() return values. Make sure no processing is done when shutting down. Videotestsrc pad activation fix. --- ChangeLog | 15 +++++++++++++++ gst/audioconvert/gstaudioconvert.c | 12 +++++++++--- gst/videotestsrc/gstvideotestsrc.c | 7 ++++++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6d9602df9e..6e83c1b13a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2005-05-05 Wim Taymans + + * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain), + (gst_audio_convert_caps_remove_format_info), + (gst_audio_convert_setcaps), (gst_audio_convert_fixate), + (gst_audio_convert_change_state), (gst_audio_convert_channels): + * gst/videotestsrc/gstvideotestsrc.c: + (gst_videotestsrc_src_negotiate), (gst_videotestsrc_src_link), + (gst_videotestsrc_parse_caps), (gst_videotestsrc_src_accept_caps), + (gst_videotestsrc_setcaps), (gst_videotestsrc_activate), + (gst_videotestsrc_init), (gst_videotestsrc_loop): + Don't ignore _push() return values. + Make sure no processing is done when shutting down. + Videotestsrc pad activation fix. + 2005-05-05 Wim Taymans * gst/adder/Makefile.am: diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c index dd98d434fe..c4aca504bb 100644 --- a/gst/audioconvert/gstaudioconvert.c +++ b/gst/audioconvert/gstaudioconvert.c @@ -231,6 +231,7 @@ static GstFlowReturn gst_audio_convert_chain (GstPad * pad, GstBuffer * buf) { GstAudioConvert *this; + GstFlowReturn ret; this = GST_AUDIO_CONVERT (GST_OBJECT_PARENT (pad)); @@ -257,14 +258,17 @@ gst_audio_convert_chain (GstPad * pad, GstBuffer * buf) * - convert rate and channels * - convert back to output format */ + GST_STREAM_LOCK (pad); buf = gst_audio_convert_buffer_to_default_format (this, buf); - buf = gst_audio_convert_channels (this, buf); - buf = gst_audio_convert_buffer_from_default_format (this, buf); - return gst_pad_push (this->src, buf); + ret = gst_pad_push (this->src, buf); + + GST_STREAM_UNLOCK (pad); + + return ret; } static GstCaps * @@ -609,8 +613,10 @@ gst_audio_convert_change_state (GstElement * element) switch (GST_STATE_TRANSITION (element)) { case GST_STATE_PAUSED_TO_READY: + GST_STREAM_LOCK (this->sink); this->convert_internal = NULL; gst_audio_convert_unset_matrix (this); + GST_STREAM_UNLOCK (this->sink); break; default: break; diff --git a/gst/videotestsrc/gstvideotestsrc.c b/gst/videotestsrc/gstvideotestsrc.c index fd06e0eaf2..31b2ab47ec 100644 --- a/gst/videotestsrc/gstvideotestsrc.c +++ b/gst/videotestsrc/gstvideotestsrc.c @@ -342,6 +342,9 @@ gst_videotestsrc_activate (GstPad * pad, GstActivateMode mode) result = TRUE; break; + default: + result = FALSE; + break; } return result; } @@ -676,7 +679,9 @@ gst_videotestsrc_loop (GstPad * pad) videotestsrc->n_frames++; videotestsrc->running_time += GST_BUFFER_DURATION (outbuf); - gst_pad_push (pad, outbuf); + if (gst_pad_push (pad, outbuf) != GST_FLOW_OK) + goto need_pause; + return; need_pause: