cec: fixed - 'routing change' is a broadcast message. log routing changes, but don...
[deb_libcec.git] / src / lib / platform / timeutils.h
CommitLineData
abbca718
LOK
1#pragma once
2
3/*
4 * boblight
5 * Copyright (C) Bob 2009
6 *
7 * boblight is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * boblight is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 * See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#include <stdint.h>
6df2c52f 22#if defined(__APPLE__)
23#include <mach/mach_time.h>
24#include <CoreVideo/CVHostTime.h>
06a1f7ce
LOK
25#elif defined(__WINDOWS__)
26#include <time.h>
27#else
28#include <sys/time.h>
6df2c52f 29#endif
abbca718 30
b9187cc6 31namespace CEC
abbca718 32{
b9187cc6 33 inline int64_t GetTimeMs()
abbca718 34 {
6df2c52f 35 #if defined(__APPLE__)
36 return (int64_t) (CVGetCurrentHostTime() * 1000 / CVGetHostClockFrequency());
37 #elif defined(__WINDOWS__)
b9187cc6
LOK
38 time_t rawtime;
39 time(&rawtime);
abbca718 40
b9187cc6
LOK
41 LARGE_INTEGER tickPerSecond;
42 LARGE_INTEGER tick;
43 if (QueryPerformanceFrequency(&tickPerSecond))
44 {
45 QueryPerformanceCounter(&tick);
46 return (int64_t) (tick.QuadPart / 1000.);
47 }
48 return -1;
49 #else
40339852
LOK
50 timeval time;
51 gettimeofday(&time, NULL);
52 return (int64_t) (time.tv_sec * 1000 + time.tv_usec / 1000);
b9187cc6
LOK
53 #endif
54 }
abbca718 55
b9187cc6
LOK
56 template <class T>
57 inline T GetTimeSec()
58 {
59 return (T)GetTimeMs() / (T)1000.0;
60 }
61};