RicardasSim

SDL2 SDL_GetTicks wraps

Oct 2nd, 2019
718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.29 KB | None | 0 0
  1. Uint32 oldTimeVal, newTimeVal;
  2. Uint32 deltaT = 0;
  3. //...
  4. oldTimeVal = SDL_GetTicks();
  5. while(!done)
  6. {
  7. //...
  8. //events
  9. //...
  10.  
  11.     SDL_Delay(1000);    //just for testing
  12.  
  13.     //returns an unsigned 32-bit value
  14.     //if the program runs for more than about 49 days, SDL_GetTicks() value wraps
  15.     newTimeVal = SDL_GetTicks();
  16.  
  17.     if(newTimeVal < oldTimeVal)
  18.     {
  19.         Uint32 tmp = 0xFFFFFFFF;
  20.         deltaT =  tmp - oldTimeVal + 1 + newTimeVal;
  21.         SDL_Log("Wrap. oldTimeVal: %Xh newTimeVal: %Xh deltaT: %Xh", oldTimeVal, newTimeVal, deltaT );
  22.         oldTimeVal = newTimeVal;
  23.     }
  24.     else
  25.     {
  26.         deltaT = newTimeVal - oldTimeVal;
  27.         SDL_Log("oldTimeVal: %Xh newTimeVal: %Xh deltaT: %Xh", oldTimeVal, newTimeVal, deltaT );
  28.         oldTimeVal = newTimeVal;
  29.     }
  30. }
  31.  
  32. /*
  33. output:
  34.  
  35. INFO: oldTimeVal: FFFFEDD9h newTimeVal: FFFFF1C2h deltaT: 3E9h
  36. INFO: oldTimeVal: FFFFF1C2h newTimeVal: FFFFF5AAh deltaT: 3E8h
  37. INFO: oldTimeVal: FFFFF5AAh newTimeVal: FFFFF992h deltaT: 3E8h
  38. INFO: oldTimeVal: FFFFF992h newTimeVal: FFFFFD7Bh deltaT: 3E9h
  39. INFO: Wrap. oldTimeVal: FFFFFD7Bh newTimeVal: 163h deltaT: 3E8h <-----WRAP-----
  40. INFO: oldTimeVal: 163h newTimeVal: 54Ch deltaT: 3E9h
  41. INFO: oldTimeVal: 54Ch newTimeVal: 934h deltaT: 3E8h
  42. INFO: oldTimeVal: 934h newTimeVal: D1Ch deltaT: 3E8h
  43. INFO: oldTimeVal: D1Ch newTimeVal: 1105h deltaT: 3E9h
  44.  
  45. */
Advertisement
Add Comment
Please, Sign In to add comment