diff options
| author | Simon Tatham <anakin@pobox.com> | 2005-09-05 17:18:03 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2005-09-05 17:18:03 +0000 |
| commit | 56ff3647e272b672f8dca8b947bb571ba30d4742 (patch) | |
| tree | 0fcc2c2d1e4469a4c746fe8170ac626999020af3 /midend.c | |
| parent | fd1735170e408b32847c481eea2cffc4f164c7df (diff) | |
| download | puzzles-56ff3647e272b672f8dca8b947bb571ba30d4742.zip puzzles-56ff3647e272b672f8dca8b947bb571ba30d4742.tar.gz puzzles-56ff3647e272b672f8dca8b947bb571ba30d4742.tar.bz2 puzzles-56ff3647e272b672f8dca8b947bb571ba30d4742.tar.xz | |
I've dithered a bit in the past about whether or not it's allowable
to call game_set_size() twice on the same drawstate. Finally, a
definite decision: it isn't. Accordingly, midend.c arranges never to
do so, the devel docs state that puzzles may enforce by assertion
that it never happens, and the four puzzles which care (i.e. use
blitters) do so.
[originally from svn r6274]
Diffstat (limited to 'midend.c')
| -rw-r--r-- | midend.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -218,6 +218,17 @@ void midend_size(midend *me, int *x, int *y, int expand) int rx, ry; /* + * We can't set the size on the same drawstate twice. So if + * we've already sized one drawstate, we must throw it away and + * create a new one. + */ + if (me->drawstate && me->tilesize > 0) { + me->ourgame->free_drawstate(me->drawing, me->drawstate); + me->drawstate = me->ourgame->new_drawstate(me->drawing, + me->states[0].state); + } + + /* * Find the tile size that best fits within the given space. If * `expand' is TRUE, we must actually find the _largest_ such * tile size; otherwise, we bound above at the game's preferred |