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

Commit 3fce1330 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere Committed by Automerger Merge Worker
Browse files

Fix ComposeInitializerImpl to work with new lifecycle libraries am: 52d705a8

parents c41e35c4 52d705a8
Loading
Loading
Loading
Loading
+7 −8
Original line number Original line Diff line number Diff line
@@ -17,9 +17,8 @@
package com.android.systemui.compose
package com.android.systemui.compose


import android.view.View
import android.view.View
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.findViewTreeLifecycleOwner
import androidx.lifecycle.ViewTreeLifecycleOwner
import androidx.lifecycle.setViewTreeLifecycleOwner
import androidx.savedstate.SavedStateRegistry
import androidx.savedstate.SavedStateRegistryController
import androidx.savedstate.SavedStateRegistryController
import androidx.savedstate.SavedStateRegistryOwner
import androidx.savedstate.SavedStateRegistryOwner
import com.android.compose.animation.ViewTreeSavedStateRegistryOwner
import com.android.compose.animation.ViewTreeSavedStateRegistryOwner
@@ -27,7 +26,7 @@ import com.android.systemui.lifecycle.ViewLifecycleOwner


internal object ComposeInitializerImpl : ComposeInitializer {
internal object ComposeInitializerImpl : ComposeInitializer {
    override fun onAttachedToWindow(root: View) {
    override fun onAttachedToWindow(root: View) {
        if (ViewTreeLifecycleOwner.get(root) != null) {
        if (root.findViewTreeLifecycleOwner() != null) {
            error("root $root already has a LifecycleOwner")
            error("root $root already has a LifecycleOwner")
        }
        }


@@ -54,7 +53,7 @@ internal object ComposeInitializerImpl : ComposeInitializer {


                override val savedStateRegistry = savedStateRegistryController.savedStateRegistry
                override val savedStateRegistry = savedStateRegistryController.savedStateRegistry


                override fun getLifecycle(): Lifecycle = lifecycleOwner.lifecycle
                override val lifecycle = lifecycleOwner.lifecycle
            }
            }


        // We must call [ViewLifecycleOwner.onCreate] after creating the [SavedStateRegistryOwner]
        // We must call [ViewLifecycleOwner.onCreate] after creating the [SavedStateRegistryOwner]
@@ -64,13 +63,13 @@ internal object ComposeInitializerImpl : ComposeInitializer {


        // Set the owners on the root. They will be reused by any ComposeView inside the root
        // Set the owners on the root. They will be reused by any ComposeView inside the root
        // hierarchy.
        // hierarchy.
        ViewTreeLifecycleOwner.set(root, lifecycleOwner)
        root.setViewTreeLifecycleOwner(lifecycleOwner)
        ViewTreeSavedStateRegistryOwner.set(root, savedStateRegistryOwner)
        ViewTreeSavedStateRegistryOwner.set(root, savedStateRegistryOwner)
    }
    }


    override fun onDetachedFromWindow(root: View) {
    override fun onDetachedFromWindow(root: View) {
        (ViewTreeLifecycleOwner.get(root) as ViewLifecycleOwner).onDestroy()
        (root.findViewTreeLifecycleOwner() as ViewLifecycleOwner).onDestroy()
        ViewTreeLifecycleOwner.set(root, null)
        root.setViewTreeLifecycleOwner(null)
        ViewTreeSavedStateRegistryOwner.set(root, null)
        ViewTreeSavedStateRegistryOwner.set(root, null)
    }
    }
}
}