Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 391df59a authored by Steve Elliott's avatar Steve Elliott
Browse files

[flexi] Change ViewCompositionStrategy for ComposeViews

The current usage of DisponseOnViewTreeLifecycleDestroyed is not
applicable to how these views are used in flexiglass.

Flag: com.android.systemui.scene_container
Fixes: 428702049
Test: manual - verify with perfetto
Change-Id: Ib776e895ebbd8515093db619b449e1c236e4937f
parent 43426fbe
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
@@ -47,6 +47,7 @@ import com.android.systemui.common.shared.model.Icon as IconModel
import com.android.systemui.common.ui.compose.Icon
import com.android.systemui.common.ui.compose.windowinsets.LocalDisplayCutout
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.NotificationPanelView
import com.android.systemui.shade.ShadeViewStateProvider
import com.android.systemui.statusbar.phone.KeyguardStatusBarView
@@ -123,7 +124,13 @@ constructor(

    private fun createSignOutButtonView(context: Context): ComposeView {
        return ComposeView(context).apply {
            setViewCompositionStrategy(DisposeOnViewTreeLifecycleDestroyed)
            setViewCompositionStrategy(
                if (SceneContainerFlag.isEnabled) {
                    ViewCompositionStrategy.Default
                } else {
                    ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
                }
            )
            setContent { PlatformTheme { SignOutButton() } }
        }
    }
+6 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.repeatOnLifecycle
import com.android.compose.theme.PlatformTheme
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark
import com.android.systemui.statusbar.pipeline.battery.ui.composable.BatteryWithChargeStatus
import com.android.systemui.statusbar.pipeline.battery.ui.composable.ShowPercentMode
@@ -48,7 +49,11 @@ object BatteryWithPercentViewBinder {
                view.apply {
                    isVisible = true
                    setViewCompositionStrategy(
                        if (SceneContainerFlag.isEnabled) {
                            ViewCompositionStrategy.Default
                        } else {
                            ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
                        }
                    )
                    setContent {
                        PlatformTheme {
+6 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import com.android.compose.theme.PlatformTheme
import com.android.systemui.compose.modifiers.sysuiResTag
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark
import com.android.systemui.statusbar.pipeline.battery.ui.composable.UnifiedBattery
import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel
@@ -51,7 +52,11 @@ object UnifiedBatteryViewBinder {
                view.apply {
                    isVisible = true
                    setViewCompositionStrategy(
                        if (SceneContainerFlag.isEnabled) {
                            ViewCompositionStrategy.Default
                        } else {
                            ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
                        }
                    )
                    setContent {
                        PlatformTheme {
+6 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.kairos.ExperimentalKairosApi
import com.android.systemui.kairos.KairosNetwork
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.statusbar.pipeline.mobile.StatusBarMobileIconKairos
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.StackedMobileIconViewModel
@@ -57,7 +58,11 @@ object StackedMobileIconBinder {
                repeatOnLifecycle(Lifecycle.State.STARTED) {
                    view.composeView.apply {
                        setViewCompositionStrategy(
                            if (SceneContainerFlag.isEnabled) {
                                ViewCompositionStrategy.Default
                            } else {
                                ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
                            }
                        )
                        setContent {
                            val viewModel: StackedMobileIconViewModel =
+14 −4
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import com.android.systemui.media.controls.ui.view.MediaHostState
import com.android.systemui.media.dagger.MediaModule.POPUP
import com.android.systemui.plugins.DarkIconDispatcher
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.ui.composable.VariableDayDate
import com.android.systemui.statusbar.StatusBarAlwaysUseRegionSampling
import com.android.systemui.statusbar.chips.ui.compose.OngoingActivityChips
@@ -300,7 +301,11 @@ fun StatusBarRoot(
                                )

                            setViewCompositionStrategy(
                                if (SceneContainerFlag.isEnabled) {
                                    ViewCompositionStrategy.Default
                                } else {
                                    ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
                                }
                            )

                            setContent {
@@ -308,7 +313,8 @@ fun StatusBarRoot(
                                    chips = statusBarViewModel.popupChips,
                                    mediaHost = mediaHost,
                                    onMediaControlPopupVisibilityChanged = { popupShowing ->
                                        mediaHierarchyManager.isMediaControlPopupShowing = popupShowing
                                        mediaHierarchyManager.isMediaControlPopupShowing =
                                            popupShowing
                                    },
                                )
                            }
@@ -319,7 +325,8 @@ fun StatusBarRoot(
                // If the flag is enabled, create and add a compose section to the end
                // of the system_icons container
                if (SystemStatusIconsInCompose.isEnabled) {
                    phoneStatusBarView.requireViewById<View>(R.id.system_icons).visibility = View.GONE
                    phoneStatusBarView.requireViewById<View>(R.id.system_icons).visibility =
                        View.GONE
                    addSystemStatusIconsComposable(phoneStatusBarView, statusBarViewModel)
                } else {
                    val statusIconContainer =
@@ -347,7 +354,10 @@ fun StatusBarRoot(
                    }
                }

                notificationIconsBinder.bindWhileAttached(notificationIconContainer, context.displayId)
                notificationIconsBinder.bindWhileAttached(
                    notificationIconContainer,
                    context.displayId,
                )

                if (StatusBarAlwaysUseRegionSampling.isAnyRegionSamplingEnabled) {
                    bindRegionSamplingViewModel(