pad: apply pad offset on sinkpad events too

Apply the pad offset in the send_event() function as well.
This commit is contained in:
Wim Taymans 2011-05-19 19:01:09 +02:00
parent e8b8c4aaa6
commit e83d5320a2

View file

@ -4755,7 +4755,6 @@ gst_pad_push_event (GstPad * pad, GstEvent * event)
break;
}
case GST_EVENT_SEGMENT:
{
/* check if we need to adjust the segment */
if (offset != 0 && peerpad != NULL) {
GstSegment segment;
@ -4769,7 +4768,6 @@ gst_pad_push_event (GstPad * pad, GstEvent * event)
event = gst_event_new_segment (&segment);
}
break;
}
default:
break;
}
@ -4927,6 +4925,24 @@ gst_pad_send_event (GstPad * pad, GstEvent * event)
if (sticky) {
guint idx;
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEGMENT:
if (pad->offset != 0) {
GstSegment segment;
/* copy segment values */
gst_event_copy_segment (event, &segment);
gst_event_unref (event);
/* adjust and make a new event with the offset applied */
segment.base += pad->offset;
event = gst_event_new_segment (&segment);
}
break;
default:
break;
}
idx = GST_EVENT_STICKY_IDX (event);
GST_LOG_OBJECT (pad, "storing sticky event %s at index %u",
GST_EVENT_TYPE_NAME (event), idx);