mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-05 22:12:34 +00:00
speed: Refactor event handler
To avoid fallthrough issues which were tricky to fix Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
This commit is contained in:
parent
21d81d25ec
commit
5bc4ebfe61
1 changed files with 9 additions and 3 deletions
|
@ -515,6 +515,7 @@ speed_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||
{
|
||||
GstSpeed *filter = GST_SPEED (parent);
|
||||
gboolean ret = FALSE;
|
||||
gboolean forward = TRUE;
|
||||
|
||||
switch (GST_EVENT_TYPE (event)) {
|
||||
case GST_EVENT_SEGMENT:{
|
||||
|
@ -524,6 +525,8 @@ speed_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||
const GstSegment *segment;
|
||||
GstSegment seg;
|
||||
|
||||
forward = FALSE;
|
||||
|
||||
gst_event_parse_segment (event, &segment);
|
||||
|
||||
rate = segment->rate;
|
||||
|
@ -569,14 +572,17 @@ speed_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||
ret = speed_setcaps (pad, caps);
|
||||
if (!ret) {
|
||||
gst_event_unref (event);
|
||||
return ret;
|
||||
forward = FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
/* Fallthrough so that the caps event gets forwarded */
|
||||
default:
|
||||
ret = gst_pad_event_default (pad, parent, event);
|
||||
break;
|
||||
}
|
||||
|
||||
if (forward)
|
||||
ret = gst_pad_event_default (pad, parent, event);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue