From 269a66e267beb2d0ba726342c7b6377a36da8da3 Mon Sep 17 00:00:00 2001 From: Alexander Eckart Date: Fri, 16 Mar 2012 18:14:56 +0100 Subject: [PATCH] check ticks (some computers have problems with HPET) --- Vocaluxe/Base/CSound.cs | 6 +++--- Vocaluxe/Base/CUtility.cs | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs index 2a2f9d0f..ff4a30ff 100644 --- a/Vocaluxe/Base/CSound.cs +++ b/Vocaluxe/Base/CSound.cs @@ -501,7 +501,7 @@ namespace Vocaluxe.Base long ticks = _Timer.ElapsedTicks; float dt = _Timer.ElapsedMilliseconds / 1000f; - if (Stopwatch.IsHighResolution) + if (Stopwatch.IsHighResolution && ticks != 0) dt = (float)(ticks * nanosecPerTick / 1000000000.0); return _SetValue + dt; @@ -581,7 +581,7 @@ namespace Vocaluxe.Base long ticks = _STimer.ElapsedTicks; float dt = _STimer.ElapsedMilliseconds / 1000f; - if (Stopwatch.IsHighResolution) + if (Stopwatch.IsHighResolution && ticks != 0) dt = (float)(ticks * nanosecPerTick / 1000000000.0); return _CurrentTime + dt; @@ -617,7 +617,7 @@ namespace Vocaluxe.Base long ticks = _STimer.ElapsedTicks; float dt = _STimer.ElapsedMilliseconds / 1000f; - if (Stopwatch.IsHighResolution) + if (Stopwatch.IsHighResolution && ticks != 0) dt = (float)(ticks * nanosecPerTick / 1000000000.0); float Ts = 0f; diff --git a/Vocaluxe/Base/CUtility.cs b/Vocaluxe/Base/CUtility.cs index fe8bcea8..ef4e94dd 100644 --- a/Vocaluxe/Base/CUtility.cs +++ b/Vocaluxe/Base/CUtility.cs @@ -147,8 +147,9 @@ namespace Vocaluxe.Base { if (_Stopwatch.IsRunning) { - if (Stopwatch.IsHighResolution) - return (float)(((double)nanosecPerTick * (double)_Stopwatch.ElapsedTicks) / (1000.0 * 1000.0)); + long ticks = _Stopwatch.ElapsedTicks; + if (Stopwatch.IsHighResolution && ticks != 0) + return (float)(((double)nanosecPerTick * (double)ticks) / (1000.0 * 1000.0)); else return (float)_Stopwatch.ElapsedMilliseconds; }