X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/ac9f41c4c8ccbf9364a5d351e4cb134812a9926b..3c9562a2f71995e2a6f6d6fee0bcead2bebfdebc:/midend.c diff --git a/midend.c b/midend.c index ab70489..779ca0c 100644 --- a/midend.c +++ b/midend.c @@ -126,7 +126,7 @@ midend *midend_new(frontend *fe, const game *ourgame, me->elapsed = 0.0F; me->tilesize = me->winwidth = me->winheight = 0; if (drapi) - me->drawing = drawing_init(drapi, drhandle); + me->drawing = drawing_new(drapi, me, drhandle); else me->drawing = NULL; @@ -550,6 +550,7 @@ static int midend_really_process_key(midend *me, int x, int y, int button) * state has been updated and a redraw is called for. */ midend_redraw(me); + midend_set_timer(me); goto done; } else if (s) { midend_stop_anim(me); @@ -739,8 +740,21 @@ void midend_redraw(midend *me) } } +/* + * Nasty hacky function used to implement the --redo option in + * gtk.c. Only used for generating the puzzles' icons. + */ +void midend_freeze_timer(midend *me, float tprop) +{ + me->anim_pos = me->anim_time * tprop; + midend_redraw(me); + deactivate_timer(me->frontend); +} + void midend_timer(midend *me, float tplus) { + int need_redraw = (me->anim_time > 0 || me->flash_time > 0); + me->anim_pos += tplus; if (me->anim_pos >= me->anim_time || me->anim_time == 0 || !me->oldstate) { @@ -753,7 +767,8 @@ void midend_timer(midend *me, float tplus) me->flash_pos = me->flash_time = 0; } - midend_redraw(me); + if (need_redraw) + midend_redraw(me); if (me->timing) { float oldelapsed = me->elapsed;