Skip to content

Commit

Permalink
fixed #1294
Browse files Browse the repository at this point in the history
  • Loading branch information
synopia committed Oct 22, 2014
1 parent 3ec5920 commit 9373e1e
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 4 deletions.
14 changes: 12 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# Simple stuff modules should ignore
# Modules get a copy of build.gradle as they are not allowed to have their own (for build security / sandboxing)
build.gradle

# IntelliJ
*.iml
build.gradle

# Eclipse
.checkstyle
.classpath
.project
.settings
bin/
build/
36 changes: 35 additions & 1 deletion src/main/java/org/terasology/navgraph/NavGraphSystem.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
import org.terasology.world.chunks.event.OnChunkLoaded;

import javax.vecmath.Vector3f;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Map;

Expand Down Expand Up @@ -69,7 +71,13 @@ public void initialise() {

@Override
public void shutdown() {

AccessController.doPrivileged(new PrivilegedAction<Object>() {
@Override
public Object run() {
taskMaster.shutdown(new ShutdownTask(), false);
return null;
}
});
}

@Override
Expand Down Expand Up @@ -204,4 +212,30 @@ public int compareTo(NavGraphTask o) {
}
}

public static class ShutdownTask implements NavGraphTask {
@Override
public int getPriority() {
return -1;
}

@Override
public int compareTo(NavGraphTask o) {
return Integer.compare(this.getPriority(), o.getPriority());
}

@Override
public String getName() {
return "Pathfinder:UpdateChunk";
}

@Override
public void run() {

}

@Override
public boolean isTerminateSignal() {
return true;
}
}
}
37 changes: 36 additions & 1 deletion src/main/java/org/terasology/work/WorkBoard.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
import org.terasology.work.kmeans.Cluster;
import org.terasology.world.BlockEntityRegistry;

import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Map;

/**
Expand Down Expand Up @@ -151,6 +153,13 @@ public void onSelectionChanged(ApplyBlockSelectionEvent event, EntityRef entity)

@Override
public void shutdown() {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
@Override
public Object run() {
taskMaster.shutdown(new ShutdownTask(), false);
return null;
}
});
}

public void offer(WorkBoardTask task) {
Expand Down Expand Up @@ -195,7 +204,6 @@ public String getName() {

@Override
public void run() {
logger.info("rebuild after nav graph change");
for (EntityRef work : entityManager.getEntitiesWith(WorkTargetComponent.class)) {
WorkTargetComponent workTargetComponent = work.getComponent(WorkTargetComponent.class);
WorkType workType = getWorkType(workTargetComponent.getWork());
Expand Down Expand Up @@ -338,4 +346,31 @@ public boolean isTerminateSignal() {
return false;
}
}

public static class ShutdownTask implements WorkBoardTask {
@Override
public int getPriority() {
return -1;
}

@Override
public int compareTo(WorkBoardTask o) {
return Integer.compare(this.getPriority(), o.getPriority());
}

@Override
public String getName() {
return "WorkBoard:ShutdownTask";
}

@Override
public void run() {

}

@Override
public boolean isTerminateSignal() {
return true;
}
}
}

0 comments on commit 9373e1e

Please sign in to comment.