1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-29 16:23:09 +00:00

Cleanup Bioskey()

And rename in dataAvailable()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2010-11-15 13:49:13 +01:00
parent 660378d10e
commit a1c02815cc
3 changed files with 37 additions and 49 deletions

View file

@ -218,20 +218,18 @@ int cpu_count() {
#endif #endif
/* /// Check for console input. Original code from Beowulf and Olithink
From Beowulf, from Olithink
*/
#ifndef _WIN32 #ifndef _WIN32
/* Non-windows version */
int Bioskey() int data_available()
{ {
fd_set readfds; fd_set readfds;
struct timeval timeout; struct timeval timeout;
FD_ZERO(&readfds); FD_ZERO(&readfds);
FD_SET(fileno(stdin), &readfds); FD_SET(fileno(stdin), &readfds);
/* Set to timeout immediately */ timeout.tv_sec = 0; // Set to timeout immediately
timeout.tv_sec = 0;
timeout.tv_usec = 0; timeout.tv_usec = 0;
select(16, &readfds, 0, 0, &timeout); select(16, &readfds, 0, 0, &timeout);
@ -239,59 +237,49 @@ int Bioskey()
} }
#else #else
/* Windows-version */
#include <windows.h>
#include <conio.h>
int Bioskey()
{
static int init = 0,
pipe;
static HANDLE inh;
DWORD dw;
/* If we're running under XBoard then we can't use _kbhit() as the input
* commands are sent to us directly over the internal pipe */
#if defined(FILE_CNT) int data_available()
if (stdin->_cnt > 0) {
return stdin->_cnt; static HANDLE inh = NULL;
#endif static bool usePipe;
if (!init) { INPUT_RECORD rec[256];
init = 1; DWORD dw, recCnt;
if (!inh)
{
inh = GetStdHandle(STD_INPUT_HANDLE); inh = GetStdHandle(STD_INPUT_HANDLE);
pipe = !GetConsoleMode(inh, &dw); usePipe = !GetConsoleMode(inh, &dw);
if (!pipe) { if (!usePipe)
{
SetConsoleMode(inh, dw & ~(ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT)); SetConsoleMode(inh, dw & ~(ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT));
FlushConsoleInputBuffer(inh); FlushConsoleInputBuffer(inh);
} }
} }
if (pipe) {
if (!PeekNamedPipe(inh, NULL, 0, NULL, &dw, NULL))
return 1;
return dw;
} else {
// Count the number of unread input records, including keyboard,
// mouse, and window-resizing input records.
GetNumberOfConsoleInputEvents(inh, &dw);
if (dw <= 0)
return 0;
// Read data from console without removing it from the buffer // If we're running under XBoard then we can't use PeekConsoleInput() as
INPUT_RECORD rec[256]; // the input commands are sent to us directly over the internal pipe.
DWORD recCnt; if (usePipe)
if (!PeekConsoleInput(inh, rec, Min(dw, 256), &recCnt)) return PeekNamedPipe(inh, NULL, 0, NULL, &dw, NULL) ? dw : 1;
return 0;
// Search for at least one keyboard event // Count the number of unread input records, including keyboard,
for (DWORD i = 0; i < recCnt; i++) // mouse, and window-resizing input records.
if (rec[i].EventType == KEY_EVENT) GetNumberOfConsoleInputEvents(inh, &dw);
return 1;
// Read data from console without removing it from the buffer
if (dw <= 0 || !PeekConsoleInput(inh, rec, Min(dw, 256), &recCnt))
return 0; return 0;
}
// Search for at least one keyboard event
for (DWORD i = 0; i < recCnt; i++)
if (rec[i].EventType == KEY_EVENT)
return 1;
return 0;
} }
#endif #endif
/// prefetch() preloads the given address in L1/L2 cache. This is a non /// prefetch() preloads the given address in L1/L2 cache. This is a non
/// blocking function and do not stalls the CPU waiting for data to be /// blocking function and do not stalls the CPU waiting for data to be
/// loaded from RAM, that can be very slow. /// loaded from RAM, that can be very slow.

View file

@ -47,7 +47,7 @@
extern const std::string engine_name(); extern const std::string engine_name();
extern int get_system_time(); extern int get_system_time();
extern int cpu_count(); extern int cpu_count();
extern int Bioskey(); extern int data_available();
extern void prefetch(char* addr); extern void prefetch(char* addr);
extern void prefetchPawn(Key, int); extern void prefetchPawn(Key, int);

View file

@ -1936,7 +1936,7 @@ split_point_start: // At split points actual search starts from here
int t = current_search_time(); int t = current_search_time();
// Poll for input // Poll for input
if (Bioskey()) if (data_available())
{ {
// We are line oriented, don't read single chars // We are line oriented, don't read single chars
std::string command; std::string command;