From 6dd281ab844f7b6eb459bd67132bfbf1bee60c97 Mon Sep 17 00:00:00 2001
From: H.G. Muller <h.g.muller@hccnet.nl>
Date: Wed, 10 Oct 2012 20:37:58 +0200
Subject: [PATCH] Fix expose requests seek graph

---
 backend.c  |    6 +-----
 draw.c     |   20 ++++----------------
 frontend.h |    2 --
 3 files changed, 5 insertions(+), 23 deletions(-)

diff --git a/backend.c b/backend.c
index 9333320..b7dad06 100644
--- a/backend.c
+++ b/backend.c
@@ -2513,9 +2513,7 @@ PlotSeekAd (int i)
 void
 PlotSingleSeekAd (int i)
 {
-	DrawSeekOpen();
 	PlotSeekAd(i);
-	DrawSeekClose();
 }
 
 void
@@ -2602,14 +2600,13 @@ DrawSeekGraph ()
     h = BOARD_HEIGHT * (squareSize + lineGap) + lineGap;
     w = BOARD_WIDTH  * (squareSize + lineGap) + lineGap;
 
-    DrawSeekOpen();
     DrawSeekBackground(0, 0, w, h);
     DrawSeekAxis(hMargin, h-1-vMargin, w-5, h-1-vMargin);
     DrawSeekAxis(hMargin, h-1-vMargin, hMargin, 5);
     for(i=0; i<4000; i+= 100) if(i>=minRating && i<maxRating) {
 	int yy =((double)i - minRating)/(maxRating - minRating)*(h-vMargin-squareSize/8-1) + vMargin;
 	yy = h-1-yy;
-	DrawSeekAxis(hMargin+5*(i%500==0), yy, hMargin-5, yy); // rating ticks
+	DrawSeekAxis(hMargin-5, yy, hMargin+5*(i%500==0), yy); // rating ticks
 	if(i%500 == 0) {
 	    char buf[MSG_SIZ];
 	    snprintf(buf, MSG_SIZ, "%d", i);
@@ -2627,7 +2624,6 @@ DrawSeekGraph ()
 	}
     }
     for(i=0; i<nrOfSeekAds; i++) PlotSeekAd(i);
-    DrawSeekClose();
     return TRUE;
 }
 
diff --git a/draw.c b/draw.c
index 668e4a5..3807516 100644
--- a/draw.c
+++ b/draw.c
@@ -372,6 +372,7 @@ void DrawSeekAxis( int x, int y, int xTo, int yTo )
 
     /* free memory */
     cairo_destroy (cr);
+    GraphExpose(currBoard, x-1, yTo-1, xTo-x+2, y-yTo+2);
 }
 
 void DrawSeekBackground( int left, int top, int right, int bottom )
@@ -385,6 +386,7 @@ void DrawSeekBackground( int left, int top, int right, int bottom )
 
     /* free memory */
     cairo_destroy (cr);
+    GraphExpose(currBoard, left, top, right-left, bottom-top);
 }
 
 void DrawSeekText(char *buf, int x, int y)
@@ -403,6 +405,7 @@ void DrawSeekText(char *buf, int x, int y)
 
     /* free memory */
     cairo_destroy (cr);
+    GraphExpose(currBoard, x-5, y-10, 60, 15);
 }
 
 void DrawSeekDot(int x, int y, int colorNr)
@@ -427,6 +430,7 @@ void DrawSeekDot(int x, int y, int colorNr)
 
     /* free memory */
     cairo_destroy (cr);
+    GraphExpose(currBoard, x-squareSize/8, y-squareSize/8, 2*(squareSize/8), 2*(squareSize/8));
 }
 
 void
@@ -436,16 +440,6 @@ InitDrawingHandle (Option *opt)
 }
 
 void
-DrawSeekOpen ()
-{
-}
-
-void
-DrawSeekClose ()
-{
-}
-
-void
 CreateGrid ()
 {
     int i, j;
@@ -478,7 +472,6 @@ DrawGrid()
   int i;
   cairo_t *cr;
 
-  DrawSeekOpen();
   /* get a cairo_t */
   cr = cairo_create (csBoardWindow);
 
@@ -503,7 +496,6 @@ void
 DrawBorder (int x, int y, int type)
 {
     cairo_t *cr;
-    DrawSeekOpen();
     char *col;
 
     switch(type) {
@@ -628,7 +620,6 @@ DoDrawDot (cairo_surface_t *cs, int marker, int x, int y, int r)
 void
 DrawDot (int marker, int x, int y, int r)
 { // used for atomic captures; no need to draw on backup
-  DrawSeekOpen();
   DoDrawDot(csBoardWindow, marker, x, y, r);
 }
 
@@ -638,8 +629,6 @@ DrawOneSquare (int x, int y, ChessSquare piece, int square_color, int marker, ch
     // piece, background, coordinate/count, marker dot
     cairo_t *cr;
 
-    DrawSeekOpen();
-
     if (piece == EmptySquare) {
 	BlankSquare(csBoardWindow, x, y, square_color, piece, 1);
     } else {
@@ -696,7 +685,6 @@ static cairo_surface_t *c_animBufs[3*NrOfAnims]; // newBuf, saveBuf
 static void
 InitAnimState (AnimNr anr)
 {
-    DrawSeekOpen(); // set cs to board widget
     if(c_animBufs[anr]) cairo_surface_destroy (c_animBufs[anr]);
     if(c_animBufs[anr+2]) cairo_surface_destroy (c_animBufs[anr+2]);
     c_animBufs[anr+4] = csBoardWindow;
diff --git a/frontend.h b/frontend.h
index 2956cf8..56fed20 100644
--- a/frontend.h
+++ b/frontend.h
@@ -97,8 +97,6 @@ void DrawSeekAxis P(( int x, int y, int xTo, int yTo ));
 void DrawSeekBackground P(( int left, int top, int right, int bottom ));
 void DrawSeekText P((char *buf, int x, int y));
 void DrawSeekDot P((int x, int y, int color));
-void DrawSeekOpen P((void));
-void DrawSeekClose P((void));
 void PopUpMoveDialog P((char first));
 
 void RingBell P((void));
-- 
1.7.0.4