From 5bc4ebfe611b37fb7eb0e6a8f2203b60ebaf9c79 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Sun, 5 Jan 2025 11:41:18 +0100 Subject: [PATCH] speed: Refactor event handler To avoid fallthrough issues which were tricky to fix Part-of: --- subprojects/gst-plugins-bad/gst/speed/gstspeed.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst/speed/gstspeed.c b/subprojects/gst-plugins-bad/gst/speed/gstspeed.c index a0c3f0ff39..a6af7cb5d8 100644 --- a/subprojects/gst-plugins-bad/gst/speed/gstspeed.c +++ b/subprojects/gst-plugins-bad/gst/speed/gstspeed.c @@ -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; }