diff options
Diffstat (limited to 'core/java/android/view/DisplayEventReceiver.java')
| -rw-r--r-- | core/java/android/view/DisplayEventReceiver.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/core/java/android/view/DisplayEventReceiver.java b/core/java/android/view/DisplayEventReceiver.java index e6cd25275ca2..e3f430bf3fe0 100644 --- a/core/java/android/view/DisplayEventReceiver.java +++ b/core/java/android/view/DisplayEventReceiver.java @@ -158,14 +158,23 @@ public abstract class DisplayEventReceiver { // allotted for the frame to be completed. public final long frameDeadline; - VsyncEventData(long id, long frameDeadline) { + /** + * The current interval between frames in ns. This will be used to align + * {@link FrameInfo#VSYNC} to the current vsync in case Choreographer callback was heavily + * delayed by the app. + */ + public final long frameInterval; + + VsyncEventData(long id, long frameDeadline, long frameInterval) { this.id = id; this.frameDeadline = frameDeadline; + this.frameInterval = frameInterval; } VsyncEventData() { this.id = FrameInfo.INVALID_VSYNC_ID; this.frameDeadline = Long.MAX_VALUE; + this.frameInterval = -1; } } @@ -259,9 +268,9 @@ public abstract class DisplayEventReceiver { // Called from native code. @SuppressWarnings("unused") private void dispatchVsync(long timestampNanos, long physicalDisplayId, int frame, - long frameTimelineVsyncId, long frameDeadline) { + long frameTimelineVsyncId, long frameDeadline, long frameInterval) { onVsync(timestampNanos, physicalDisplayId, frame, - new VsyncEventData(frameTimelineVsyncId, frameDeadline)); + new VsyncEventData(frameTimelineVsyncId, frameDeadline, frameInterval)); } // Called from native code. |
