Do not change surface properties when waiting for transition to ready

Window could become drawn before transition is ready, when transition
is waiting for the animation spec. If we show the surface too early,
one or more frame will be shown with wrong scale.

bug: 28296945
bug: 27742244
Change-Id: I34e84ed8a37ecdb71eb975351f1ee39d14dfba25
This commit is contained in:
Chong Zhang
2016-04-28 18:27:53 -07:00
parent c39532dfcc
commit 7021174287

View File

@@ -1441,6 +1441,18 @@ class WindowStateAnimator {
return;
}
// Do not change surface properties of opening apps if we are waiting for the
// transition to be ready. transitionGoodToGo could be not ready even after all
// opening apps are drawn. It's only waiting on isFetchingAppTransitionsSpecs()
// to get the animation spec. (For example, go into Recents and immediately open
// the same app again before the app's surface is destroyed or saved, the surface
// is always ready in the whole process.) If we go ahead here, the opening app
// will be shown with the full size before the correct animation spec arrives.
if (mService.mAppTransition.isReady() && isDummyAnimation() &&
mService.mOpeningApps.contains(w.mAppToken)) {
return;
}
boolean displayed = false;
computeShownFrameLocked();