goon/mobile/patches/expo-video+2.0.6.patch
goon-foss 080fc4b70e fix(apk 0.4.1): puste ikony na paczce wbudowanej, crash expo-video przy zamykaniu z ostatnich
- expo-file-system jako jawna zaleznosc: zagniezdzony pod expo nie byl autolinkowany,
  ExpoAsset.downloadAsync padal na AppDirectories not found (Sentry 143555436)
- app/build.gradle: create*UpdatesResources zawsze generowane; zadanie mialo same napisy
  jako wejscia i od 2026-05-31 osadzalo stary app.manifest (23 assety, bez fontu ikon)
- patch-package + patches/expo-video+2.0.6.patch: cleanup() iteruje po kopii mediaSessions
  (ConcurrentModificationException w onTaskRemoved, Sentry 147164135)
- versionCode 15 / 0.4.1, runtime bez zmian (1.4), /version 0.4.1, linki na stronie

Test: czysta instalacja offline na emulatorze, 0.4.0 = 0 glifow ikon + blad w Sentry,
0.4.1 = 11 glifow i brak bledu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 14:33:13 +02:00

21 lines
1.1 KiB
Diff

diff --git a/node_modules/expo-video/android/src/main/java/expo/modules/video/playbackService/ExpoVideoPlaybackService.kt b/node_modules/expo-video/android/src/main/java/expo/modules/video/playbackService/ExpoVideoPlaybackService.kt
index cd798cf..34923b2 100644
--- a/node_modules/expo-video/android/src/main/java/expo/modules/video/playbackService/ExpoVideoPlaybackService.kt
+++ b/node_modules/expo-video/android/src/main/java/expo/modules/video/playbackService/ExpoVideoPlaybackService.kt
@@ -136,10 +136,14 @@ class ExpoVideoPlaybackService : MediaSessionService() {
private fun cleanup() {
hideAllNotifications()
- mediaSessions.forEach { (_, session) ->
+ // Kopia przed iteracja: session.release() wola z powrotem unregisterPlayer, ktory
+ // usuwa wpis z mediaSessions w trakcie forEach -> ConcurrentModificationException
+ // przy zamykaniu apki z listy ostatnich (Goon, Sentry 147164135, 2026-09-15).
+ val sessions = mediaSessions.values.toList()
+ mediaSessions.clear()
+ sessions.forEach { session ->
session.release()
}
- mediaSessions.clear()
}
private fun hidePlayerNotification(player: ExoPlayer) {