From 82dce233bce0d8c3a50eec8ea5a3dc80f385fc99 Mon Sep 17 00:00:00 2001 From: Filip Hejsek Date: Sat, 17 Jan 2026 21:09:19 +0100 Subject: [PATCH] player/loadfile: clean up track comparison logic This brings compare_track closer to implementing a consistent linear order and fixes many broken edge cases. --- player/loadfile.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/player/loadfile.c b/player/loadfile.c index 1d3fae40a8..6a7c229e45 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -496,11 +496,11 @@ static bool compare_track(struct track *t1, struct track *t2, char **langs, bool int l1 = mp_match_lang(langs, t1->lang), l2 = mp_match_lang(langs, t2->lang); if (!os_langs && l1 != l2) return l1 > l2; - if (t1->forced_select) - return t1->forced_track; - if (t1->default_track != t2->default_track && !t2->forced_select) + if (t1->forced_select != t2->forced_select) + return t1->forced_select; + if (t1->default_track != t2->default_track) return t1->default_track; - if (sub && !t2->forced_select && t2->forced_track) + if (sub && t1->forced_track != t2->forced_track) return !t1->forced_track; if (os_langs && l1 != l2) return l1 > l2;