summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
935b935)
In commit
1ad1b0dcce2a ("motif: simplify border_clear implementation.")
we went slightly too far and actually removed all checks of the tile
mask value, so the border clear calls are done on every draw (only
during the blank border win state).
This kind of defeats the point of the expose handler excluding the blank
border tiles when calculating the mask that is passed in, and means the
rationale that the code being removed did literally nothing was not quite
accurate.
So, we still don't need the fancy computations, but we should check that
the provided mask says to redraw any part of the border before doing it.
}
/* Optimize the game end case where the outer frame is cleared */
}
/* 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++) {
}
for (i = 0; i < 25; i++) {