diff options
| author | Jorim Jaggi <jjaggi@google.com> | 2017-06-08 15:40:38 -0700 |
|---|---|---|
| committer | Jorim Jaggi <jjaggi@google.com> | 2017-06-08 17:22:43 -0700 |
| commit | 34a0cdb98eb5561774ea4e7b3b602aad80c4a3cc (patch) | |
| tree | adece5dc12a5ed961ead639525c7c1134ad56829 /core/java/android/view/DisplayEventReceiver.java | |
| parent | 245281c056a5b880486671157b48d6c4e5815ce1 (diff) | |
Properly run window animations at vsync-sf (1/2)
- Add new Choreographer instance that runs on vsync-sf
- Use this new Choreographer for WindowAnimator, and remove all
the hacks around it
Test: Open apps and close apps, notice no stutter
Test: Screen zoom animations
Test: go/wm-smoke
Bug: 36631902
Change-Id: I988ae25645effc3ac20efa7cb9b68f23444da0d0
Diffstat (limited to 'core/java/android/view/DisplayEventReceiver.java')
| -rw-r--r-- | core/java/android/view/DisplayEventReceiver.java | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/core/java/android/view/DisplayEventReceiver.java b/core/java/android/view/DisplayEventReceiver.java index 67cdfc53fb39..caadc364a3fb 100644 --- a/core/java/android/view/DisplayEventReceiver.java +++ b/core/java/android/view/DisplayEventReceiver.java @@ -35,6 +35,23 @@ import java.lang.ref.WeakReference; * @hide */ public abstract class DisplayEventReceiver { + + /** + * When retrieving vsync events, this specifies that the vsync event should happen at the normal + * vsync-app tick. + * <p> + * Needs to be kept in sync with frameworks/native/include/gui/ISurfaceComposer.h + */ + public static final int VSYNC_SOURCE_APP = 0; + + /** + * When retrieving vsync events, this specifies that the vsync event should happen whenever + * Surface Flinger is processing a frame. + * <p> + * Needs to be kept in sync with frameworks/native/include/gui/ISurfaceComposer.h + */ + public static final int VSYNC_SOURCE_SURFACE_FLINGER = 1; + private static final String TAG = "DisplayEventReceiver"; private final CloseGuard mCloseGuard = CloseGuard.get(); @@ -46,7 +63,7 @@ public abstract class DisplayEventReceiver { private MessageQueue mMessageQueue; private static native long nativeInit(WeakReference<DisplayEventReceiver> receiver, - MessageQueue messageQueue); + MessageQueue messageQueue, int vsyncSource); private static native void nativeDispose(long receiverPtr); @FastNative private static native void nativeScheduleVsync(long receiverPtr); @@ -55,14 +72,16 @@ public abstract class DisplayEventReceiver { * Creates a display event receiver. * * @param looper The looper to use when invoking callbacks. + * @param vsyncSource The source of the vsync tick. Must be on of the VSYNC_SOURCE_* values. */ - public DisplayEventReceiver(Looper looper) { + public DisplayEventReceiver(Looper looper, int vsyncSource) { if (looper == null) { throw new IllegalArgumentException("looper must not be null"); } mMessageQueue = looper.getQueue(); - mReceiverPtr = nativeInit(new WeakReference<DisplayEventReceiver>(this), mMessageQueue); + mReceiverPtr = nativeInit(new WeakReference<DisplayEventReceiver>(this), mMessageQueue, + vsyncSource); mCloseGuard.open("dispose"); } |
