Fix switching back from mono-mode XB
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 21 Dec 2011 21:17:01 +0000 (22:17 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 27 Dec 2011 11:51:21 +0000 (12:51 +0100)
Suppressing unnecesary X-server calls in InitDrawingSizes had broken
switching back from monoMode, because the animVars have to be recreated
for that, and this was only done when the variant changed.

xboard.c

index 9170e7f..ecf421c 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -1686,7 +1686,7 @@ void InitDrawingSizes(BoardSize boardSize, int flags)
     int i;
     static Dimension oldWidth, oldHeight;
     static VariantClass oldVariant;
     int i;
     static Dimension oldWidth, oldHeight;
     static VariantClass oldVariant;
-    static int oldDual = -1;
+    static int oldDual = -1, oldMono = -1;
 
     if(!formWidget) return;
 
 
     if(!formWidget) return;
 
@@ -1765,7 +1765,7 @@ void InitDrawingSizes(BoardSize boardSize, int flags)
     // [HGM] pieces: tailor piece bitmaps to needs of specific variant
     // (only for xpm)
 
     // [HGM] pieces: tailor piece bitmaps to needs of specific variant
     // (only for xpm)
 
-    if(gameInfo.variant == oldVariant) return; // and only if variant changed
+  if(gameInfo.variant != oldVariant) { // and only if variant changed
 
     if(useImages) {
       for(i=0; i<4; i++) {
 
     if(useImages) {
       for(i=0; i<4; i++) {
@@ -1833,9 +1833,12 @@ void InitDrawingSizes(BoardSize boardSize, int flags)
        }
       }
     }
        }
       }
     }
+  }
 #if HAVE_LIBXPM
 #if HAVE_LIBXPM
+  if(appData.monoMode == oldMono)
     CreateAnimVars();
 #endif
     CreateAnimVars();
 #endif
+  oldMono = appData.monoMode;
 }
 #endif
 
 }
 #endif