From c96c45f5ce989106839f63efd586f07c7040e7b5 Mon Sep 17 00:00:00 2001 From: Christoph Maurhofer Date: Mon, 22 Jan 2024 08:42:27 +0100 Subject: [PATCH] Keep rendering for some time before break --- .../io/openmobilemaps/mapscore/graphics/GLThread.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/android/src/main/java/io/openmobilemaps/mapscore/graphics/GLThread.kt b/android/src/main/java/io/openmobilemaps/mapscore/graphics/GLThread.kt index c2008e38c..605c72680 100644 --- a/android/src/main/java/io/openmobilemaps/mapscore/graphics/GLThread.kt +++ b/android/src/main/java/io/openmobilemaps/mapscore/graphics/GLThread.kt @@ -110,7 +110,7 @@ class GLThread constructor( } while (!finished) { - if ((!isDirty.get() && glRunList.isEmpty()) || isPaused) { + if ((!isDirty.get() && glRunList.isEmpty()) && (isPaused || System.currentTimeMillis() - lastDirtyTimestamp.get() > BREAK_MIN_FINISH_MS)) { var wasPaused = false do { var firstPause = false @@ -119,12 +119,13 @@ class GLThread constructor( wasPaused = true firstPause = true } - val preFinish = System.currentTimeMillis() - if (firstPause || (!hasFinishedSinceDirty && preFinish - lastDirtyTimestamp.get() > BREAK_MIN_FINISH_MS)) { + var finishDuration = 0L + if (firstPause || !hasFinishedSinceDirty) { + finishDuration = System.currentTimeMillis() GLES32.glFinish() hasFinishedSinceDirty = true + finishDuration = System.currentTimeMillis() - System.currentTimeMillis() } - val finishDuration = System.currentTimeMillis() - preFinish try { if (finishDuration < BREAK_RENDER_INTERVAL) { @@ -154,7 +155,6 @@ class GLThread constructor( glRunList.poll()?.invoke() i++ } - renderer.onDrawFrame(gl10) if (BuildConfig.DEBUG) { GLES32.glGetError().let { @@ -381,7 +381,6 @@ class GLThread constructor( lastDirtyTimestamp.set(System.currentTimeMillis()) hasFinishedSinceDirty = false isDirty.set(true) - synchronized(runNotifier) { runNotifier.notify() } }