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();