From 5d97e0a9a07168232ec059cd1a25ae4a784aff50 Mon Sep 17 00:00:00 2001 From: Gabriel Ittner Date: Sun, 14 Jan 2024 03:23:18 +0100 Subject: [PATCH] fix order --- .../src/main/java/app/cash/paparazzi/Paparazzi.kt | 10 +++++++--- .../src/test/java/app/cash/paparazzi/PaparazziTest.kt | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt b/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt index 1a708db4da..f758525ad6 100644 --- a/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt +++ b/paparazzi/src/main/java/app/cash/paparazzi/Paparazzi.kt @@ -351,16 +351,17 @@ class Paparazzi @JvmOverloads constructor( timeNanos: Long, block: () -> Unit ) { + val frameNanos = timeNanos + TIME_OFFSET_NANOS // System_Delegate.nanoTime() is nanoTime - previousNanoTime + sChoreographerTime. // Because of that setNanosTime needs to be called with 0 first so that the previous time will be 0 for the actual // call. sChoreographerTime does not matter because doFrame which modifies it is not called by Paparazzi. System_Delegate.setNanosTime(0L) // Execute the block at the requested time. - System_Delegate.setNanosTime(timeNanos) + System_Delegate.setNanosTime(frameNanos) - // 1 is the only callbackType allowed by doCallbacks - Choreographer_Delegate.doCallbacks(Choreographer.getInstance(), 1, timeNanos) executeHandlerCallbacks() + // 1 is the only callbackType allowed by doCallbacks + Choreographer_Delegate.doCallbacks(Choreographer.getInstance(), 1, frameNanos) block() } @@ -609,6 +610,9 @@ class Paparazzi @JvmOverloads constructor( } companion object { + /** The choreographer doesn't like 0 as a frame time, so start an hour later. */ + internal val TIME_OFFSET_NANOS = TimeUnit.HOURS.toNanos(1L) + internal lateinit var renderer: Renderer internal val isInitialized get() = ::renderer.isInitialized diff --git a/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt b/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt index 7cfca8911e..b10faeefaa 100644 --- a/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt +++ b/paparazzi/src/test/java/app/cash/paparazzi/PaparazziTest.kt @@ -220,6 +220,6 @@ class PaparazziTest { private val time: Long get() { - return TimeUnit.NANOSECONDS.toMillis(System_Delegate.nanoTime()) + return TimeUnit.NANOSECONDS.toMillis(System_Delegate.nanoTime() - Paparazzi.TIME_OFFSET_NANOS) } }