geforkt von Mirrors/FastAsyncWorldEdit
Only unlock if previously locked (#2489)
Dieser Commit ist enthalten in:
Ursprung
1996a38b46
Commit
46dd71e807
@ -100,7 +100,6 @@ import java.util.TimeZone;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.locks.Lock;
|
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -406,7 +405,8 @@ public class LocalSession implements TextureHolder {
|
|||||||
*/
|
*/
|
||||||
public void clearHistory() {
|
public void clearHistory() {
|
||||||
//FAWE start
|
//FAWE start
|
||||||
if (Fawe.isMainThread() && !historyWriteLock.tryLock()) {
|
boolean mainThread = Fawe.isMainThread();
|
||||||
|
if (mainThread && !historyWriteLock.tryLock()) {
|
||||||
// Do not make main thread wait if we cannot immediately clear history (on player logout usually)
|
// Do not make main thread wait if we cannot immediately clear history (on player logout usually)
|
||||||
TaskManager.taskManager().async(this::clearHistoryTask);
|
TaskManager.taskManager().async(this::clearHistoryTask);
|
||||||
return;
|
return;
|
||||||
@ -414,9 +414,12 @@ public class LocalSession implements TextureHolder {
|
|||||||
try {
|
try {
|
||||||
clearHistoryTask();
|
clearHistoryTask();
|
||||||
} finally {
|
} finally {
|
||||||
|
// only if we are on the main thread, we ever called tryLock -> need to unlock again
|
||||||
|
if (mainThread) {
|
||||||
historyWriteLock.unlock();
|
historyWriteLock.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void clearHistoryTask() {
|
private void clearHistoryTask() {
|
||||||
historyWriteLock.lock();
|
historyWriteLock.lock();
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren