Merge "InsetSourceConsumer: Ensure we release Leash when finished." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9a967db575
@@ -87,6 +87,7 @@ public class InsetsSourceConsumer {
|
|||||||
if (mSourceControl == control) {
|
if (mSourceControl == control) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
final InsetsSourceControl lastControl = mSourceControl;
|
||||||
mSourceControl = control;
|
mSourceControl = control;
|
||||||
|
|
||||||
// We are loosing control
|
// We are loosing control
|
||||||
@@ -97,25 +98,27 @@ public class InsetsSourceConsumer {
|
|||||||
mState.getSource(getType()).setVisible(
|
mState.getSource(getType()).setVisible(
|
||||||
mController.getLastDispatchedState().getSource(getType()).isVisible());
|
mController.getLastDispatchedState().getSource(getType()).isVisible());
|
||||||
applyLocalVisibilityOverride();
|
applyLocalVisibilityOverride();
|
||||||
return;
|
} else {
|
||||||
}
|
// We are gaining control, and need to run an animation since previous state
|
||||||
|
// didn't match
|
||||||
// We are gaining control, and need to run an animation since previous state didn't match
|
if (mRequestedVisible != mState.getSource(mType).isVisible()) {
|
||||||
if (mRequestedVisible != mState.getSource(mType).isVisible()) {
|
if (mRequestedVisible) {
|
||||||
if (mRequestedVisible) {
|
showTypes[0] |= toPublicType(getType());
|
||||||
showTypes[0] |= toPublicType(getType());
|
} else {
|
||||||
|
hideTypes[0] |= toPublicType(getType());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
hideTypes[0] |= toPublicType(getType());
|
// We are gaining control, but don't need to run an animation.
|
||||||
|
// However make sure that the leash visibility is still up to date.
|
||||||
|
if (applyLocalVisibilityOverride()) {
|
||||||
|
mController.notifyVisibilityChanged();
|
||||||
|
}
|
||||||
|
applyHiddenToControl();
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
if (lastControl != null) {
|
||||||
// We are gaining control, but don't need to run an animation. However make sure that the
|
lastControl.release();
|
||||||
// leash visibility is still up to date.
|
|
||||||
if (applyLocalVisibilityOverride()) {
|
|
||||||
mController.notifyVisibilityChanged();
|
|
||||||
}
|
}
|
||||||
applyHiddenToControl();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
|||||||
@@ -94,6 +94,12 @@ public class InsetsSourceControl implements Parcelable {
|
|||||||
dest.writeParcelable(mSurfacePosition, 0 /* flags*/);
|
dest.writeParcelable(mSurfacePosition, 0 /* flags*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void release() {
|
||||||
|
if (mLeash != null) {
|
||||||
|
mLeash.release();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static final @android.annotation.NonNull Creator<InsetsSourceControl> CREATOR
|
public static final @android.annotation.NonNull Creator<InsetsSourceControl> CREATOR
|
||||||
= new Creator<InsetsSourceControl>() {
|
= new Creator<InsetsSourceControl>() {
|
||||||
public InsetsSourceControl createFromParcel(Parcel in) {
|
public InsetsSourceControl createFromParcel(Parcel in) {
|
||||||
|
|||||||
Reference in New Issue
Block a user