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:
Edward Hervey 2025-01-05 11:41:18 +01:00 committed by GStreamer Marge Bot
parent 21d81d25ec
commit 5bc4ebfe61

View file

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