summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Lang <mlang@delysid.org>2014-03-30 20:08:21 +0200
committerMario Lang <mlang@delysid.org>2014-03-30 20:08:21 +0200
commit3d1c9876ab4afbde2f73819269c157389563fb0f (patch)
tree94b9da754e52de9ee17c38d2e5bb48c2b756f8dd
parent0d02c90b1ff556c7e86330f34af05a39f6faed32 (diff)
Try to fix 045a93cb98dfd320e756ea9d9799ea92f0900bc6 a different way.
Restore the old behaviour (run game hooks before painting move), but move the post-move hook from chess-game-move to chess-display-move. This fixes the reentrancy bug while preserving error checks being done in the game hooks. Maybe rename post-move to post-display-move?
-rw-r--r--chess-display.el5
-rw-r--r--chess-game.el3
2 files changed, 4 insertions, 4 deletions
diff --git a/chess-display.el b/chess-display.el
index 6bf03df..6f832da 100644
--- a/chess-display.el
+++ b/chess-display.el
@@ -376,9 +376,10 @@ If only START is given, it must be in algebraic move notation."
(chess-error 'game-is-over)))
(if (= chess-display-index (chess-game-index chess-module-game))
(let ((chess-display-handling-event t))
- (chess-display-paint-move nil ply)
(chess-game-move chess-module-game ply)
- (chess-display-set-index* nil (chess-game-index chess-module-game)))
+ (chess-display-paint-move nil ply)
+ (chess-display-set-index* nil (chess-game-index chess-module-game))
+ (chess-game-run-hooks chess-module-game 'post-move))
;; jww (2002-03-28): This should beget a variation within the
;; game, or alter the game, just as SCID allows
(chess-error 'cannot-yet-add))))
diff --git a/chess-game.el b/chess-game.el
index bd34e29..910a244 100644
--- a/chess-game.el
+++ b/chess-game.el
@@ -320,8 +320,7 @@ progress (nil), if it is drawn, resigned, mate, etc."
(if (chess-ply-keyword ply :resign)
(chess-game-run-hooks game 'resign)
- (chess-game-run-hooks game 'move current-ply)
- (chess-game-run-hooks game 'post-move))))
+ (chess-game-run-hooks game 'move current-ply))))
(defsubst chess-game-end (game keyword)
"End GAME, by resignation, draw, etc."