diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9880f60b..e8809a11 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,6 +23,9 @@
android:name="android.hardware.camera"
android:required="true" />
+
+
+
diff --git a/core/xr/src/main/java/com/android/developers/androidify/xr/MainPanelWorkaround.kt b/core/xr/src/main/java/com/android/developers/androidify/xr/MainPanelWorkaround.kt
index 265cec34..dcf4da30 100644
--- a/core/xr/src/main/java/com/android/developers/androidify/xr/MainPanelWorkaround.kt
+++ b/core/xr/src/main/java/com/android/developers/androidify/xr/MainPanelWorkaround.kt
@@ -16,25 +16,24 @@
package com.android.developers.androidify.xr
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.DisposableEffect
import androidx.xr.compose.platform.LocalSession
import androidx.xr.scenecore.scene
-import kotlinx.coroutines.delay
/*
- * A composable that attempts to continually hide the mainPanel.
+ * A composable that hides the mainPanel when it is disposed. When placed outside of an (Application)Subspace,
+ * this composable will be disposed after the Subspace, hiding the mainPanelEntity again.
*
- * This is a temporary workaround for b/440325404, that causes the mainPanelEntity when an
+ * This is a temporary workaround for b/440325404, that causes the mainPanelEntity to appear when an
* ApplicationSubspace transitions out of the composition due to a race condition when transitioning
* the two hierarchies.
*/
@Composable
fun MainPanelWorkaround() {
- val session = LocalSession.current
- LaunchedEffect(null) {
- while (true) {
- delay(100L)
- session?.scene?.mainPanelEntity?.setEnabled(false)
+ val session = LocalSession.current ?: return
+ DisposableEffect(session) {
+ onDispose {
+ session.scene.mainPanelEntity.setEnabled(false)
}
}
}
diff --git a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt
index ad347484..6eaa5be9 100644
--- a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt
+++ b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/EditScreenSpatial.kt
@@ -75,8 +75,8 @@ fun EditScreenSpatial(
onDropCallback: (Uri) -> Unit = {},
) {
DisableSharedTransition {
+ MainPanelWorkaround()
SquiggleBackgroundSubspace(minimumHeight = 600.dp) {
- MainPanelWorkaround()
SpatialColumn(SubspaceModifier.fillMaxWidth()) {
SpatialPanel(
SubspaceModifier.offset(z = 10.dp)
diff --git a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt
index c0c9c239..9b315282 100644
--- a/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt
+++ b/feature/creation/src/main/java/com/android/developers/androidify/creation/xr/LoadingScreenSpatial.kt
@@ -52,12 +52,12 @@ private const val squiggleSafeContentHeight = 0.6f
fun LoadingScreenSpatial(
onCancelPress: () -> Unit,
) {
+ MainPanelWorkaround()
BackgroundSubspace(
aspectRatio = 1.4f,
minimumHeight = 500.dp,
drawable = CreationR.drawable.squiggle_light,
) {
- MainPanelWorkaround()
Orbiter(
position = ContentEdge.Top,
offsetType = OrbiterOffsetType.OuterEdge,
diff --git a/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt b/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt
index f49c8117..759bb33d 100644
--- a/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt
+++ b/feature/home/src/main/java/com/android/developers/androidify/home/xr/AboutScreenSpatial.kt
@@ -33,8 +33,8 @@ import com.android.developers.androidify.xr.SquiggleBackgroundSubspace
@Composable
fun AboutScreenSpatial(onBackPressed: () -> Unit, bottomButtons: @Composable () -> Unit) {
+ MainPanelWorkaround()
SquiggleBackgroundSubspace(500.dp) {
- MainPanelWorkaround()
SpatialPanel {
Orbiter(
ContentEdge.Top,
diff --git a/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt b/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt
index 03024019..06106d21 100644
--- a/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt
+++ b/feature/home/src/main/java/com/android/developers/androidify/home/xr/HomeScreenSpatial.kt
@@ -69,8 +69,8 @@ fun HomeScreenContentsSpatial(
onAboutClicked: () -> Unit,
) {
DisableSharedTransition {
+ MainPanelWorkaround()
SquiggleBackgroundSubspace(minimumHeight = 600.dp) {
- MainPanelWorkaround()
Orbiter(
position = ContentEdge.Top,
offsetType = OrbiterOffsetType.OuterEdge,
diff --git a/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt b/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt
index cf3f9cf5..d5ffccd5 100644
--- a/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt
+++ b/feature/results/src/main/java/com/android/developers/androidify/results/xr/ResultsScreenSpatial.kt
@@ -59,9 +59,8 @@ fun ResultsScreenSpatial(
) {
var offsetPose by remember { mutableStateOf(Pose()) }
DisableSharedTransition {
+ MainPanelWorkaround()
Subspace {
- MainPanelWorkaround()
-
SpatialPanel(
SubspaceModifier
.offset(z = 5.dp)