Mercurial > mplayer.hg
annotate osdep/timer-linux.c @ 29038:b9b2967c0c6d
Get rid of gettimeofday reimplementation for MinGW, all remotely recent
versions of MinGW already provide it.
author | reimar |
---|---|
date | Fri, 27 Mar 2009 19:34:50 +0000 |
parents | 5cfef41a1771 |
children | e67f8e8d2e74 |
rev | line source |
---|---|
28744 | 1 /* |
2 * precise timer routines for Linux | |
3 * copyright (C) LGB & A'rpi/ASTRAL | |
4 * | |
5 * This file is part of MPlayer. | |
6 * | |
7 * MPlayer is free software; you can redistribute it and/or modify | |
8 * it under the terms of the GNU General Public License as published by | |
9 * the Free Software Foundation; either version 2 of the License, or | |
10 * (at your option) any later version. | |
11 * | |
12 * MPlayer is distributed in the hope that it will be useful, | |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 * GNU General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU General Public License along | |
18 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
20 */ | |
1 | 21 |
22 #include <unistd.h> | |
13612 | 23 #ifdef __BEOS__ |
24 #define usleep(t) snooze(t) | |
25 #endif | |
5297 | 26 #include <stdlib.h> |
2476 | 27 #include <time.h> |
1 | 28 #include <sys/time.h> |
16985 | 29 #include "config.h" |
1 | 30 |
12955 | 31 const char *timer_name = |
12954 | 32 #ifdef HAVE_NANOSLEEP |
33 "nanosleep()"; | |
34 #else | |
35 "usleep()"; | |
36 #endif | |
37 | |
2273 | 38 int usec_sleep(int usec_delay) |
39 { | |
3090 | 40 #ifdef HAVE_NANOSLEEP |
2273 | 41 struct timespec ts; |
42 ts.tv_sec = usec_delay / 1000000; | |
43 ts.tv_nsec = (usec_delay % 1000000) * 1000; | |
44 return nanosleep(&ts, NULL); | |
45 #else | |
46 return usleep(usec_delay); | |
47 #endif | |
48 } | |
49 | |
99 | 50 // Returns current time in microseconds |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16985
diff
changeset
|
51 unsigned int GetTimer(void){ |
1 | 52 struct timeval tv; |
53 // float s; | |
18467 | 54 gettimeofday(&tv,NULL); |
1 | 55 // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; |
26759
8eff880f638c
cosmetics: Remove useless parentheses from return statements.
diego
parents:
25510
diff
changeset
|
56 return tv.tv_sec * 1000000 + tv.tv_usec; |
1 | 57 } |
58 | |
4385 | 59 // Returns current time in milliseconds |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16985
diff
changeset
|
60 unsigned int GetTimerMS(void){ |
4385 | 61 struct timeval tv; |
62 // float s; | |
18467 | 63 gettimeofday(&tv,NULL); |
4385 | 64 // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; |
26759
8eff880f638c
cosmetics: Remove useless parentheses from return statements.
diego
parents:
25510
diff
changeset
|
65 return tv.tv_sec * 1000 + tv.tv_usec / 1000; |
4385 | 66 } |
67 | |
1 | 68 static unsigned int RelativeTime=0; |
69 | |
70 // Returns time spent between now and last call in seconds | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16985
diff
changeset
|
71 float GetRelativeTime(void){ |
1 | 72 unsigned int t,r; |
73 t=GetTimer(); | |
74 // t*=16;printf("time=%ud\n",t); | |
75 r=t-RelativeTime; | |
76 RelativeTime=t; | |
77 return (float)r * 0.000001F; | |
78 } | |
79 | |
80 // Initialize timer, must be called at least once at start | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16985
diff
changeset
|
81 void InitTimer(void){ |
1 | 82 GetRelativeTime(); |
83 } | |
84 | |
85 | |
86 #if 0 | |
25510 | 87 #include <stdio.h> |
88 int main(void){ | |
1 | 89 float t=0; |
90 InitTimer(); | |
91 while(1){ t+=GetRelativeTime();printf("time= %10.6f\r",t);fflush(stdout); } | |
92 } | |
93 #endif | |
94 |