From 27bbc874da14f4e28ec89317e1f9ef49d7667c91 Mon Sep 17 00:00:00 2001 From: yugecin Date: Sat, 7 Jul 2018 23:34:18 +0200 Subject: [PATCH] fix state getting rendered before pre rendering update after switch --- src/yugecin/opsudance/core/DisplayContainer.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/yugecin/opsudance/core/DisplayContainer.java b/src/yugecin/opsudance/core/DisplayContainer.java index 5696e840..796f4d59 100644 --- a/src/yugecin/opsudance/core/DisplayContainer.java +++ b/src/yugecin/opsudance/core/DisplayContainer.java @@ -80,6 +80,7 @@ public class DisplayContainer implements ErrorDumpable, SkinChangedListener { public int targetRenderInterval; public int targetBackgroundRenderInterval; + private boolean rendering; public int renderDelta; public int delta; @@ -212,6 +213,7 @@ public class DisplayContainer implements ErrorDumpable, SkinChangedListener { } if (timeSinceLastRender >= maxRenderInterval) { + rendering = true; GL.glClear(SGL.GL_COLOR_BUFFER_BIT); /* @@ -251,6 +253,7 @@ public class DisplayContainer implements ErrorDumpable, SkinChangedListener { Display.update(false); GL11.glFlush(); + rendering = false; } Display.processMessages(); @@ -506,6 +509,12 @@ public class DisplayContainer implements ErrorDumpable, SkinChangedListener { this.state = state; this.state.enter(); input.addListener(this.state); + if (this.rendering) { + // state might be changed in preRenderUpdate, + // in that case the new state will be rendered without having + // preRenderUpdate being called first, so do that now + this.state.preRenderUpdate(); + } } }