Merge "Don't set animation pending when gaining fake control" into tm-dev

This commit is contained in:
Tiger Huang
2022-04-26 12:47:42 +00:00
committed by Android (Google) Code Review
3 changed files with 9 additions and 4 deletions

View File

@@ -25,6 +25,7 @@ import static android.view.InsetsSourceConsumerProto.IS_REQUESTED_VISIBLE;
import static android.view.InsetsSourceConsumerProto.PENDING_FRAME;
import static android.view.InsetsSourceConsumerProto.PENDING_VISIBLE_FRAME;
import static android.view.InsetsSourceConsumerProto.SOURCE_CONTROL;
import static android.view.InsetsSourceControl.INVALID_HINTS;
import static android.view.InsetsState.ITYPE_IME;
import static android.view.InsetsState.getDefaultVisibility;
import static android.view.InsetsState.toPublicType;
@@ -163,8 +164,10 @@ public class InsetsSourceConsumer {
// We are gaining control, and need to run an animation since previous state
// didn't match
final boolean requestedVisible = isRequestedVisibleAwaitingControl();
final boolean needAnimation = requestedVisible != mState.getSource(mType).isVisible();
if (control.getLeash() != null && (needAnimation || mIsAnimationPending)) {
final boolean fakeControl = INVALID_HINTS.equals(control.getInsetsHint());
final boolean needsAnimation = requestedVisible != mState.getSource(mType).isVisible()
&& !fakeControl;
if (control.getLeash() != null && (needsAnimation || mIsAnimationPending)) {
if (DEBUG) Log.d(TAG, String.format("Gaining control in %s, requestedVisible: %b",
mController.getHost().getRootViewTitle(), requestedVisible));
if (requestedVisible) {
@@ -174,7 +177,7 @@ public class InsetsSourceConsumer {
}
mIsAnimationPending = false;
} else {
if (needAnimation) {
if (needsAnimation) {
// We need animation but we haven't had a leash yet. Set this flag that when we
// get the leash we can play the deferred animation.
mIsAnimationPending = true;

View File

@@ -39,6 +39,8 @@ import java.util.function.Consumer;
*/
public class InsetsSourceControl implements Parcelable {
public static final Insets INVALID_HINTS = Insets.of(-1, -1, -1, -1);
private final @InternalInsetsType int mType;
private final @Nullable SurfaceControl mLeash;
private final Point mSurfacePosition;

View File

@@ -123,7 +123,7 @@ abstract class InsetsSourceProvider {
mDisplayContent = displayContent;
mStateController = stateController;
mFakeControl = new InsetsSourceControl(
source.getType(), null /* leash */, new Point(), Insets.NONE);
source.getType(), null /* leash */, new Point(), InsetsSourceControl.INVALID_HINTS);
mControllable = InsetsPolicy.isInsetsTypeControllable(source.getType());
}