v0.9.4: fixed cases of vertex buffers not being cleared

This commit is contained in:
Evan Debenham 2021-07-11 16:05:25 -04:00
parent d47c8d1fac
commit 020d14011f
4 changed files with 21 additions and 3 deletions

View File

@ -103,7 +103,15 @@ public class Vertexbuffer {
}
}
public static void refreshAllBuffers(){
public static void clear(){
synchronized (buffers) {
for (Vertexbuffer buf : buffers.toArray(new Vertexbuffer[0])) {
buf.delete();
}
}
}
public static void reload(){
synchronized (buffers) {
for (Vertexbuffer buf : buffers) {
buf.updateVertices();

View File

@ -102,7 +102,7 @@ public class Game implements ApplicationListener {
versionContextRef = Gdx.graphics.getGLVersion();
Blending.useDefault();
TextureCache.reload();
Vertexbuffer.refreshAllBuffers();
Vertexbuffer.reload();
}
private GLVersion versionContextRef;
@ -119,7 +119,7 @@ public class Game implements ApplicationListener {
versionContextRef = Gdx.graphics.getGLVersion();
Blending.useDefault();
TextureCache.reload();
Vertexbuffer.refreshAllBuffers();
Vertexbuffer.reload();
}
height -= bottomInset;
@ -248,6 +248,8 @@ public class Game implements ApplicationListener {
if (scene != null) {
scene.destroy();
}
//clear any leftover vertex buffers
Vertexbuffer.clear();
scene = requestedScene;
if (onChange != null) onChange.beforeCreate();
scene.create();

View File

@ -245,6 +245,7 @@ public class PixelScene extends Scene {
if ((time -= Game.elapsed) <= 0) {
alpha( 0f );
parent.remove( this );
destroy();
} else {
alpha( time / FADE_TIME );
}

View File

@ -214,4 +214,11 @@ public class KeyDisplay extends Visual {
}
@Override
public void destroy() {
super.destroy();
if (buffer != null)
buffer.delete();
}
}