Merge "Stop processing if the new control equals the current one" into sc-dev
This commit is contained in:
@@ -46,6 +46,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
@@ -120,7 +121,11 @@ public class InsetsSourceConsumer {
|
||||
ImeTracing.getInstance().triggerClientDump("InsetsSourceConsumer#setControl",
|
||||
mController.getHost().getInputMethodManager(), null /* icProto */);
|
||||
}
|
||||
if (mSourceControl == control) {
|
||||
if (Objects.equals(mSourceControl, control)) {
|
||||
if (mSourceControl != null && mSourceControl != control) {
|
||||
mSourceControl.release(SurfaceControl::release);
|
||||
mSourceControl = control;
|
||||
}
|
||||
return;
|
||||
}
|
||||
SurfaceControl oldLeash = mSourceControl != null ? mSourceControl.getLeash() : null;
|
||||
|
||||
@@ -152,6 +152,34 @@ public class InsetsSourceControl implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(@Nullable Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
final InsetsSourceControl that = (InsetsSourceControl) o;
|
||||
final SurfaceControl thatLeash = that.mLeash;
|
||||
return mType == that.mType
|
||||
&& ((mLeash == thatLeash)
|
||||
|| (mLeash != null && thatLeash != null && mLeash.isSameSurface(thatLeash)))
|
||||
&& mSurfacePosition.equals(that.mSurfacePosition)
|
||||
&& mInsetsHint.equals(that.mInsetsHint)
|
||||
&& mSkipAnimationOnce == that.mSkipAnimationOnce;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = mType;
|
||||
result = 31 * result + (mLeash != null ? mLeash.hashCode() : 0);
|
||||
result = 31 * result + mSurfacePosition.hashCode();
|
||||
result = 31 * result + mInsetsHint.hashCode();
|
||||
result = 31 * result + (mSkipAnimationOnce ? 1 : 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void dump(String prefix, PrintWriter pw) {
|
||||
pw.print(prefix);
|
||||
pw.print("InsetsSourceControl type="); pw.print(InsetsState.typeToString(mType));
|
||||
|
||||
Reference in New Issue
Block a user