Fix from James H: in printing mode, the shared code between drawing
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 18 Jan 2010 21:23:26 +0000 (21:23 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 18 Jan 2010 21:23:26 +0000 (21:23 +0000)
and printing must avoid referring to stuff in the game_drawstate,
since the game_drawstate isn't a real one.

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

tents.c

diff --git a/tents.c b/tents.c
index a229e55..0de5567 100644 (file)
--- a/tents.c
+++ b/tents.c
@@ -2465,7 +2465,7 @@ static void int_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
      * changed) the numbers.
      */
     for (x = 0; x < w; x++) {
-       if (ds->numbersdrawn[x] != errors[w*h+x]) {
+       if (printing || ds->numbersdrawn[x] != errors[w*h+x]) {
            char buf[80];
            draw_rect(dr, COORD(x), COORD(h)+1, TILESIZE, BRBORDER-1,
                      COL_BACKGROUND);
@@ -2474,11 +2474,12 @@ static void int_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
                      FONT_VARIABLE, TILESIZE/2, ALIGN_HCENTRE|ALIGN_VNORMAL,
                      (errors[w*h+x] ? COL_ERROR : COL_GRID), buf);
            draw_update(dr, COORD(x), COORD(h)+1, TILESIZE, BRBORDER-1);
-           ds->numbersdrawn[x] = errors[w*h+x];
+           if (!printing)
+                ds->numbersdrawn[x] = errors[w*h+x];
        }
     }
     for (y = 0; y < h; y++) {
-       if (ds->numbersdrawn[w+y] != errors[w*h+w+y]) {
+       if (printing || ds->numbersdrawn[w+y] != errors[w*h+w+y]) {
            char buf[80];
            draw_rect(dr, COORD(w)+1, COORD(y), BRBORDER-1, TILESIZE,
                      COL_BACKGROUND);
@@ -2487,7 +2488,8 @@ static void int_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate,
                      FONT_VARIABLE, TILESIZE/2, ALIGN_HRIGHT|ALIGN_VCENTRE,
                      (errors[w*h+w+y] ? COL_ERROR : COL_GRID), buf);
            draw_update(dr, COORD(w)+1, COORD(y), BRBORDER-1, TILESIZE);
-           ds->numbersdrawn[w+y] = errors[w*h+w+y];
+           if (!printing)
+                ds->numbersdrawn[w+y] = errors[w*h+w+y];
        }
     }