Made the lighting thread safe

This commit is contained in:
jsrobson10 2020-08-20 12:08:39 +10:00
parent 7c176bbcde
commit 25314cfebb
2 changed files with 11 additions and 8 deletions

View File

@ -1,6 +1,7 @@
package projectzombie.display;
import java.nio.ByteBuffer;
import java.util.concurrent.atomic.AtomicReference;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL33;
@ -36,18 +37,18 @@ public class DisplayLighting
private static boolean lighting_new = false;
public static int lightmap;
private static Lighting lighting;
private static AtomicReference<Lighting> lighting = new AtomicReference<DisplayLighting.Lighting>();
public static void setDirty() {
lighting_dirty = true;
}
private synchronized static Lighting getLighting() {
return lighting;
private static Lighting getLighting() {
return lighting.get();
}
private synchronized static void setLighting(Lighting lighting) {
DisplayLighting.lighting = lighting;
private static void setLighting(Lighting lighting) {
DisplayLighting.lighting.set(lighting);
lighting_new = true;
}

View File

@ -1,5 +1,7 @@
package projectzombie.worker;
import java.util.concurrent.atomic.AtomicReference;
import projectzombie.display.DisplayLighting;
import projectzombie.task.Task;
@ -14,7 +16,7 @@ public class WorkerLighting extends Thread
}
private boolean running;
private LightingTask task;
private AtomicReference<LightingTask> task = new AtomicReference<WorkerLighting.LightingTask>();
public void processLighting(float[] lights, int width, int height, int x, int y)
{
@ -25,7 +27,7 @@ public class WorkerLighting extends Thread
task.x = x;
task.y = y;
this.task = task;
this.task.set(task);
}
private float getLight(LightingTask task, int x, int y) {
@ -78,7 +80,7 @@ public class WorkerLighting extends Thread
{
while(running)
{
LightingTask task = this.task;
LightingTask task = this.task.get();
if(task != null)
{