From 94f1403b7b476849d62621d22ba0530fe7ab7216 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 14 Mar 2004 12:40:57 +0000 Subject: gst/modplug/gstmodplug.cc: handle events - don't do crap when a discont arrives that's not necessary Original commit message from CVS: * gst/modplug/gstmodplug.cc: handle events - don't do crap when a discont arrives that's not necessary This allows correct loading and playback of mods in Rhythmbox --- gst/modplug/gstmodplug.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'gst') diff --git a/gst/modplug/gstmodplug.cc b/gst/modplug/gstmodplug.cc index c4f143d5..06701c6d 100644 --- a/gst/modplug/gstmodplug.cc +++ b/gst/modplug/gstmodplug.cc @@ -270,6 +270,7 @@ gst_modplug_init (GstModPlug *modplug) modplug->buffer_in = NULL; modplug->state = MODPLUG_STATE_NEED_TUNE; + GST_FLAG_SET (modplug, GST_ELEMENT_EVENT_AWARE); } static void @@ -484,6 +485,7 @@ gst_modplug_fixate (GstPad *pad, const GstCaps *caps) static void gst_modplug_handle_event (GstModPlug *modplug) { + gint64 value; guint32 remaining; GstEvent *event; @@ -495,7 +497,16 @@ gst_modplug_handle_event (GstModPlug *modplug) } switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_EOS: + gst_event_unref (event); + break; case GST_EVENT_DISCONTINUOUS: + if (gst_event_discont_get_value (event, GST_FORMAT_BYTES, &value)) { + if (remaining == value) { + gst_event_unref (event); + break; + } + } gst_bytestream_flush_fast (modplug->bs, remaining); default: gst_pad_event_default (modplug->sinkpad, event); -- cgit v1.2.1