Allow --save to work with --soln, causing saved game files to be
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 28 Dec 2011 18:17:30 +0000 (18:17 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 28 Dec 2011 18:17:30 +0000 (18:17 +0000)
written out with the Solve operation having already been performed.

git-svn-id: svn://svn.tartarus.org/sgt/puzzles@9375 cda61777-01e9-0310-a592-d414129be87e

gtk.c
midend.c

diff --git a/gtk.c b/gtk.c
index d45a76d..c156651 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -2698,6 +2698,16 @@ int main(int argc, char **argv)
                char *realname = snewn(40 + strlen(savefile) +
                                       strlen(savesuffix), char);
                sprintf(realname, "%s%d%s", savefile, i, savesuffix);
+
+                if (soln) {
+                    char *err = midend_solve(me);
+                    if (err) {
+                        fprintf(stderr, "%s: unable to show solution: %s\n",
+                                realname, err);
+                        return 1;
+                    }
+                }
+
                ctx.fp = fopen(realname, "w");
                if (!ctx.fp) {
                    fprintf(stderr, "%s: open: %s\n", realname,
index 8f4e4c9..c1f3a01 100644 (file)
--- a/midend.c
+++ b/midend.c
@@ -1331,7 +1331,8 @@ char *midend_solve(midend *me)
        me->anim_time = 0.0;
        midend_finish_move(me);
     }
-    midend_redraw(me);
+    if (me->drawing)
+        midend_redraw(me);
     midend_set_timer(me);
     return NULL;
 }