diff options
| author | Simon Tatham <anakin@pobox.com> | 2015-07-05 21:57:38 +0100 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2015-07-05 21:57:38 +0100 |
| commit | aa1a9375be96cd8e0f89a670359c3c80ad7cf937 (patch) | |
| tree | b09dac2b9a783d9a6cc05f53dfbeaac876257c4d /undead.c | |
| parent | f306b9db55453f7d7fc824bbbf89ca6ac7d2d273 (diff) | |
| download | puzzles-aa1a9375be96cd8e0f89a670359c3c80ad7cf937.zip puzzles-aa1a9375be96cd8e0f89a670359c3c80ad7cf937.tar.gz puzzles-aa1a9375be96cd8e0f89a670359c3c80ad7cf937.tar.bz2 puzzles-aa1a9375be96cd8e0f89a670359c3c80ad7cf937.tar.xz | |
Fix redrawing of Undead 'done' clues after a resize.
The is_hint_stale() function has the side effect of copying a path
hint's new colour-relevant information into the game_drawstate, where
draw_path_hint will then use it. But it returns TRUE early in some
situations, notably !ds->started, which can happen after the actual
game start if the window is resized and a fresh drawstate is created.
This patch, thanks to Chris Boyle, fixes it by eliminating the early
returns from is_hint_stale - the return value is unchanged, but now
the side effects happen reliably.
Diffstat (limited to 'undead.c')
| -rw-r--r-- | undead.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -2506,20 +2506,21 @@ static void draw_pencils(drawing *dr, game_drawstate *ds, static int is_hint_stale(const game_drawstate *ds, int hflash, const game_state *state, int index) { - if (!ds->started) return TRUE; - if (ds->hflash != hflash) return TRUE; + int ret = FALSE; + if (!ds->started) ret = TRUE; + if (ds->hflash != hflash) ret = TRUE; if (ds->hint_errors[index] != state->hint_errors[index]) { ds->hint_errors[index] = state->hint_errors[index]; - return TRUE; + ret = TRUE; } if (ds->hints_done[index] != state->hints_done[index]) { ds->hints_done[index] = state->hints_done[index]; - return TRUE; + ret = TRUE; } - return FALSE; + return ret; } static void game_redraw(drawing *dr, game_drawstate *ds, |