X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=73bd41cfcbff2a5177e57edbeddf68ded0036609;hb=a2f26aa3631ae35cb507615e547eccb9ac521083;hp=76c3b77b495f8c8e54a17735f3d35bd75f396521;hpb=ed8c91aad1e9649a417feb5ef3d3637595ddbbfb;p=xboard.git diff --git a/xboard.c b/xboard.c index 76c3b77..73bd41c 100644 --- a/xboard.c +++ b/xboard.c @@ -5,7 +5,7 @@ * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, - * 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + * 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: @@ -3299,6 +3299,8 @@ void loadXIM(xim, xmask, filename, dest, mask) } } + fclose(fp); + /* create Pixmap of piece */ *dest = XCreatePixmap(xDisplay, DefaultRootWindow(xDisplay), w, h, xim->depth); @@ -4261,7 +4263,7 @@ static void colorDrawPieceImage(piece, square_color, x, y, dest) } break; } - if(appData.upsideDown && flipView) kind ^= 2; // swap white and black pieces + if(appData.upsideDown && flipView) { kind ^= 2; p += p < BlackPawn ? BlackPawn : -BlackPawn; }// swap white and black pieces if(useTexture & square_color+1) { BlankSquare(x, y, square_color, piece, dest, 1); // erase previous contents with background XSetClipMask(xDisplay, wlPieceGC, xpmMask[p]); @@ -4603,9 +4605,12 @@ void XDrawPosition(w, repaint, board) * but this causes a very distracting flicker. */ - if ( lineGap && IsDrawArrowEnabled()) repaint = True; if (!repaint && lastBoardValid[nr] && (nr == 1 || lastFlipView == flipView)) { + if ( lineGap && IsDrawArrowEnabled()) + XDrawSegments(xDisplay, xBoardWindow, lineGC, + gridSegments, BOARD_HEIGHT + BOARD_WIDTH + 2); + /* If too much changes (begin observing new game, etc.), don't do flashing */ do_flash = too_many_diffs(board, lastBoard[nr]) ? 0 : 1; @@ -4980,9 +4985,9 @@ Widget MiscCreate(name, text, mutable, callback, lines) XTranslateCoordinates(xDisplay, XtWindow(shellWidget), RootWindowOfScreen(XtScreen(shellWidget)), (bw_width - w) / 2, 0 - h / 2, &xx, &yy, &junk); -#endif /*!NOTDEF*/ x = xx; y = yy; +#endif /*!NOTDEF*/ if (y < 0) y = 0; /*avoid positioning top offscreen*/ j = 0; @@ -5945,6 +5950,7 @@ SendGameSelection(Widget w, Atom *selection, Atom *target, rewind(f); selection_tmp = XtMalloc(len + 1); count = fread(selection_tmp, 1, len, f); + fclose(f); if (len != count) { XtFree(selection_tmp); return False; @@ -8763,6 +8769,7 @@ BeginAnimation(anim, piece, startColor, start) { Pixmap mask; + if(appData.upsideDown && flipView) piece += piece < BlackPawn ? BlackPawn : -BlackPawn; /* The old buffer is initialised with the start square (empty) */ BlankSquare(start->x, start->y, startColor, EmptySquare, anim->saveBuf, 0); anim->prevFrame = *start; @@ -9300,16 +9307,13 @@ void DrawArrowBetweenSquares( int s_col, int s_row, int d_col, int d_row ) DrawArrowBetweenPoints( s_x, s_y, d_x, d_y ); - if(lineGap == 0) { - // this is a good idea, but it only works when lineGap == 0, because 'damage' on grid lines is not repaired - hor = 64*s_col + 32; vert = 64*s_row + 32; - for(i=0; i<= 64; i++) { + hor = 64*s_col + 32; vert = 64*s_row + 32; + for(i=0; i<= 64; i++) { damage[0][vert+6>>6][hor+6>>6] = True; damage[0][vert-6>>6][hor+6>>6] = True; damage[0][vert+6>>6][hor-6>>6] = True; damage[0][vert-6>>6][hor-6>>6] = True; hor += d_col - s_col; vert += d_row - s_row; - } } }