From 171ba99908231727ee952c50da49f77774fe778e Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sat, 12 Sep 2026 22:15:17 +0200 Subject: [PATCH] Player: nach einem Fehlschlag war dieselbe Stufe eine Sackgasse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `select(quality:)` stieg aus, wenn die Stufe bereits gewählt war. Nach einem Fehlschlag stand sie aber schon fest — ein erneutes Antippen galt als „keine Änderung", und es passierte nichts mehr. Man kam nur wieder heraus, indem man eine andere Stufe nahm. Steht die Wiedergabe auf „gescheitert", ist ein erneuter Versuch jetzt erlaubt. Co-Authored-By: Claude Opus 5 --- Flixy/Views/Player/PlayerModel.swift | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Flixy/Views/Player/PlayerModel.swift b/Flixy/Views/Player/PlayerModel.swift index 7574365..596906c 100644 --- a/Flixy/Views/Player/PlayerModel.swift +++ b/Flixy/Views/Player/PlayerModel.swift @@ -196,7 +196,13 @@ final class PlayerModel { /// Die Stelle wird gemerkt und danach wieder angefahren — sonst begänne der /// Film bei jedem Wechsel von vorn. func select(quality newQuality: PlayerQuality) async { - guard newQuality != quality, !isOffline, + // Nach einem Fehlschlag darf dieselbe Stufe noch einmal versucht + // werden. Sonst wäre man eingesperrt: die gewählte Stufe steht schon + // fest, ein erneutes Antippen gilt als „keine Änderung", und es + // passiert nichts mehr. + let isRetry = { if case .failed = phase { return true } else { return false } }() + guard newQuality != quality || isRetry, + !isOffline, let server, let item, let media = currentMedia, let part = currentPart else { return }