From 7e7059e35a9ddeaea0daeafb59b118b48477f374 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 14 Feb 2021 17:20:53 +0100 Subject: [PATCH] rendering: don't update screen when not focused --- .../minosoft/gui/rendering/RenderWindow.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt index b0cc540ee..429281dee 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt @@ -14,6 +14,7 @@ import org.lwjgl.* import org.lwjgl.glfw.Callbacks import org.lwjgl.glfw.GLFW.* import org.lwjgl.glfw.GLFWErrorCallback +import org.lwjgl.glfw.GLFWWindowFocusCallback import org.lwjgl.glfw.GLFWWindowSizeCallback import org.lwjgl.opengl.* import org.lwjgl.opengl.GL11.* @@ -33,6 +34,8 @@ class RenderWindow(private val connection: Connection, val rendering: Rendering) lateinit var camera: Camera private val latch = CountUpAndDownLatch(1) + private var renderingPaused = false + // all renderers val chunkRenderer: ChunkRenderer = ChunkRenderer(connection, connection.player.world, this) val hudRenderer: HUDRenderer = HUDRenderer(connection, this) @@ -149,6 +152,12 @@ class RenderWindow(private val connection: Connection, val rendering: Rendering) } }) + glfwSetWindowFocusCallback(windowId, object : GLFWWindowFocusCallback() { + override fun invoke(window: Long, focused: Boolean) { + renderingPaused = !focused + } + }) + hudRenderer.screenChangeResizeCallback(screenWidth, screenHeight) @@ -166,9 +175,12 @@ class RenderWindow(private val connection: Connection, val rendering: Rendering) } fun startRenderLoop() { - var lastPositionChangeTime = 0.0 - while (!glfwWindowShouldClose(windowId)) { + if (renderingPaused) { + glfwSwapBuffers(windowId) + glfwPollEvents() + continue + } renderStats.startFrame() glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) // clear the framebuffer