diff options
author | 2016-03-12 12:31:13 +0100 | |
---|---|---|
committer | 2016-03-12 12:31:13 +0100 | |
commit | a026a582f1a0ea8c1ede3acaddacef506ef3f3b0 (patch) | |
tree | e31573822f2359677de519f9f3b600d98e8764cd /src/osd/osdcore.cpp | |
parent | 477d2abd43984f076b7e45f5527591fa8fd0d241 (diff) | |
parent | dcab55bf53b94713a6f72e9633f5101c8dd6c08c (diff) |
Merge pull request #15 from mamedev/master
Sync to base master
Diffstat (limited to 'src/osd/osdcore.cpp')
-rw-r--r-- | src/osd/osdcore.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/osd/osdcore.cpp b/src/osd/osdcore.cpp index 632124e2e7c..fef7d0d0f7a 100644 --- a/src/osd/osdcore.cpp +++ b/src/osd/osdcore.cpp @@ -2,6 +2,8 @@ // copyright-holders:Aaron Giles #include "osdcore.h" +#include <thread> +#include <chrono> static const int MAXSTACK = 10; static osd_output *m_stack[MAXSTACK]; @@ -141,3 +143,41 @@ void CLIB_DECL osd_printf_log(const char *format, ...) va_end(argptr); } #endif + +//============================================================ +// osd_ticks +//============================================================ + +osd_ticks_t osd_ticks(void) +{ + return std::chrono::high_resolution_clock::now().time_since_epoch().count(); +} + + +//============================================================ +// osd_ticks_per_second +//============================================================ + +osd_ticks_t osd_ticks_per_second(void) +{ + return std::chrono::high_resolution_clock::period::den / std::chrono::high_resolution_clock::period::num; +} + +//============================================================ +// osd_sleep +//============================================================ + +void osd_sleep(osd_ticks_t duration) +{ + std::this_thread::sleep_for(std::chrono::high_resolution_clock::duration(duration)); +} + +//============================================================ +// osd_num_processors +//============================================================ + +int osd_get_num_processors(void) +{ + // max out at 4 for now since scaling above that seems to do poorly + return MIN(std::thread::hardware_concurrency(), 4); +} |