Timer_win.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ALVAR, A Library for Virtual and Augmented Reality.
3  *
4  * Copyright 2007-2012 VTT Technical Research Centre of Finland
5  *
6  * Contact: VTT Augmented Reality Team <alvar.info@vtt.fi>
7  * <http://www.vtt.fi/multimedia/alvar.html>
8  *
9  * ALVAR is free software; you can redistribute it and/or modify it under the
10  * terms of the GNU Lesser General Public License as published by the Free
11  * Software Foundation; either version 2.1 of the License, or (at your option)
12  * any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
17  * for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with ALVAR; if not, see
21  * <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>.
22  */
23 
24 #include "Timer_private.h"
25 
26 #include <windows.h>
27 
28 namespace alvar {
29 
30 class TimerPrivateData
31 {
32 public:
37  , mStart()
38  {
39  }
40 
42  LARGE_INTEGER mPerformanceFrequency;
43  LARGE_INTEGER mPerformanceStart;
44  DWORD mStart;
45 };
46 
48  : d(new TimerPrivateData())
49 {
50  QueryPerformanceFrequency(&d->mPerformanceFrequency);
51  if (d->mPerformanceFrequency.QuadPart) {
52  d->mPerformanceQuerySupported = true;
53  }
54 }
55 
57 {
58  delete d;
59 }
60 
62 {
63  if (d->mPerformanceQuerySupported) {
64  QueryPerformanceCounter(&d->mPerformanceStart);
65  }
66  else {
67  d->mStart = GetTickCount();
68  }
69 }
70 
71 double TimerPrivate::stop()
72 {
73  if (d->mPerformanceQuerySupported) {
74  LARGE_INTEGER stop;
75  LARGE_INTEGER difference;
76  QueryPerformanceCounter(&stop);
77  difference.QuadPart = stop.QuadPart - d->mPerformanceStart.QuadPart;
78  return double(difference.QuadPart) / d->mPerformanceFrequency.QuadPart;
79  }
80  else {
81  return (GetTickCount() - d->mStart) / 1000.0;
82  }
83 }
84 
85 } // namespace alvar
Main ALVAR namespace.
Definition: Alvar.h:174
LARGE_INTEGER mPerformanceStart
Definition: Timer_win.cpp:43
Drawable d[32]
LARGE_INTEGER mPerformanceFrequency
Definition: Timer_win.cpp:42


ar_track_alvar
Author(s): Scott Niekum
autogenerated on Thu Jun 6 2019 19:27:24