diff --git a/gst/playback/gstparsebin.c b/gst/playback/gstparsebin.c index 6eb0a84198..72d7ba6dd2 100644 --- a/gst/playback/gstparsebin.c +++ b/gst/playback/gstparsebin.c @@ -3750,7 +3750,10 @@ build_fallback_collection (GstParseChain * chain, if (!group) return; - for (l = group->children; l; l = l->next) { + + /* we used g_list_prepend when adding children, so iterate from last + * to first to maintain the original order they were added in */ + for (l = g_list_last (group->children); l != NULL; l = l->prev) { GstParseChain *childchain = l->data; build_fallback_collection (childchain, collection);