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

Commit 03dde38e authored by Prabir Pradhan's avatar Prabir Pradhan
Browse files

apply empty transaction in startActivitySync

Force SurfaceFlinger to update synchronously by applying an empty
transaction. Without this, SurfaceFlinger will only update after the
next vsync, which may only happen after the instrumentation already
starts.

Since InputFlinger will only have the proper InputWindowInfo after
SurfaceFlinger updates, waiting for the vsync caused some
instruemntation tests to be flaky.

Bug: 138263890
Test: atest android.view.cts.HoverTest
Change-Id: I5457ab67ac574530dc1aa84549ca11e7e3f0d714
parent c80fe630
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceControl;
import android.view.ViewConfiguration;
import android.view.Window;
import android.view.WindowManagerGlobal;
@@ -528,6 +529,12 @@ public class Instrumentation {
            } while (mWaitingActivities.contains(aw));

            waitForEnterAnimationComplete(aw.activity);

            // Apply an empty transaction to ensure SF has a chance to update before
            // the Activity is ready (b/138263890).
            try (SurfaceControl.Transaction t = new SurfaceControl.Transaction()) {
                t.apply(true);
            }
            return aw.activity;
        }
    }