diff options
| author | Wim Taymans <wim.taymans@gmail.com> | 2006-12-18 15:51:54 +0000 | 
|---|---|---|
| committer | Wim Taymans <wim.taymans@gmail.com> | 2006-12-18 15:51:54 +0000 | 
| commit | 3abb0f8d67b7c8d64792aeb39b9ca424249a6cb9 (patch) | |
| tree | 8c576bb682c8a2bcc867f6f11f6376eed453bf8c | |
| parent | 5c63981e41958369c0aeb9bf53e9f40a186c79e9 (diff) | |
ext/ladspa/gstsignalprocessor.c: Reset flow_state back to _OK after a flush stop so that we exit our error state afte...
Original commit message from CVS:
* ext/ladspa/gstsignalprocessor.c: (gst_signal_processor_setcaps),
(gst_signal_processor_event):
Reset flow_state back to _OK after a flush stop so that we exit our
error state after the flush. Fixes #374213
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | ext/ladspa/gstsignalprocessor.c | 25 | 
2 files changed, 25 insertions, 7 deletions
@@ -1,3 +1,10 @@ +2006-12-18  Wim Taymans  <wim@fluendo.com> + +	* ext/ladspa/gstsignalprocessor.c: (gst_signal_processor_setcaps), +	(gst_signal_processor_event): +	Reset flow_state back to _OK after a flush stop so that we exit our +	error state after the flush. Fixes #374213 +  2006-12-16  David Schleef  <ds@schleef.org>  	* sys/osxvideo/osxvideosink.h: diff --git a/ext/ladspa/gstsignalprocessor.c b/ext/ladspa/gstsignalprocessor.c index 12a0faff..99865c0f 100644 --- a/ext/ladspa/gstsignalprocessor.c +++ b/ext/ladspa/gstsignalprocessor.c @@ -382,25 +382,26 @@ gst_signal_processor_setcaps (GstPad * pad, GstCaps * caps)      GstStructure *s;      gint sample_rate; +    GST_DEBUG_OBJECT (pad, "got caps %" GST_PTR_FORMAT, caps); +      s = gst_caps_get_structure (caps, 0);      if (!gst_structure_get_int (s, "rate", &sample_rate)) {        GST_WARNING ("got no sample-rate");        goto impossible; -    } else { -      GST_DEBUG_OBJECT (self, "Got rate=%d", sample_rate);      } +    GST_DEBUG_OBJECT (self, "Got rate=%d", sample_rate); +      if (GST_SIGNAL_PROCESSOR_IS_RUNNING (self))        gst_signal_processor_stop (self);      if (GST_SIGNAL_PROCESSOR_IS_INITIALIZED (self))        gst_signal_processor_cleanup (self); -    if (!gst_signal_processor_setup (self, sample_rate)) { +    if (!gst_signal_processor_setup (self, sample_rate))        goto start_failed; -    } else { -      self->sample_rate = sample_rate; -      gst_caps_replace (&self->caps, caps); -    } + +    self->sample_rate = sample_rate; +    gst_caps_replace (&self->caps, caps);    } else {      GST_DEBUG_OBJECT (self, "skipping, have caps already");    } @@ -449,6 +450,16 @@ gst_signal_processor_event (GstPad * pad, GstEvent * event)    if (bclass->event)      bclass->event (self, event); +  switch (GST_EVENT_TYPE (event)) { +    case GST_EVENT_FLUSH_START: +      break; +    case GST_EVENT_FLUSH_STOP: +      /* clear errors now */ +      self->flow_state = GST_FLOW_OK; +      break; +    default: +      break; +  }    ret = gst_pad_event_default (pad, event);    gst_object_unref (self);  | 
