Fix spurious undo at game start
authorH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 14 Jan 2016 15:49:34 +0000 (16:49 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 14 Jan 2016 15:49:34 +0000 (16:49 +0100)
For ping-supporting engines the logic in handling unexpected moves
is completely changed. Such moves can occur when an engine think is
interrupted by a 'force' command, which in many engines is only
processed after the think completes naturally with a move, and could
cross such a move anyway in engines that would abort the search promptly.
If the 'force' is the result of the user switching to EditGame mode,
such a move should be undone, if it occurs at game end or start,
the moves can be ignored, as the following 'new' will erase all memory
of them. So in EditGameEvent, if the engine was thinking, a flag is set
to indicate its upcoming move should be undone, and ping is sent after
'force'. The 'pong' response would arrive after the move (if any), and
clears the flag. In all other cases of ping imbalance, incoming moves
are ignored.
 While waiting for a pong after EditGameEvent the user interface is
frozen, and a message is displayed to keep the user quiet.


No differences found