aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk.c2
-rw-r--r--midend.c8
-rw-r--r--puzzles.h1
3 files changed, 10 insertions, 1 deletions
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);