From 15ffb2974a7fd4b9a38e53a84e5d39cefae8b67e Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 14 Apr 2005 10:50:15 +0000 Subject: [PATCH] ext/ffmpeg/gstffmpegdec.c: Safety bet to not completely crush the system on EOS. Fixes the bad behaviour of #300200 (... Original commit message from CVS: * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_handle_event): Safety bet to not completely crush the system on EOS. Fixes the bad behaviour of #300200 (doesn't fix the actual issue). --- ChangeLog | 6 ++++++ ext/ffmpeg/gstffmpegdec.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e699356..0ab89ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-04-14 Ronald S. Bultje + + * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_handle_event): + Safety bet to not completely crush the system on EOS. Fixes the + bad behaviour of #300200 (doesn't fix the actual issue). + 2005-04-02 Ronald S. Bultje * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_open), diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index e33d32c..70ffae1 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -778,14 +778,15 @@ gst_ffmpegdec_handle_event (GstFFMpegDec * ffmpegdec, GstEvent * event) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_EOS: { - gint have_data, len; + gint have_data, len, try = 0; + /* max. 10 times, for safety (see e.g. #300200) */ do { len = gst_ffmpegdec_frame (ffmpegdec, NULL, 0, &have_data, &ffmpegdec->next_ts); if (len < 0 || have_data == 0) break; - } while (1); + } while (try++ < 10); goto forward; } case GST_EVENT_FLUSH: -- 2.7.4