gst_base_parse_handle_tag (parse, event);
parse->priv->pending_events =
- g_list_append (parse->priv->pending_events, event);
+ g_list_prepend (parse->priv->pending_events, event);
ret = TRUE;
} else {
if (GST_EVENT_TYPE (event) == GST_EVENT_EOS &&
* the caps are fixed and the next linked element can receive
* the segment. */
parse->priv->pending_events =
- g_list_append (parse->priv->pending_events, event);
+ g_list_prepend (parse->priv->pending_events, event);
parse->priv->pending_segment = TRUE;
ret = TRUE;
/* Push pending events, including NEWSEGMENT events */
if (G_UNLIKELY (parse->priv->pending_events)) {
+ GList *r = g_list_reverse (parse->priv->pending_events);
GList *l;
- for (l = parse->priv->pending_events; l != NULL; l = l->next) {
+ parse->priv->pending_events = NULL;
+ for (l = r; l != NULL; l = l->next) {
gst_pad_push_event (parse->srcpad, GST_EVENT (l->data));
}
- g_list_free (parse->priv->pending_events);
- parse->priv->pending_events = NULL;
+ g_list_free (r);
parse->priv->pending_segment = FALSE;
}
if (push_eos) {
/* Push pending events, including NEWSEGMENT events */
if (G_UNLIKELY (parse->priv->pending_events)) {
+ GList *r = g_list_reverse (parse->priv->pending_events);
GList *l;
- for (l = parse->priv->pending_events; l != NULL; l = l->next) {
+ parse->priv->pending_events = NULL;
+ for (l = r; l != NULL; l = l->next) {
gst_pad_push_event (parse->srcpad, GST_EVENT (l->data));
}
- g_list_free (parse->priv->pending_events);
- parse->priv->pending_events = NULL;
+ g_list_free (r);
parse->priv->pending_segment = FALSE;
}
case GST_PAD_MODE_PULL:
if (active) {
parse->priv->pending_events =
- g_list_append (parse->priv->pending_events,
+ g_list_prepend (parse->priv->pending_events,
gst_event_new_segment (&parse->segment));
parse->priv->pending_segment = TRUE;
result = TRUE;
/* This will be sent later in _loop() */
parse->priv->pending_segment = TRUE;
parse->priv->pending_events =
- g_list_append (parse->priv->pending_events,
+ g_list_prepend (parse->priv->pending_events,
gst_event_new_segment (&parse->segment));
GST_DEBUG_OBJECT (parse, "Created newseg format %d, "