Cycles: svn merge -r37333:37694 https://svn.blender.org/svnroot/bf-blender/trunk
[blender.git] / intern / cycles / util / util_time.cpp
1 /*
2  * Copyright 2011, Blender Foundation.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18
19 #include <stdlib.h>
20
21 #include "util_time.h"
22
23 #ifdef _WIN32
24
25 #include <windows.h>
26
27 CCL_NAMESPACE_BEGIN
28
29 double time_dt()
30 {
31         __int64 frequency, counter;
32
33         QueryPerformanceFrequency((LARGE_INTEGER*)&frequency);
34         QueryPerformanceCounter((LARGE_INTEGER*)&counter);
35
36         return (double)counter/(double)frequency;
37 }
38
39 void time_sleep(double t)
40 {
41         Sleep((int)(t*1000));
42 }
43
44 CCL_NAMESPACE_END
45
46 #else
47
48 #include <sys/time.h>
49 #include <unistd.h>
50
51 CCL_NAMESPACE_BEGIN
52
53 double time_dt()
54 {
55         struct timeval now;
56         gettimeofday(&now, NULL);
57
58         return now.tv_sec + now.tv_usec*1e-6;
59 }
60
61 void time_sleep(double t)
62 {
63         if(t >= 1.0)
64                 sleep((int)t);
65
66         usleep((int)(t*1e6));
67 }
68
69 CCL_NAMESPACE_END
70
71 #endif
72