Fix NPE if draging again while animating
The animator cancel calling might cause surfaces released by our
implementation. Moving the cancel call before we make sure surface
is not null.
Fix: 230686609
Test: Open animation scale setting and try drop then drag again
divider quickly
Test: pass exising tests
Change-Id: I2e94f3ece3f211ceb15f380e4ee9322b8c27f8ac
This commit is contained in:
@@ -160,6 +160,15 @@ public class SplitDecorManager extends WindowlessWindowManager {
|
||||
mBounds.set(newBounds);
|
||||
}
|
||||
|
||||
final boolean show =
|
||||
newBounds.width() > mBounds.width() || newBounds.height() > mBounds.height();
|
||||
final boolean animate = show != mShown;
|
||||
if (animate && mFadeAnimator != null && mFadeAnimator.isRunning()) {
|
||||
// If we need to animate and animator still running, cancel it before we ensure both
|
||||
// background and icon surfaces are non null for next animation.
|
||||
mFadeAnimator.cancel();
|
||||
}
|
||||
|
||||
if (mBackgroundLeash == null) {
|
||||
mBackgroundLeash = SurfaceUtils.makeColorLayer(mHostLeash,
|
||||
RESIZING_BACKGROUND_SURFACE_NAME, mSurfaceSession);
|
||||
@@ -183,11 +192,7 @@ public class SplitDecorManager extends WindowlessWindowManager {
|
||||
newBounds.width() / 2 - mIconSize / 2,
|
||||
newBounds.height() / 2 - mIconSize / 2);
|
||||
|
||||
boolean show = newBounds.width() > mBounds.width() || newBounds.height() > mBounds.height();
|
||||
if (show != mShown) {
|
||||
if (mFadeAnimator != null && mFadeAnimator.isRunning()) {
|
||||
mFadeAnimator.cancel();
|
||||
}
|
||||
if (animate) {
|
||||
startFadeAnimation(show, false /* isResized */);
|
||||
mShown = show;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user