X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Fsearch.c;h=c1d8fd99eb062b75ac93ff394ca43e71164fe118;hb=fe6e10662390b3ad9642d6f5466e61c3a4faebc2;hp=e21ce0e90d53fbbce4d3b72a0b664cd716928ea6;hpb=9167c0e40628c12ae7b0f0ff679f285d53d253ae;p=gnushogi.git diff --git a/gnushogi/search.c b/gnushogi/search.c index e21ce0e..c1d8fd9 100644 --- a/gnushogi/search.c +++ b/gnushogi/search.c @@ -2,11 +2,14 @@ * FILE: search.c * * ---------------------------------------------------------------------- - * - * Copyright (c) 2012 Free Software Foundation + * Copyright (c) 1993, 1994, 1995 Matthias Mutz + * Copyright (c) 1999 Michael Vanier and the Free Software Foundation * * GNU SHOGI is based on GNU CHESS * + * Copyright (c) 1988, 1989, 1990 John Stanback + * Copyright (c) 1992 Free Software Foundation + * * This file is part of GNU SHOGI. * * GNU Shogi is free software; you can redistribute it and/or modify it @@ -27,10 +30,8 @@ */ #include "gnushogi.h" - -#if !defined OLDTIME && defined HAVE_GETTIMEOFDAY -double pow(double x, double y); -#endif +#include +#include short background = 0; static short DepthBeyond; @@ -173,6 +174,7 @@ SelectMove(short side, SelectMove_mode iop) } else { + background = false; /* [HGM] with ponder on we did not switch back to foreground mode??? */ player = side; SetResponseTime(side); } @@ -526,6 +528,8 @@ search(short side, short best = -(SCORE_LIMIT + 3000); short bestwidth = 0; short mustcut; + static struct pollfd pollfds[1] = { /* [0] = */ { /* .fd = */ STDIN_FILENO, + /* .events = */ POLLIN } }; #ifdef NULLMOVE short PVsave; @@ -543,6 +547,19 @@ search(short side, { ElapsedTime(COMPUTE_MODE); + if(background) { + int cnt = poll(pollfds, sizeof(pollfds)/sizeof(pollfds[0]), 0); + if (cnt < 0) { + perror("polling standard input"); + ExitShogi(); + } + if (cnt) { /* if anything to read, or error occured */ + if (!flag.timeout) + flag.back = true; /* previous: flag.timeout = true; */ + flag.bothsides = false; + } + } + if (flag.back) { flag.back = false;