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);
|
GstSpeed *filter = GST_SPEED (parent);
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
|
gboolean forward = TRUE;
|
||||||
|
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
case GST_EVENT_SEGMENT:{
|
case GST_EVENT_SEGMENT:{
|
||||||
|
@ -524,6 +525,8 @@ speed_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
||||||
const GstSegment *segment;
|
const GstSegment *segment;
|
||||||
GstSegment seg;
|
GstSegment seg;
|
||||||
|
|
||||||
|
forward = FALSE;
|
||||||
|
|
||||||
gst_event_parse_segment (event, &segment);
|
gst_event_parse_segment (event, &segment);
|
||||||
|
|
||||||
rate = segment->rate;
|
rate = segment->rate;
|
||||||
|
@ -569,14 +572,17 @@ speed_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
||||||
ret = speed_setcaps (pad, caps);
|
ret = speed_setcaps (pad, caps);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
return ret;
|
forward = FALSE;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
/* Fallthrough so that the caps event gets forwarded */
|
|
||||||
default:
|
default:
|
||||||
ret = gst_pad_event_default (pad, parent, event);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (forward)
|
||||||
|
ret = gst_pad_event_default (pad, parent, event);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue