diff --git a/gtk.c b/gtk.c index 645b250..81aeda1 100644 --- a/gtk.c +++ b/gtk.c @@ -468,7 +468,7 @@ static gint configure_area(GtkWidget *widget, gdk_draw_rectangle(fe->pixmap, gc, 1, 0, 0, fe->w, fe->h); gdk_gc_unref(gc); - midend_redraw(fe->me); + midend_force_redraw(fe->me); return TRUE; } diff --git a/midend.c b/midend.c index e8bcd20..de20e14 100644 --- a/midend.c +++ b/midend.c @@ -132,6 +132,14 @@ static void midend_set_timer(midend_data *me) deactivate_timer(me->frontend); } +void midend_force_redraw(midend_data *me) +{ + if (me->drawstate) + me->ourgame->free_drawstate(me->drawstate); + me->drawstate = me->ourgame->new_drawstate(me->states[0].state); + midend_redraw(me); +} + void midend_new_game(midend_data *me) { while (me->nstates > 0) diff --git a/puzzles.h b/puzzles.h index 4ee718e..bf441c6 100644 --- a/puzzles.h +++ b/puzzles.h @@ -131,6 +131,7 @@ void midend_size(midend_data *me, int *x, int *y); void midend_new_game(midend_data *me); void midend_restart_game(midend_data *me); int midend_process_key(midend_data *me, int x, int y, int button); +void midend_force_redraw(midend_data *me); void midend_redraw(midend_data *me); float *midend_colours(midend_data *me, int *ncolours); void midend_timer(midend_data *me, float tplus);