Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6924b1c authored by Chris Li's avatar Chris Li
Browse files

Fix racing for mIsFromTransactionItem

We shouldn't update the field in insetsControlChanged until the
insetsControlChangedItem flag is launched.

Bug: 347385364
Test: InputMethodServiceTest
Flag: com.android.window.flags.insets_control_changed_item
Change-Id: I7eb09a288a5668e49b78f7e93c1907ed77fe1b1f
parent c92aa737
Loading
Loading
Loading
Loading
+8 −2
Original line number Original line Diff line number Diff line
@@ -126,6 +126,7 @@ import static android.view.inputmethod.InputMethodEditorTraceProto.InputMethodCl
import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
import static com.android.window.flags.Flags.activityWindowInfoFlag;
import static com.android.window.flags.Flags.activityWindowInfoFlag;
import static com.android.window.flags.Flags.enableBufferTransformHintFromDisplay;
import static com.android.window.flags.Flags.enableBufferTransformHintFromDisplay;
import static com.android.window.flags.Flags.insetsControlChangedItem;
import static com.android.window.flags.Flags.setScPropertiesInClient;
import static com.android.window.flags.Flags.setScPropertiesInClient;
import static com.android.window.flags.Flags.windowSessionRelayoutInfo;
import static com.android.window.flags.Flags.windowSessionRelayoutInfo;
import static com.android.text.flags.Flags.disableHandwritingInitiatorForIme;
import static com.android.text.flags.Flags.disableHandwritingInitiatorForIme;
@@ -11417,8 +11418,13 @@ public final class ViewRootImpl implements ViewParent,
        @Override
        @Override
        public void insetsControlChanged(InsetsState insetsState,
        public void insetsControlChanged(InsetsState insetsState,
                InsetsSourceControl.Array activeControls) {
                InsetsSourceControl.Array activeControls) {
            final boolean isFromInsetsControlChangeItem = mIsFromTransactionItem;
            final boolean isFromInsetsControlChangeItem;
            if (insetsControlChangedItem()) {
                isFromInsetsControlChangeItem = mIsFromTransactionItem;
                mIsFromTransactionItem = false;
                mIsFromTransactionItem = false;
            } else {
                isFromInsetsControlChangeItem = false;
            }
            final ViewRootImpl viewAncestor = mViewAncestor.get();
            final ViewRootImpl viewAncestor = mViewAncestor.get();
            if (viewAncestor == null) {
            if (viewAncestor == null) {
                if (isFromInsetsControlChangeItem) {
                if (isFromInsetsControlChangeItem) {