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 */