aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2015-07-05 21:57:38 +0100
committerSimon Tatham <anakin@pobox.com>2015-07-05 21:57:38 +0100
commitaa1a9375be96cd8e0f89a670359c3c80ad7cf937 (patch)
treeb09dac2b9a783d9a6cc05f53dfbeaac876257c4d
parentf306b9db55453f7d7fc824bbbf89ca6ac7d2d273 (diff)
downloadpuzzles-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.
-rw-r--r--undead.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/undead.c b/undead.c
index f828ac0..fe5954f 100644
--- a/undead.c
+++ b/undead.c
@@ -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,