sceneview-android icon indicating copy to clipboard operation
sceneview-android copied to clipboard

Crash occurred when navigation back in Scenview Compose

Open evergreentree97 opened this issue 1 year ago • 5 comments

Hello! There is a crash problem with Decomposition or navigate back. If you modify it like the code below, the problem will be solved, but it seems that the problem is occurring in the part of releasing the resource.

rememberModelLoader() It looks like it needs to be fixed. Is there any big problem like the code below temporarily?

@Composable
internal fun rememberCustomModelLoader(
    engine: Engine,
    context: Context = LocalContext.current,
    creator: () -> ModelLoader = {
        SceneView.createModelLoader(engine, context)
    }
) = remember(engine, context, creator).also { modelLoader ->
    DisposableEffect(modelLoader) {
        onDispose {
            modelLoader.run {
                assetLoader.destroy()
                materialProvider.destroyMaterials()
                //   resourceLoader.asyncCancelLoad()
                //    resourceLoader.evictResourceData()
                materialProvider.destroy()
                resourceLoader.destroy()
                resourceLoader.evictResourceData()
            }
        }
    }
}

version "androidx.compose:compose-bom:2024.01.00" "io.github.sceneview:sceneview:2.0.3" "androidx.navigation:navigation-compose:$version"

evergreentree97 avatar Feb 11 '24 14:02 evergreentree97

I have the same issue, onBack pressed is always causing the crash. Here is the Log: FATAL EXCEPTION: main Process: technology.cariad.lcc.rpademoapp.debug, PID: 18368 java.lang.IllegalStateException: Calling method on destroyed Scene at com.google.android.filament.Scene.getNativeObject(Scene.java:189) at com.google.android.filament.Scene.removeEntities(Scene.java:146) at io.github.sceneview.SceneView.removeEntities(SceneView.kt:701) at io.github.sceneview.SceneView.removeNode$sceneview_release(SceneView.kt:679) at io.github.sceneview.SceneView$addNode$2.invoke(SceneView.kt:672) at io.github.sceneview.SceneView$addNode$2.invoke(SceneView.kt:672) at io.github.sceneview.node.Node.setChildNodes(Node.kt:351) at io.github.sceneview.node.Node.setParent(Node.kt:335) at io.github.sceneview.node.Node.destroy(Node.kt:1006) at io.github.sceneview.node.CameraNode.destroy(CameraNode.kt:328) at io.github.sceneview.SceneKt$rememberCameraNode$$inlined$rememberNode$1$1.dispose(Effects.kt:497) at androidx.compose.runtime.DisposableEffectImpl.onForgotten(Effects.kt:87) at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1271) at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:767) at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.disposeCurrentNodes(SubcomposeLayout.kt:592) at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.onRelease(SubcomposeLayout.kt:406) at androidx.compose.ui.node.LayoutNode.onRelease(LayoutNode.kt:1362) at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1296) at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:767) at androidx.compose.ui.platform.WrappedComposition.dispose(Wrapper.android.kt:153) at androidx.compose.ui.platform.AbstractComposeView.disposeComposition(ComposeView.android.kt:266) at androidx.compose.ui.platform.ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1.onViewDetachedFromWindow(ViewCompositionStrategy.android.kt:90) at android.view.View.dispatchDetachedFromWindow(View.java:22067) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3987) at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5603) at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5574) at android.view.ViewGroup.removeView(ViewGroup.java:5505) at androidx.fragment.app.FragmentContainerView.removeView(FragmentContainerView.kt:293) at androidx.fragment.app.SpecialEffectsController$Operation$State.applyState(SpecialEffectsController.kt:398) at androidx.fragment.app.DefaultSpecialEffectsController.applyContainerChanges(DefaultSpecialEffectsController.kt:757) at androidx.fragment.app.DefaultSpecialEffectsController.executeOperations$lambda$2(DefaultSpecialEffectsController.kt:90) at androidx.fragment.app.DefaultSpecialEffectsController.$r8$lambda$Q6FgD4jZH_jdeVxJxVn553yFXpk(Unknown Source:0) at androidx.fragment.app.DefaultSpecialEffectsController$$ExternalSyntheticLambda0.run(Unknown Source:6) at androidx.fragment.app.SpecialEffectsController$Operation.complete(SpecialEffectsController.kt:608) at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.kt:663) at androidx.fragment.app.SpecialEffectsController$Operation.completeSpecialEffect(SpecialEffectsController.kt:587) at androidx.fragment.app.DefaultSpecialEffectsController$SpecialEffectsInfo.completeSpecialEffect(DefaultSpecialEffectsController.kt:774) at androidx.fragment.app.DefaultSpecialEffectsController.startAnimations(DefaultSpecialEffectsController.kt:150) at androidx.fragment.app.DefaultSpecialEffectsController.executeOperations(DefaultSpecialEffectsController.kt:101) at androidx.fragment.app.SpecialEffectsController.executePendingOperations(SpecialEffectsController.kt:234) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1956)

natasam avatar Feb 16 '24 13:02 natasam

yes i have the same when i try to put Scenview in horizontal or vertical pager

fadiselim avatar Feb 17 '24 15:02 fadiselim

Fatal Exception: java.lang.IllegalStateException
Calling method on destroyed Engine
com.google.android.filament.Engine.getNativeObject (Unknown Source:1142)
com.google.android.filament.Texture$Builder.build (Unknown Source:812)

We also found an error like this. Destroyes that work on Dispose don't seem to be working properly. Has anyone experienced this issue while using Compose Navigation?

evergreentree97 avatar Feb 19 '24 02:02 evergreentree97

yes same here, with compose navigation

fadiselim avatar Apr 10 '24 02:04 fadiselim

on. version 2.1.0 it crashes. with a different error 'null pointer execption '

fadiselim avatar Apr 10 '24 02:04 fadiselim

Reopen if it's still the case in v2.2.0

ThomasGorisse avatar May 29 '24 17:05 ThomasGorisse