Ensure Insets surface visiblity and alpha value are aligned
In case somehow when the client getting the leash from
InsetsSourceConsumer#setControl to just applying the leash surface
as visible directly without animating, but still invisible to user
because of the zero alpha value.
Bug: 209064170
Test: manual as test steps:
1) enable shell transitions
(adb shell setprop persist.debug.shell_transit 1 + reboot)
2) In home screen, open camera
3) Back gesture to back home
4) Expect the status bar is visible when backing to home
Change-Id: Iaacdf5f57e68b928e2a19036cbd8a137cf320497
This commit is contained in:
@@ -180,10 +180,7 @@ public class InsetsSourceConsumer {
|
||||
|
||||
// If we have a new leash, make sure visibility is up-to-date, even though we
|
||||
// didn't want to run an animation above.
|
||||
SurfaceControl newLeash = mSourceControl.getLeash();
|
||||
if (oldLeash == null || newLeash == null || !oldLeash.isSameSurface(newLeash)) {
|
||||
applyHiddenToControl();
|
||||
}
|
||||
applyRequestedVisibilityToControl();
|
||||
|
||||
// Remove the surface that owned by last control when it lost.
|
||||
if (!requestedVisible && !mIsAnimationPending && lastControl == null) {
|
||||
@@ -388,18 +385,20 @@ public class InsetsSourceConsumer {
|
||||
}
|
||||
}
|
||||
|
||||
private void applyHiddenToControl() {
|
||||
private void applyRequestedVisibilityToControl() {
|
||||
if (mSourceControl == null || mSourceControl.getLeash() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Transaction t = mTransactionSupplier.get();
|
||||
if (DEBUG) Log.d(TAG, "applyHiddenToControl: " + mRequestedVisible);
|
||||
if (DEBUG) Log.d(TAG, "applyRequestedVisibilityToControl: " + mRequestedVisible);
|
||||
if (mRequestedVisible) {
|
||||
t.show(mSourceControl.getLeash());
|
||||
} else {
|
||||
t.hide(mSourceControl.getLeash());
|
||||
}
|
||||
// Ensure the alpha value is aligned with the actual requested visibility.
|
||||
t.setAlpha(mSourceControl.getLeash(), mRequestedVisible ? 1 : 0);
|
||||
t.apply();
|
||||
onPerceptible(mRequestedVisible);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user