summaryrefslogtreecommitdiff
path: root/core/java/android/view/DisplayEventReceiver.java
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2017-06-08 15:40:38 -0700
committerJorim Jaggi <jjaggi@google.com>2017-06-08 17:22:43 -0700
commit34a0cdb98eb5561774ea4e7b3b602aad80c4a3cc (patch)
treeadece5dc12a5ed961ead639525c7c1134ad56829 /core/java/android/view/DisplayEventReceiver.java
parent245281c056a5b880486671157b48d6c4e5815ce1 (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.java25
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");
}