summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/tools')
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/CMakeLists.txt3
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/Time.h91
2 files changed, 93 insertions, 1 deletions
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 @@
1set(HEADERS DllHelper.h ) 1set(HEADERS DllHelper.h
2 Time.h)
2 3
3if(NOT ENABLE_STATIC_LIBS) 4if(NOT ENABLE_STATIC_LIBS)
4 core_add_library(addons_kodi-addon-dev-kit_include_kodi_tools) 5 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 @@
1#pragma once
2/*
3 * Copyright (C) 2005-2019 Team Kodi
4 * Copyright (C) 2011-2012 Pulse-Eight Limited.
5 * This file is part of Kodi - https://kodi.tv
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 * See LICENSES/README.md for more information.
9 */
10
11#if defined(TARGET_DARWIN)
12#include <mach/mach_time.h>
13#include <CoreVideo/CVHostTime.h>
14#elif defined(TARGET_WINDOWS)
15#include <Windows.h>
16#include <time.h>
17#else
18#include <time.h>
19#endif
20
21namespace kodi
22{
23namespace time
24{
25
26//===============================================================================
27/// @brief Function to get current time in milliseconds
28///
29/// @return Current time in milliseconds as a double value
30///
31///
32/// -----------------------------------------------------------------------------
33///
34/// **Example:**
35/// ~~~~~~~~~~~~~{.cpp}
36///
37/// #include <kodi/tools/Time.h>
38///
39/// ...
40/// double time = kodi::time::GetTimeMs();
41/// ...
42/// ~~~~~~~~~~~~~
43///
44inline double GetTimeMs()
45{
46#if defined(TARGET_DARWIN)
47 return static_cast<double>(CVGetCurrentHostTime() / static_cast<double>(CVGetHostClockFrequency() * 0.001));
48#elif defined(TARGET_WINDOWS)
49 LARGE_INTEGER tickPerSecond;
50 LARGE_INTEGER tick;
51 if (QueryPerformanceFrequency(&tickPerSecond))
52 {
53 QueryPerformanceCounter(&tick);
54 return static_cast<double>(tick.QuadPart) / (tickPerSecond.QuadPart / 1000.0);
55 }
56 return 0.0;
57#else
58 timespec time;
59 clock_gettime(CLOCK_MONOTONIC, &time);
60 return static_cast<double>(time.tv_sec) * 1000.0 + time.tv_nsec / 1000000.0;
61#endif
62}
63//-------------------------------------------------------------------------------
64
65//===============================================================================
66/// @brief Function to get current time in seconds
67///
68/// @return Current time in seconds with the value type defined in the template
69///
70///
71/// -----------------------------------------------------------------------------
72///
73/// **Example:**
74/// ~~~~~~~~~~~~~{.cpp}
75///
76/// #include <kodi/tools/Time.h>
77///
78/// ...
79/// double time = kodi::time::GetTimeSec<double>();
80/// ...
81/// ~~~~~~~~~~~~~
82///
83template <class T>
84inline T GetTimeSec()
85{
86 return static_cast<T>(GetTimeMs()) / static_cast<T>(1000.0);
87}
88//-------------------------------------------------------------------------------
89
90} /* namespace time */
91} /* namespace kodi */