Changeset 2422:23f102fcb3e3 in roaraudio


Ignore:
Timestamp:
08/18/09 22:02:30 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

much more precise clock :)))

Location:
roard
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • roard/driver_sysclock.c

    r2367 r2422  
    7272 gettimeofday(&(self->lasttime), NULL); 
    7373 
     74 self->last_wanted = 0; 
     75 
    7476 return 0; 
    7577} 
     
    8991 struct driver_sysclock * self = vio->inst; 
    9092 struct timeval now; 
    91  unsigned long long diff = (1000000 * count / self->bps); 
    92  unsigned long long ago; 
     93 long long diff = (1000000 * count / self->bps); 
     94 long long ago; 
    9395 
    9496 gettimeofday(&now, NULL); 
     
    9799 ago += 1000000*(now.tv_sec - self->lasttime.tv_sec); 
    98100 
     101 ago -= self->last_wanted; 
     102 
    99103 memcpy(&(self->lasttime), &now, sizeof(now)); 
    100104 
    101105 ROAR_DBG("driver_sysclock_write(*): count=%u, bps=%u, diff=%llu, ago=%llu", count, self->bps, diff, ago); 
    102106 
    103  if ( diff <= ago ) 
    104   return count; 
    105  
    106107 diff -= ago; 
    107108 
    108  usleep(diff); 
     109 self->last_wanted = diff; 
     110 
     111 if ( diff > 0 ) 
     112  usleep(diff); 
    109113 
    110114 return count; 
  • roard/include/driver_sysclock.h

    r2367 r2422  
    2929 int bps; 
    3030 struct timeval lasttime; 
     31 long int last_wanted; 
    3132}; 
    3233 
Note: See TracChangeset for help on using the changeset viewer.