From e317daf081a1048904fdf0b548946fa3ba6593a7 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 29 Apr 2019 12:22:05 +0200 Subject: sync with upstream --- .../include/kodi/tools/CMakeLists.txt | 3 +- .../kodi-addon-dev-kit/include/kodi/tools/Time.h | 91 ++++++++++++++++++++++ 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/Time.h (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/tools') diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/CMakeLists.txt b/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/CMakeLists.txt index 939585c..ef2fa25 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/CMakeLists.txt +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/CMakeLists.txt @@ -1,4 +1,5 @@ -set(HEADERS DllHelper.h ) +set(HEADERS DllHelper.h + Time.h) if(NOT ENABLE_STATIC_LIBS) core_add_library(addons_kodi-addon-dev-kit_include_kodi_tools) diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/Time.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/Time.h new file mode 100644 index 0000000..31c29fd --- /dev/null +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/Time.h @@ -0,0 +1,91 @@ +#pragma once +/* + * Copyright (C) 2005-2019 Team Kodi + * Copyright (C) 2011-2012 Pulse-Eight Limited. + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#if defined(TARGET_DARWIN) +#include +#include +#elif defined(TARGET_WINDOWS) +#include +#include +#else +#include +#endif + +namespace kodi +{ +namespace time +{ + +//=============================================================================== +/// @brief Function to get current time in milliseconds +/// +/// @return Current time in milliseconds as a double value +/// +/// +/// ----------------------------------------------------------------------------- +/// +/// **Example:** +/// ~~~~~~~~~~~~~{.cpp} +/// +/// #include +/// +/// ... +/// double time = kodi::time::GetTimeMs(); +/// ... +/// ~~~~~~~~~~~~~ +/// +inline double GetTimeMs() +{ +#if defined(TARGET_DARWIN) + return static_cast(CVGetCurrentHostTime() / static_cast(CVGetHostClockFrequency() * 0.001)); +#elif defined(TARGET_WINDOWS) + LARGE_INTEGER tickPerSecond; + LARGE_INTEGER tick; + if (QueryPerformanceFrequency(&tickPerSecond)) + { + QueryPerformanceCounter(&tick); + return static_cast(tick.QuadPart) / (tickPerSecond.QuadPart / 1000.0); + } + return 0.0; +#else + timespec time; + clock_gettime(CLOCK_MONOTONIC, &time); + return static_cast(time.tv_sec) * 1000.0 + time.tv_nsec / 1000000.0; +#endif +} +//------------------------------------------------------------------------------- + +//=============================================================================== +/// @brief Function to get current time in seconds +/// +/// @return Current time in seconds with the value type defined in the template +/// +/// +/// ----------------------------------------------------------------------------- +/// +/// **Example:** +/// ~~~~~~~~~~~~~{.cpp} +/// +/// #include +/// +/// ... +/// double time = kodi::time::GetTimeSec(); +/// ... +/// ~~~~~~~~~~~~~ +/// +template +inline T GetTimeSec() +{ + return static_cast(GetTimeMs()) / static_cast(1000.0); +} +//------------------------------------------------------------------------------- + +} /* namespace time */ +} /* namespace kodi */ -- cgit v1.2.3