Uint32 oldTimeVal, newTimeVal;
Uint32 deltaT = 0;
//...
oldTimeVal = SDL_GetTicks();
while(!done)
{
//...
//events
//...
SDL_Delay(1000); //just for testing
//returns an unsigned 32-bit value
//if the program runs for more than about 49 days, SDL_GetTicks() value wraps
newTimeVal = SDL_GetTicks();
if(newTimeVal < oldTimeVal)
{
Uint32 tmp = 0xFFFFFFFF;
deltaT = tmp - oldTimeVal + 1 + newTimeVal;
SDL_Log("Wrap. oldTimeVal: %Xh newTimeVal: %Xh deltaT: %Xh", oldTimeVal, newTimeVal, deltaT );
oldTimeVal = newTimeVal;
}
else
{
deltaT = newTimeVal - oldTimeVal;
SDL_Log("oldTimeVal: %Xh newTimeVal: %Xh deltaT: %Xh", oldTimeVal, newTimeVal, deltaT );
oldTimeVal = newTimeVal;
}
}
/*
output:
INFO: oldTimeVal: FFFFEDD9h newTimeVal: FFFFF1C2h deltaT: 3E9h
INFO: oldTimeVal: FFFFF1C2h newTimeVal: FFFFF5AAh deltaT: 3E8h
INFO: oldTimeVal: FFFFF5AAh newTimeVal: FFFFF992h deltaT: 3E8h
INFO: oldTimeVal: FFFFF992h newTimeVal: FFFFFD7Bh deltaT: 3E9h
INFO: Wrap. oldTimeVal: FFFFFD7Bh newTimeVal: 163h deltaT: 3E8h <-----WRAP-----
INFO: oldTimeVal: 163h newTimeVal: 54Ch deltaT: 3E9h
INFO: oldTimeVal: 54Ch newTimeVal: 934h deltaT: 3E8h
INFO: oldTimeVal: 934h newTimeVal: D1Ch deltaT: 3E8h
INFO: oldTimeVal: D1Ch newTimeVal: 1105h deltaT: 3E9h
*/
Comments