#include "common.h"
#include <boost/chrono/duration.hpp>
#include <boost/chrono/system_clocks.hpp>
#ifdef _WIN32
#include "api_config.h"
#include <windows.h>
#include <mmsystem.h>
#pragma comment (lib,"winmm.lib")
#endif
double lsl::lsl_clock() {
return lslboost::chrono::nanoseconds(lslboost::chrono::high_resolution_clock::now().time_since_epoch()).count()/1000000000.0;
}
void lsl::ensure_lsl_initialized() {
static bool is_initialized = false;
if (!is_initialized) {
is_initialized = true;
#ifdef _WIN32
if (int desired_timer_resolution = lsl::api_config::get_instance()->timer_resolution()) {
struct override_timer_resolution_until_exit {
override_timer_resolution_until_exit(int res): res_(res) { timeBeginPeriod(res_); }
~override_timer_resolution_until_exit() { timeEndPeriod(res_); }
int res_;
};
static override_timer_resolution_until_exit overrider(desired_timer_resolution);
}
#endif
}
}