multiplatform: stop video playback when swiping away (#6588)

* android/build.gralde.kts: add JAVA_HOME to PATH

* fullScreenView: dispose player.stop when view changes

* fullScreenView: stop the video playback midway swipe

Previously, video playback stopped **only** when screen was fully swiped away to next item.

* ImageFullScreenView: simplify

* revert back VideoView
This commit is contained in:
sh
2026-01-21 09:14:04 +00:00
committed by GitHub
parent 2fc72861e2
commit 8d1ca9917b
2 changed files with 8 additions and 2 deletions

View File

@@ -192,7 +192,10 @@ tasks {
}
exec {
workingDir("../../scripts/android")
environment = mapOf("JAVA_HOME" to "$javaHome")
environment = mapOf(
"JAVA_HOME" to "$javaHome",
"PATH" to "${javaHome}/bin${File.pathSeparator}${System.getenv("PATH")}"
)
commandLine = listOf(
"./compress-and-sign-apk.sh",
"${rootProject.extra["compression.level"]}",

View File

@@ -158,7 +158,10 @@ fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () ->
val uriDecrypted = remember(media.uri.path) { mutableStateOf(if (media.fileSource?.cryptoArgs == null) media.uri else media.fileSource.decryptedGet()) }
val decrypted = uriDecrypted.value
if (decrypted != null) {
VideoView(modifier, decrypted, preview, index == settledCurrentPage, close)
// settledCurrentPage finishes **only** when fully swiped
// So we use pagerState.currentPage that changes right away as the screen is being dragged
val isCurrentPage = index == pagerState.currentPage && kotlin.math.abs(pagerState.currentPageOffsetFraction) < 0.3f
VideoView(modifier, decrypted, preview, isCurrentPage, close)
DisposableEffect(Unit) {
onDispose { playersToRelease.add(decrypted) }
}