Mercurial > mplayer.hg
view osdep/timer-lx.c @ 15978:c8dc500e078e
memcpy and memmove both copy memory, but when using memcpy the source and destination must not overlap, but here, they did overlap.
Committed with the kind blessing of Richard, patch by uau
author | gpoirier |
---|---|
date | Fri, 15 Jul 2005 22:09:30 +0000 |
parents | c0bde085511c |
children | 08cac43f1e38 |
line wrap: on
line source
// Precise timer routines for LINUX (C) LGB & A'rpi/ASTRAL #include <unistd.h> #ifdef __BEOS__ #define usleep(t) snooze(t) #endif #include <stdlib.h> #include <time.h> #include <sys/time.h> #include "../config.h" const char *timer_name = #ifdef HAVE_NANOSLEEP "nanosleep()"; #else "usleep()"; #endif int usec_sleep(int usec_delay) { #ifdef HAVE_NANOSLEEP struct timespec ts; ts.tv_sec = usec_delay / 1000000; ts.tv_nsec = (usec_delay % 1000000) * 1000; return nanosleep(&ts, NULL); #else return usleep(usec_delay); #endif } // Returns current time in microseconds unsigned int GetTimer(){ struct timeval tv; struct timezone tz; // float s; gettimeofday(&tv,&tz); // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; return (tv.tv_sec*1000000+tv.tv_usec); } // Returns current time in milliseconds unsigned int GetTimerMS(){ struct timeval tv; struct timezone tz; // float s; gettimeofday(&tv,&tz); // s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; return (tv.tv_sec*1000+tv.tv_usec/1000); } static unsigned int RelativeTime=0; // Returns time spent between now and last call in seconds float GetRelativeTime(){ unsigned int t,r; t=GetTimer(); // t*=16;printf("time=%ud\n",t); r=t-RelativeTime; RelativeTime=t; return (float)r * 0.000001F; } // Initialize timer, must be called at least once at start void InitTimer(){ GetRelativeTime(); } #if 0 void main(){ float t=0; InitTimer(); while(1){ t+=GetRelativeTime();printf("time= %10.6f\r",t);fflush(stdout); } } #endif