From 98b0bde840e5c0eabbc1f37a5b2f1886fe0685dd Mon Sep 17 00:00:00 2001
From: nehalmistry <>
Date: Sat, 7 Dec 2002 19:53:32 +0000
Subject: [PATCH] more speedups for CDDA

---
 src/sound/cdda.cpp         | 20 +++++++++++++-------
 src/sound/sound_server.cpp |  2 +-
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/sound/cdda.cpp b/src/sound/cdda.cpp
index 69df026b3..02119f62c 100644
--- a/src/sound/cdda.cpp
+++ b/src/sound/cdda.cpp
@@ -51,17 +51,23 @@ local int CDRead(Sample *sample, void *buf, int len)
 
     ++count;
 
-    if (count == 8) {
+    data.addr.lba = CDtocentry[CDTrack].cdte_addr.lba + pos / 2352;
+    data.addr_format = CDROM_LBA;
+    data.nframes = 14;
+
+    if (count == 4) {
+	data.buf = bufstart;
+	ioctl(CDDrive, CDROMREADAUDIO, &data);
+    } else if (count == 8) {
 	count = 0;
 	sample->User = bufstart;
-	data.addr.lba = CDtocentry[CDTrack].cdte_addr.lba + pos / 2352;
-	data.addr_format = CDROM_LBA;
-	data.nframes = len * 8 / 2352;
-	data.buf = sample->User;
+	data.buf = sample->User + 2352 * 14;
 	ioctl(CDDrive, CDROMREADAUDIO, &data);
-    } else {
+    } 
+    
+    if (count)
 	sample->User += len;
-    }
+
     pos += len;
 
     memcpy(buf, sample->User, len);
diff --git a/src/sound/sound_server.cpp b/src/sound/sound_server.cpp
index 7b59b0b83..ebc19e96f 100644
--- a/src/sound/sound_server.cpp
+++ b/src/sound/sound_server.cpp
@@ -1273,7 +1273,7 @@ global void QuitCD(void)
 	CDMode = ":off";
     }
 #elif defined(USE_CDDA)
-
+    close(CDDrive);
 #endif
 }