mirror of
https://github.com/screentinker/screentinker.git
synced 2026-08-13 22:03:13 -06:00
A newly paired panel always learns its playlist BEFORE the media arrives, so start() finds nothing playable and the 3-second content re-check is what really begins playback. updatePlaylist() has already seeded currentIndex = 0 for a playlist that has not started, but the re-check advanced PAST that index — so the first pass ran 1,2,3,0 and item 1 only appeared after the list wrapped. On the emulator, a fresh pair with a 4-item playlist reproduced it every time: Starting playback Playing: red.png (index 1) <- clip32.mp4 (index 0) never got its turn Playing: clip7.mp4 (index 2) Playing: blue.png (index 3) Playing: clip32.mp4 (index 0) <- 54s late, on the second pass On a two-item playlist that is indistinguishable from "only one of the two ever plays", which is how it was reported. The distinction the re-check was missing is hasContentOnScreen. With content up, currentIndex is a real position that has had its turn and the scan must move past it. With nothing up, currentIndex is only where playback INTENDED to start, so skipping it drops that item. PlaylistSelection.recheckIndex now makes that choice explicitly, and playableFromIndex treats a negative index as "no position yet" rather than wrapping onto the last item. Verified on the emulator against the same cold start: the first pass is now 0,1,2,3,4 in order. Playback resume (#234) is untouched — it never reaches the re-check when its target is cached, confirmed by an Activity relaunch resuming mid-playlist as before. Tests: 6 new cases in PlaylistSelectionTest covering both sides of the rule, the still-downloading item, the no-position-yet start, and the empty case. Android 151/151, server 1298/1298. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Uaeo9MvzKoyXuN6ZsbhtkL |
||
|---|---|---|
| .. | ||
| app | ||
| gradle/wrapper | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| settings.gradle.kts | ||