Fixes video rotation screen in full size while playing
This commit is contained in:
@@ -363,7 +363,6 @@ fun VideoViewInner(
|
|||||||
onDialog: ((Boolean) -> Unit)? = null,
|
onDialog: ((Boolean) -> Unit)? = null,
|
||||||
accountViewModel: AccountViewModel,
|
accountViewModel: AccountViewModel,
|
||||||
) {
|
) {
|
||||||
VideoPlayerActiveMutex(videoUri) { videoModifier, activeOnScreen ->
|
|
||||||
GetMediaItem(videoUri, title, artworkUri, authorName) { mediaItem ->
|
GetMediaItem(videoUri, title, artworkUri, authorName) { mediaItem ->
|
||||||
GetVideoController(
|
GetVideoController(
|
||||||
mediaItem = mediaItem,
|
mediaItem = mediaItem,
|
||||||
@@ -372,6 +371,7 @@ fun VideoViewInner(
|
|||||||
nostrUriCallback = nostrUriCallback,
|
nostrUriCallback = nostrUriCallback,
|
||||||
proxyPort = HttpClientManager.getCurrentProxyPort(accountViewModel.account.shouldUseTorForVideoDownload(videoUri)),
|
proxyPort = HttpClientManager.getCurrentProxyPort(accountViewModel.account.shouldUseTorForVideoDownload(videoUri)),
|
||||||
) { controller, keepPlaying ->
|
) { controller, keepPlaying ->
|
||||||
|
VideoPlayerActiveMutex(controller) { videoModifier, activeOnScreen ->
|
||||||
RenderVideoPlayer(
|
RenderVideoPlayer(
|
||||||
videoUri = videoUri,
|
videoUri = videoUri,
|
||||||
mimeType = mimeType,
|
mimeType = mimeType,
|
||||||
@@ -670,22 +670,22 @@ class VisibilityData {
|
|||||||
*/
|
*/
|
||||||
@Composable
|
@Composable
|
||||||
fun VideoPlayerActiveMutex(
|
fun VideoPlayerActiveMutex(
|
||||||
videoUri: String,
|
controller: MediaController,
|
||||||
inner: @Composable (Modifier, MutableState<Boolean>) -> Unit,
|
inner: @Composable (Modifier, MutableState<Boolean>) -> Unit,
|
||||||
) {
|
) {
|
||||||
val myCache = remember(videoUri) { VisibilityData() }
|
val myCache = remember(controller) { VisibilityData() }
|
||||||
|
|
||||||
// Is the current video the closest to the center?
|
// Is the current video the closest to the center?
|
||||||
val active = remember(videoUri) { mutableStateOf<Boolean>(false) }
|
val active = remember(controller) { mutableStateOf<Boolean>(false) }
|
||||||
|
|
||||||
// Keep track of all available videos.
|
// Keep track of all available videos.
|
||||||
DisposableEffect(key1 = videoUri) {
|
DisposableEffect(key1 = controller) {
|
||||||
trackingVideos.add(myCache)
|
trackingVideos.add(myCache)
|
||||||
onDispose { trackingVideos.remove(myCache) }
|
onDispose { trackingVideos.remove(myCache) }
|
||||||
}
|
}
|
||||||
|
|
||||||
val videoModifier =
|
val videoModifier =
|
||||||
remember(videoUri) {
|
remember(controller) {
|
||||||
Modifier.fillMaxWidth().heightIn(min = 100.dp).onVisiblePositionChanges { distanceToCenter ->
|
Modifier.fillMaxWidth().heightIn(min = 100.dp).onVisiblePositionChanges { distanceToCenter ->
|
||||||
myCache.distanceToCenter = distanceToCenter
|
myCache.distanceToCenter = distanceToCenter
|
||||||
|
|
||||||
|
|||||||
+1
-17
@@ -23,9 +23,7 @@ package com.vitorpamplona.amethyst.ui.components
|
|||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.view.View
|
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.FrameLayout
|
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.animation.fadeIn
|
import androidx.compose.animation.fadeIn
|
||||||
import androidx.compose.animation.fadeOut
|
import androidx.compose.animation.fadeOut
|
||||||
@@ -61,7 +59,6 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.platform.LocalConfiguration
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalView
|
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
@@ -105,34 +102,21 @@ fun ZoomableImageDialog(
|
|||||||
onDismissRequest = onDismiss,
|
onDismissRequest = onDismiss,
|
||||||
properties =
|
properties =
|
||||||
DialogProperties(
|
DialogProperties(
|
||||||
usePlatformDefaultWidth = false,
|
usePlatformDefaultWidth = true,
|
||||||
decorFitsSystemWindows = false,
|
decorFitsSystemWindows = false,
|
||||||
),
|
),
|
||||||
) {
|
) {
|
||||||
val view = LocalView.current
|
|
||||||
|
|
||||||
val orientation = LocalConfiguration.current.orientation
|
val orientation = LocalConfiguration.current.orientation
|
||||||
println("This Log only exists to force orientation listener $orientation")
|
println("This Log only exists to force orientation listener $orientation")
|
||||||
|
|
||||||
val activityWindow = getActivityWindow()
|
val activityWindow = getActivityWindow()
|
||||||
val dialogWindow = getDialogWindow()
|
val dialogWindow = getDialogWindow()
|
||||||
val parentView = LocalView.current.parent as View
|
|
||||||
|
|
||||||
if (activityWindow != null && dialogWindow != null) {
|
if (activityWindow != null && dialogWindow != null) {
|
||||||
val attributes = WindowManager.LayoutParams()
|
val attributes = WindowManager.LayoutParams()
|
||||||
attributes.copyFrom(activityWindow.attributes)
|
attributes.copyFrom(activityWindow.attributes)
|
||||||
attributes.type = dialogWindow.attributes.type
|
attributes.type = dialogWindow.attributes.type
|
||||||
dialogWindow.attributes = attributes
|
dialogWindow.attributes = attributes
|
||||||
parentView.layoutParams =
|
|
||||||
FrameLayout.LayoutParams(
|
|
||||||
activityWindow.decorView.width,
|
|
||||||
activityWindow.decorView.height,
|
|
||||||
)
|
|
||||||
view.layoutParams =
|
|
||||||
FrameLayout.LayoutParams(
|
|
||||||
activityWindow.decorView.width,
|
|
||||||
activityWindow.decorView.height,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Surface(Modifier.fillMaxSize()) {
|
Surface(Modifier.fillMaxSize()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user