From 620dc275d1eea35abfc782832eb3e11180a7b638 Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 16 Mar 2014 11:14:34 -0400 Subject: [PATCH] better way of checking if a chunk needs VBO creation old way had some concurrency issues on slower hardware --- src/main/java/ca/blarg/gdx/tilemap3d/TileMap.java | 4 ++-- src/main/java/ca/blarg/gdx/tilemap3d/TileMapUpdater.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/TileMap.java b/src/main/java/ca/blarg/gdx/tilemap3d/TileMap.java index 9256bd1..6f49f13 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/TileMap.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/TileMap.java @@ -167,8 +167,8 @@ public class TileMap extends TileContainer implements Disposable { if (!isUpdating()) return true; // done updating (or we were never updating in the first place ...) - TileChunk chunkNeedingVboCreation = updater.chunkNeedingVboCreation; - if (chunkNeedingVboCreation != null) { + if (updater.isWaitingForVboCreation()) { + TileChunk chunkNeedingVboCreation = updater.chunkNeedingVboCreation; ChunkVertexGenerator.GeneratedChunkMeshes meshes = vertexGenerator.createMeshFromVertices(); chunkNeedingVboCreation.setMeshes(meshes); updater.signalDoneVboCreation(); diff --git a/src/main/java/ca/blarg/gdx/tilemap3d/TileMapUpdater.java b/src/main/java/ca/blarg/gdx/tilemap3d/TileMapUpdater.java index c6ec474..a81df64 100644 --- a/src/main/java/ca/blarg/gdx/tilemap3d/TileMapUpdater.java +++ b/src/main/java/ca/blarg/gdx/tilemap3d/TileMapUpdater.java @@ -24,6 +24,10 @@ public class TileMapUpdater implements Runnable { return chunkNeedingVboCreation; } + public boolean isWaitingForVboCreation() { + return waitingForVboCreation; + } + public synchronized void signalDoneVboCreation() { waitingForVboCreation = false; }