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:
parent
660378d10e
commit
a1c02815cc
3 changed files with 37 additions and 49 deletions
82
src/misc.cpp
82
src/misc.cpp
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue