diff --git a/src/main/java/featurecat/lizzie/analysis/Leelaz.java b/src/main/java/featurecat/lizzie/analysis/Leelaz.java index 2ae045e05..276b5ee4f 100644 --- a/src/main/java/featurecat/lizzie/analysis/Leelaz.java +++ b/src/main/java/featurecat/lizzie/analysis/Leelaz.java @@ -60,6 +60,9 @@ public class Leelaz { private boolean isPondering; private long startPonderTime; + // enable temporary detaching for efficiency + public boolean isAttached = true; + // fixed_handicap public boolean isSettingHandicap = false; @@ -601,6 +604,9 @@ public void endModifyingBoard() { * @param move coordinate of the coordinate */ public void playMove(Stone color, String move) { + if (!isAttached) { + return; + } synchronized (this) { String colorString; switch (color) { @@ -688,6 +694,9 @@ public void handicap(int num) { } public void undo() { + if (!isAttached) { + return; + } synchronized (this) { sendCommand("undo"); bestMoves = new ArrayList<>(); diff --git a/src/main/java/featurecat/lizzie/rules/SGFParser.java b/src/main/java/featurecat/lizzie/rules/SGFParser.java index f2e9cf733..28dc01aae 100644 --- a/src/main/java/featurecat/lizzie/rules/SGFParser.java +++ b/src/main/java/featurecat/lizzie/rules/SGFParser.java @@ -121,7 +121,10 @@ private static boolean parse(String value) { Lizzie.leelaz.supportScoremean = false; } + // Detach engine for avoiding useless "play" and "undo" (#752). + Lizzie.leelaz.isAttached = false; parseValue(value, null, false); + Lizzie.leelaz.isAttached = true; return true; }