From f5a1007f88966f64f5e025fe157447a4fd3ef8ed Mon Sep 17 00:00:00 2001
From: Vitor Pamplona <vitor@vitorpamplona.com>
Date: Mon, 18 Mar 2024 16:23:00 -0400
Subject: [PATCH] Seeing if the performance improves when the factory becomes
 just another lambda

---
 .../amethyst/ui/components/VideoView.kt       | 71 +++++++++----------
 .../ui/screen/loggedIn/SearchScreen.kt        |  2 -
 2 files changed, 33 insertions(+), 40 deletions(-)

diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt
index 3d7e00abc..3d288fa82 100644
--- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt
+++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/VideoView.kt
@@ -669,43 +669,6 @@ private fun RenderVideoPlayer(
                 }
             }
 
-        val factory =
-            remember(controller) {
-                { context: Context ->
-                    PlayerView(context).apply {
-                        player = controller
-                        layoutParams =
-                            FrameLayout.LayoutParams(
-                                ViewGroup.LayoutParams.MATCH_PARENT,
-                                ViewGroup.LayoutParams.WRAP_CONTENT,
-                            )
-                        setBackgroundColor(Color.Transparent.toArgb())
-                        setShutterBackgroundColor(Color.Transparent.toArgb())
-                        controllerAutoShow = false
-                        thumbData?.thumb?.let { defaultArtwork = it }
-                        hideController()
-                        resizeMode =
-                            if (maxHeight.isFinite) {
-                                AspectRatioFrameLayout.RESIZE_MODE_FIT
-                            } else {
-                                AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH
-                            }
-                        onDialog?.let { innerOnDialog ->
-                            setFullscreenButtonClickListener {
-                                controller.pause()
-                                innerOnDialog(it)
-                            }
-                        }
-                        setControllerVisibilityListener(
-                            PlayerView.ControllerVisibilityListener { visible ->
-                                controllerVisible.value = visible == View.VISIBLE
-                                onControllerVisibilityChanged?.let { callback -> callback(visible == View.VISIBLE) }
-                            },
-                        )
-                    }
-                }
-            }
-
         val ratio = remember { aspectRatio(dimensions) }
 
         if (ratio != null) {
@@ -719,7 +682,39 @@ private fun RenderVideoPlayer(
 
         AndroidView(
             modifier = myModifier,
-            factory = factory,
+            factory = { context: Context ->
+                PlayerView(context).apply {
+                    player = controller
+                    layoutParams =
+                        FrameLayout.LayoutParams(
+                            ViewGroup.LayoutParams.MATCH_PARENT,
+                            ViewGroup.LayoutParams.WRAP_CONTENT,
+                        )
+                    setBackgroundColor(Color.Transparent.toArgb())
+                    setShutterBackgroundColor(Color.Transparent.toArgb())
+                    controllerAutoShow = false
+                    thumbData?.thumb?.let { defaultArtwork = it }
+                    hideController()
+                    resizeMode =
+                        if (maxHeight.isFinite) {
+                            AspectRatioFrameLayout.RESIZE_MODE_FIT
+                        } else {
+                            AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH
+                        }
+                    onDialog?.let { innerOnDialog ->
+                        setFullscreenButtonClickListener {
+                            controller.pause()
+                            innerOnDialog(it)
+                        }
+                    }
+                    setControllerVisibilityListener(
+                        PlayerView.ControllerVisibilityListener { visible ->
+                            controllerVisible.value = visible == View.VISIBLE
+                            onControllerVisibilityChanged?.let { callback -> callback(visible == View.VISIBLE) }
+                        },
+                    )
+                }
+            },
         )
 
         waveform?.let { Waveform(it, controller, remember { Modifier.align(Alignment.Center) }) }
diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/SearchScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/SearchScreen.kt
index 3663ebf77..4f4a5abe8 100644
--- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/SearchScreen.kt
+++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/SearchScreen.kt
@@ -36,7 +36,6 @@ import androidx.compose.foundation.lazy.itemsIndexed
 import androidx.compose.foundation.lazy.rememberLazyListState
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.text.KeyboardOptions
-import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.HorizontalDivider
 import androidx.compose.material3.IconButton
 import androidx.compose.material3.MaterialTheme
@@ -290,7 +289,6 @@ private fun SearchBar(
     }
 }
 
-@OptIn(ExperimentalMaterial3Api::class)
 @Composable
 private fun SearchTextField(
     searchBarViewModel: SearchBarViewModel,