Fix deadlock in match-result display
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 30 Jul 2010 21:10:42 +0000 (23:10 +0200)
committerArun Persaud <arun@nubati.net>
Mon, 2 Aug 2010 07:58:08 +0000 (00:58 -0700)
commitfd3bdfd7587b74332180fc829650ce4681890979
treeceb88c3ee6c708a1860da53eae88f213a5e7ce81
parent5abce92da74b24ecbb925e18fd61d53f57db26e5
Fix deadlock in match-result display

At the end of a match, GameEnds() was recursively calling itself,
through DisplayFatalError() and ExitEvent(), and the latter was then
delaying until the calling GameEnds() terminated. (Which it would of
course never do before ExitEvent returned; fortunately there was a tim
limit to this delay, but in XBoard it was 10 sec in stead of 10 msec.)
 Now the calling of DisplayFatalError() (to show the result popup) is
delayed until after GameEnds completes (and resets the anti-recursion
flag 'endingGame'), so that it is simply executed a second time, unaware
of the earlier call. But this second time it does not do anything,
because the gameMode ws set to EndOfGame the first time, and the writing
of the PGN is blocked by the checksum being still the same.
backend.c