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
This commit is contained in:
Christian Göllner
2022-03-03 10:02:49 +01:00
parent cc9e167538
commit 83b263e77e

View File

@@ -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)
}
}