unsigned sz = state->game_tile_sz;
int i;
- if (state->flags & FLAG_VIEW_GOAL_ON_GAME) {
- for (i = 0; i < 3; i++) {
- buf[i] = state->board.goal[i];
- buf[i] = (gp[i] & ~GOAL_MASK) | (buf[i] << GOAL_SHIFT);
- }
- gp = buf;
- }
+ if (state->flags & FLAG_VIEW_GOAL_ON_GAME)
+ gp = game_overlay_goal(&state->board, buf);
/* Optimize the game end case where the outer frame is cleared */
- if (((gp[0] | gp[1] | gp[2]) & ~GOAL_MASK) == 0) {
- clear_border(display, game, sz);
- mask &= GOAL_MASK;
+ if (mask & GAME_MASK & ~GOAL_MASK) {
+ if (((gp[0] | gp[1] | gp[2]) & ~GOAL_MASK) == 0) {
+ clear_border(display, game, sz);
+ mask &= GOAL_MASK;
+ }
}
for (i = 0; i < 25; i++) {