From 4bbb79ab11d89627b6c24fd7fb495ef350b74f88 Mon Sep 17 00:00:00 2001 From: extio-de Date: Sun, 18 Jan 2026 17:16:05 +0100 Subject: [PATCH] refactor(renderer): introduce skipDisplayFrame logic in RendererData and update G2DRenderer rendering cycle --- .../de/extio/game_engine/renderer/RendererData.java | 11 +++++++++++ .../extio/game_engine/renderer/g2d/G2DRenderer.java | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/extio/game_engine/renderer/RendererData.java b/src/main/java/de/extio/game_engine/renderer/RendererData.java index 803fb7a..65cec3c 100644 --- a/src/main/java/de/extio/game_engine/renderer/RendererData.java +++ b/src/main/java/de/extio/game_engine/renderer/RendererData.java @@ -1,5 +1,6 @@ package de.extio.game_engine.renderer; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import org.springframework.context.ApplicationContext; @@ -31,6 +32,8 @@ public class RendererData { private final AtomicLong frame = new AtomicLong(); + private final AtomicBoolean skipDisplayFrame = new AtomicBoolean(false); + private final KeycodeRegistry keycodeRegistry; private final EventService eventService; @@ -87,6 +90,14 @@ public class RendererData { public long nextFrame() { return this.frame.incrementAndGet(); } + + public boolean isSkipDisplayFrame() { + return this.skipDisplayFrame.get(); + } + + public boolean setSkipDisplayFrame(final boolean skipDisplayFrame) { + return this.skipDisplayFrame.getAndSet(skipDisplayFrame); + } public Renderer getRenderer() { return this.renderer; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java b/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java index ce4566d..f08dfdf 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/G2DRenderer.java @@ -225,7 +225,10 @@ public class G2DRenderer implements Renderer { // Rendering cycle START // - bufferStrategy.show(); + final var skipDisplay = this.rendererData.setSkipDisplayFrame(false); + if (! skipDisplay) { + bufferStrategy.show(); + } Toolkit.getDefaultToolkit().sync(); } finally {