From 18247c0019bd4b13e64fd8d406f304306b74fdad Mon Sep 17 00:00:00 2001
From: H.G. Muller <h.g.muller@hccnet.nl>
Date: Fri, 5 Oct 2012 15:40:14 +0200
Subject: [PATCH] Also use cairo on slave board

With dual-board observing the drawing should be redirected to the
slave board, so SwitchWindow should also switch the xlib-surface to
one for the slave window.
---
 xboard.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/xboard.c b/xboard.c
index 801f9a9..6d8f18c 100644
--- a/xboard.c
+++ b/xboard.c
@@ -341,7 +341,7 @@ WindowPlacement wpTags;
 #define SOLID 0
 #define OUTLINE 1
 Boolean cairoAnimate;
-static cairo_surface_t *csBoardWindow, *csBoardBackup;
+static cairo_surface_t *csBoardWindow, *csBoardBackup, *csDualBoard;
 static cairo_surface_t *pngPieceBitmaps[2][(int)BlackPawn];    // scaled pieces as used
 static cairo_surface_t *pngPieceBitmaps2[2][(int)BlackPawn+4]; // scaled pieces in store
 static cairo_surface_t *pngBoardBitmap[2];
@@ -894,9 +894,16 @@ SwitchWindow ()
     extern Option dualOptions[];
     static Window dual;
     Window tmp = xBoardWindow;
+    cairo_surface_t *cstmp = csBoardWindow;
     if(!dual) dual = XtWindow(dualOptions[3].handle); // must be first call
     xBoardWindow = dual; // swap them
     dual = tmp;
+    csBoardWindow = csDualBoard;
+    if(!csDualBoard && cstmp) {
+	int boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap);
+	int boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap);
+	csBoardWindow = cairo_xlib_surface_create(xDisplay, xBoardWindow, DefaultVisual(xDisplay, 0), boardWidth, boardHeight);
+    }
 }
 
 void
@@ -933,7 +940,8 @@ NewSurfaces ()
     // delete surfaces after size becomes invalid, so they will be recreated
     if(csBoardWindow) cairo_surface_destroy(csBoardWindow);
     if(csBoardBackup) cairo_surface_destroy(csBoardBackup);
-    csBoardWindow = csBoardBackup = NULL;
+    if(csDualBoard) cairo_surface_destroy(csDualBoard);
+    csBoardWindow = csBoardBackup = csDualBoard = NULL;
 }
 
 #define BoardSize int
-- 
1.7.0.4