diff options
| author | Mario Lang <mlang@delysid.org> | 2014-03-30 20:08:21 +0200 |
|---|---|---|
| committer | Mario Lang <mlang@delysid.org> | 2014-03-30 20:08:21 +0200 |
| commit | 3d1c9876ab4afbde2f73819269c157389563fb0f (patch) | |
| tree | 94b9da754e52de9ee17c38d2e5bb48c2b756f8dd | |
| parent | 0d02c90b1ff556c7e86330f34af05a39f6faed32 (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.el | 5 | ||||
| -rw-r--r-- | chess-game.el | 3 |
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." |
