RicardasSim icon

SDL2 SDL_GetTicks wraps

RicardasSim | PRO | 10/02/19 11:27:49 PM UTC | 0 ⭐ | 683 👁️ | Never ⏰ | []
C |

1.29 KB

|

None

|

0 👍

/

0 👎

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