From: simon Date: Wed, 11 May 2005 13:03:17 +0000 (+0000) Subject: Completion flashes were occasionally failing to be cleaned up if a X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/commitdiff_plain/0551ee6ba20cfc716603b49ba4238aea7f0dfb8b Completion flashes were occasionally failing to be cleaned up if a subsequent move animation began during them. Tracked this to overenthusiastic use of clip() and fixed it. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@5766 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/twiddle.c b/twiddle.c index 6c51cb7..7585239 100644 --- a/twiddle.c +++ b/twiddle.c @@ -693,6 +693,16 @@ static void draw_tile(frontend *fe, game_state *state, int x, int y, int coords[8]; char str[40]; + /* + * If we've been passed a rotation region but we're drawing a + * tile which is outside it, we must draw it normally. This can + * occur if we're cleaning up after a completion flash while a + * new move is also being made. + */ + if (rot && (x < rot->cx || y < rot->cy || + x >= rot->cx+rot->cw || y > rot->cy+rot->ch)) + rot = NULL; + if (rot) clip(fe, rot->cx, rot->cy, rot->cw, rot->ch);