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
This commit is contained in:
Benjamin Otte 2004-03-14 12:40:57 +00:00
parent 7dc81ddbcc
commit 94f1403b7b
2 changed files with 18 additions and 0 deletions

View file

@ -1,3 +1,10 @@
2004-03-14 Benjamin Otte <otte@gnome.org>
* 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
2004-03-14 Benjamin Otte <otte@gnome.org>
* configure.ac:

View file

@ -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);