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

Commit 83b263e7 authored by Christian Göllner's avatar Christian Göllner
Browse files

MediaHiearchyManager: prevent NPE in `updateTargetState()`

For some reason, even after adding the checks for -1 in
`isCurrentlyInGuidedTransformation()`, there are still times when
`startHost` and/or `endHost` can be null, causing a NPE.

Fixes: 221754301
Test: N/A
Change-Id: I05d02ac7dcd6b0d8a850f9a8bbef8ce6205a8231
parent cc9e1675
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -741,10 +741,11 @@ class MediaHierarchyManager @Inject constructor(
     * Updates the bounds that the view wants to be in at the end of the animation.
     */
    private fun updateTargetState() {
        if (isCurrentlyInGuidedTransformation() && !isCurrentlyFading()) {
        var starthost = getHost(previousLocation)
        var endHost = getHost(desiredLocation)
        if (isCurrentlyInGuidedTransformation() && !isCurrentlyFading() && starthost != null &&
            endHost != null) {
            val progress = getTransformationProgress()
            var endHost = getHost(desiredLocation)!!
            var starthost = getHost(previousLocation)!!
            // If either of the hosts are invisible, let's keep them at the other host location to
            // have a nicer disappear animation. Otherwise the currentBounds of the state might
            // be undefined
@@ -756,8 +757,8 @@ class MediaHierarchyManager @Inject constructor(
            val newBounds = endHost.currentBounds
            val previousBounds = starthost.currentBounds
            targetBounds = interpolateBounds(previousBounds, newBounds, progress)
        } else {
            val bounds = getHost(desiredLocation)?.currentBounds ?: return
        } else if (endHost != null) {
            val bounds = endHost.currentBounds
            targetBounds.set(bounds)
        }
    }