From 15b9fc9099da9ce9d7a2848fa09bbb4711aeca87 Mon Sep 17 00:00:00 2001
From: Chris Robinson <chris.kcat@gmail.com>
Date: Wed, 24 Mar 2010 22:20:55 -0700
Subject: Improve timing for the wave file writer

---
 Alc/wave.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

(limited to 'Alc')

diff --git a/Alc/wave.c b/Alc/wave.c
index 37358098..4ed120bb 100644
--- a/Alc/wave.c
+++ b/Alc/wave.c
@@ -80,12 +80,12 @@ static ALuint WaveProc(ALvoid *ptr)
     frameSize = aluBytesFromFormat(pDevice->Format) *
                 aluChannelsFromFormat(pDevice->Format);
 
-    last = timeGetTime();
+    last = timeGetTime()<<8;
     while(!data->killNow && pDevice->Connected)
     {
-        now = timeGetTime();
+        now = timeGetTime()<<8;
 
-        avail = (now-last) * pDevice->Frequency / 1000;
+        avail = (ALuint64)(now-last) * pDevice->Frequency / (1000<<8);
         if(avail < pDevice->UpdateSize)
         {
             Sleep(1);
@@ -128,8 +128,8 @@ static ALuint WaveProc(ALvoid *ptr)
             }
 
             avail -= pDevice->UpdateSize;
+            last += (ALuint64)pDevice->UpdateSize * (1000<<8) / pDevice->Frequency;
         }
-        last = now;
     }
 
     return 0;
-- 
cgit v1.2.3