diff --git a/src/engine/helper/HL_OsVersion.cpp b/src/engine/helper/HL_OsVersion.cpp index 52017c6b..32bd1ae2 100644 --- a/src/engine/helper/HL_OsVersion.cpp +++ b/src/engine/helper/HL_OsVersion.cpp @@ -101,13 +101,16 @@ int iosVersion() #include #include #include +#include int _kbhit() { + /* static const int STDIN = 0; static bool initialized = false; - if (! initialized) { + if (! initialized) + { // Use termios to turn off line buffering termios term; tcgetattr(STDIN, &term); @@ -119,7 +122,31 @@ int _kbhit() int bytesWaiting; ioctl(STDIN, FIONREAD, &bytesWaiting); - return bytesWaiting; + return bytesWaiting;*/ + static const int STDIN_FILENO = 0; + struct termios oldt, newt; + int ch; + int oldf; + + tcgetattr(STDIN_FILENO, &oldt); + newt = oldt; + newt.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &newt); + oldf = fcntl(STDIN_FILENO, F_GETFL, 0); + fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK); + + ch = getchar(); + + tcsetattr(STDIN_FILENO, TCSANOW, &oldt); + fcntl(STDIN_FILENO, F_SETFL, oldf); + + if(ch != EOF) + { + ungetc(ch, stdin); + return 1; + } + + return 0; } #endif diff --git a/src/engine/helper/HL_Sync.cpp b/src/engine/helper/HL_Sync.cpp index fbd320f3..d40daddd 100644 --- a/src/engine/helper/HL_Sync.cpp +++ b/src/engine/helper/HL_Sync.cpp @@ -19,27 +19,27 @@ void SyncHelper::delay(unsigned int microseconds) { #ifdef TARGET_WIN - ::Sleep(microseconds/1000); + ::Sleep(microseconds/1000); #endif #if defined(TARGET_OSX) || defined(TARGET_LINUX) - timespec requested, remaining; - requested.tv_sec = microseconds / 1000000; - requested.tv_nsec = (microseconds % 1000000) * 1000; - remaining.tv_nsec = 0; - remaining.tv_sec = 0; - nanosleep(&requested, &remaining); + timespec requested, remaining; + requested.tv_sec = microseconds / 1000000; + requested.tv_nsec = (microseconds % 1000000) * 1000; + remaining.tv_nsec = 0; + remaining.tv_sec = 0; + nanosleep(&requested, &remaining); #endif } long SyncHelper::increment(long *value) { - assert(value); + assert(value); #ifdef TARGET_WIN - return ::InterlockedIncrement((LONG*)value); + return ::InterlockedIncrement((LONG*)value); #elif TARGET_OSX - return OSAtomicIncrement32((int32_t*)value); + return OSAtomicIncrement32((int32_t*)value); #elif TARGET_LINUX - return -1; + return -1; #endif } @@ -47,7 +47,7 @@ long SyncHelper::increment(long *value) void ThreadHelper::setName(const std::string &name) { #if defined(TARGET_LINUX) - pthread_setname_np(pthread_self(), name.c_str()); + pthread_setname_np(pthread_self(), name.c_str()); #endif } @@ -59,31 +59,31 @@ static time_t TimestampBase = time(nullptr); uint64_t TimeHelper::getTimestamp() { - time_point t = steady_clock::now(); + time_point t = steady_clock::now(); - uint64_t ms = duration_cast< milliseconds >(t.time_since_epoch()).count(); + uint64_t ms = duration_cast< milliseconds >(t.time_since_epoch()).count(); - return ms - TimestampStartPoint + TimestampBase * 1000; + return ms - TimestampStartPoint + TimestampBase * 1000; } uint64_t TimeHelper::getUptime() { - time_point t = steady_clock::now(); + time_point t = steady_clock::now(); - uint64_t ms = duration_cast< milliseconds >(t.time_since_epoch()).count(); + uint64_t ms = duration_cast< milliseconds >(t.time_since_epoch()).count(); - return ms - TimestampStartPoint; + return ms - TimestampStartPoint; } uint32_t TimeHelper::getDelta(uint32_t later, uint32_t earlier) { - if (later > earlier) - return later - earlier; + if (later > earlier) + return later - earlier; - if (later < earlier && later < 0x7FFFFFFF && earlier >= 0x7FFFFFFF) - return 0xFFFFFFFF - earlier + later; + if (later < earlier && later < 0x7FFFFFFF && earlier >= 0x7FFFFFFF) + return 0xFFFFFFFF - earlier + later; - return 0; + return 0; } TimeHelper::ExecutionTime::ExecutionTime()