home *** CD-ROM | disk | FTP | other *** search
/ Geek 6 / Geek-006.iso / linux / video / xmovie-1.5.3.tar.gz / xmovie-1.5.3.tar / xmovie-1.5.3 / guicast / timer.C < prev    next >
C/C++ Source or Header  |  2000-11-29  |  1KB  |  59 lines

  1. #include "timer.h"
  2. #include <sys/time.h>
  3. #include <sys/types.h>
  4. #include <unistd.h>
  5.  
  6. Timer::Timer()
  7. {
  8. }
  9.  
  10. Timer::~Timer()
  11. {
  12. }
  13.  
  14. int Timer::update()
  15. {
  16.     gettimeofday(¤t_time, 0);
  17.     return 0;
  18. }
  19.  
  20. long long Timer::get_difference(struct timeval *result)
  21. {
  22.     gettimeofday(&new_time, 0);
  23.     
  24.     result->tv_usec = new_time.tv_usec - current_time.tv_usec;
  25.     result->tv_sec = new_time.tv_sec - current_time.tv_sec;
  26.     if(result->tv_usec < 0) { result->tv_usec += 1000000; result->tv_sec--; }
  27.     
  28.     return (long long)result->tv_sec * 1000 + (long long)result->tv_usec / 1000;
  29. }
  30.  
  31. long long Timer::get_difference()
  32. {
  33.     gettimeofday(&new_time, 0);
  34.  
  35.     new_time.tv_usec -= current_time.tv_usec;
  36.     new_time.tv_sec -= current_time.tv_sec;
  37.     if(new_time.tv_usec < 0)
  38.     {
  39.         new_time.tv_usec += 1000000;
  40.         new_time.tv_sec--;
  41.     }
  42.  
  43.     return (long long)new_time.tv_sec * 1000 + (long long)new_time.tv_usec / 1000;
  44. }
  45.  
  46. long long Timer::get_scaled_difference(long denominator)
  47. {
  48.     get_difference(&new_time);
  49.     return (long long)new_time.tv_sec * denominator + (long long)((float)new_time.tv_usec / 1000000 * denominator);
  50. }
  51.  
  52. int Timer::delay(long milliseconds)
  53. {
  54.     delay_duration.tv_sec = 0;
  55.     delay_duration.tv_usec = milliseconds * 1000;
  56.     select(0,  NULL,  NULL, NULL, &delay_duration);
  57.     return 0;
  58. }
  59.