From 82f27f2fbfdeb55eec6369fc59d368238684d6ce Mon Sep 17 00:00:00 2001 From: extio-de Date: Mon, 12 Jan 2026 21:46:19 +0100 Subject: [PATCH] refactor(renderer): optimize buffered image rebuilding logic in G2DBaseControlImpl --- .../g2d/control/impl/G2DBaseControlImpl.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DBaseControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DBaseControlImpl.java index 9c36edd..62d6dcc 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DBaseControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DBaseControlImpl.java @@ -265,10 +265,17 @@ public abstract class G2DBaseControlImpl implements BaseControl { } protected void rebuildBufferedImage() { - this.disposeBufferedImage(); - this.bufferedImage = ((G2DRenderer) this.rendererData.getRenderer()).getMainFrame().getGraphicsConfiguration().createCompatibleImage(Math.max(1, this.width), Math.max(1, this.height), Transparency.TRANSLUCENT); - this.bufferedImageGraphics = this.bufferedImage.createGraphics(); - this.bufferedImageGraphics.setRenderingHints(G2DRenderingHintFactory.createDefault()); + final int width = Math.max(1, this.width); + final int height = Math.max(1, this.height); + if (this.bufferedImage != null && this.bufferedImage.getWidth() == width && this.bufferedImage.getHeight() == height) { + this.bufferedImageGraphics.clearRect(0, 0, width, height); + } + else { + this.disposeBufferedImage(); + this.bufferedImage = ((G2DRenderer) this.rendererData.getRenderer()).getMainFrame().getGraphicsConfiguration().createCompatibleImage(Math.max(1, this.width), Math.max(1, this.height), Transparency.TRANSLUCENT); + this.bufferedImageGraphics = this.bufferedImage.createGraphics(); + this.bufferedImageGraphics.setRenderingHints(G2DRenderingHintFactory.createDefault()); + } } protected void disposeBufferedImage() {