diff options
Diffstat (limited to 'OpenSim/Framework/Util.cs')
-rw-r--r-- | OpenSim/Framework/Util.cs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index c052745..7b90239 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -1389,6 +1389,30 @@ namespace OpenSim.Framework | |||
1389 | return null; | 1389 | return null; |
1390 | } | 1390 | } |
1391 | 1391 | ||
1392 | #endregion FireAndForget Threading Pattern | 1392 | #endregion FireAndForget Threading Pattern |
1393 | /// <summary> | ||
1394 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive | ||
1395 | /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap | ||
1396 | /// for the callers. | ||
1397 | /// This trims it to a 12 day interval so don't let your frame time get too long. | ||
1398 | /// </summary> | ||
1399 | /// <returns></returns> | ||
1400 | public static Int32 EnvironmentTickCount() | ||
1401 | { | ||
1402 | return Environment.TickCount & EnvironmentTickCountMask; | ||
1403 | } | ||
1404 | const Int32 EnvironmentTickCountMask = 0x3fffffff; | ||
1405 | |||
1406 | /// <summary> | ||
1407 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive | ||
1408 | /// and negative every 24.9 days. Subtracts the passed value (previously fetched by | ||
1409 | /// 'EnvironmentTickCount()') and accounts for any wrapping. | ||
1410 | /// </summary> | ||
1411 | /// <returns>subtraction of passed prevValue from current Environment.TickCount</returns> | ||
1412 | public static Int32 EnvironmentTickCountSubtract(Int32 prevValue) | ||
1413 | { | ||
1414 | Int32 diff = EnvironmentTickCount() - prevValue; | ||
1415 | return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); | ||
1416 | } | ||
1393 | } | 1417 | } |
1394 | } | 1418 | } |