From 44a79bf35c303db1c50dee090d3d7b4e40b9ce81 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Sun, 28 May 2006 22:12:24 +0000
Subject: [PATCH] Revert back to rev 1.33 for simplicity since SDL audio will
 be preferred going forward.

---
 src/xpdev/xpbeep.c | 89 ++++++++--------------------------------------
 1 file changed, 15 insertions(+), 74 deletions(-)

diff --git a/src/xpdev/xpbeep.c b/src/xpdev/xpbeep.c
index df7cf1f542..0a39519c21 100644
--- a/src/xpdev/xpbeep.c
+++ b/src/xpdev/xpbeep.c
@@ -62,12 +62,8 @@ static int handle_type=SOUND_DEVICE_CLOSED;
 
 #ifdef _WIN32
 static	HWAVEOUT		waveOut;
-static	WAVEHDR			*wh;
-static	WAVEHDR			wh_bufs[2];
-static	WAVEHDR			silence;
-static	unsigned char	silence_data=128;
-static	unsigned char	wave[2][S_RATE*15/2+1];
-static	int				curr_wh=0;
+static	WAVEHDR			wh;
+static	unsigned char	wave[S_RATE*15/2+1];
 #endif
 
 #ifdef USE_ALSA_SOUND
@@ -228,49 +224,10 @@ BOOL xptone_open(void)
 		sound_device_open_failed=TRUE;
 	if(sound_device_open_failed)
 		return(FALSE);
-	memset(&wh_bufs, 0, sizeof(wh_bufs));
-	memset(wave, 128, sizeof(wave));	/* Ensure that if silence DOES timeout, you still get silence */
-	wh_bufs[0].lpData=wave[0];
-	wh_bufs[0].dwBufferLength=S_RATE*15/2+1;
-	if(waveOutPrepareHeader(waveOut, &wh_bufs[0], sizeof(wh_bufs[0]))!=MMSYSERR_NOERROR) {
-		sound_device_open_failed=TRUE;
-		waveOutClose(waveOut);
-		return(FALSE);
-	}
-	wh_bufs[1].lpData=wave[1];
-	wh_bufs[1].dwBufferLength=S_RATE*15/2+1;
-	if(waveOutPrepareHeader(waveOut, &wh_bufs[1], sizeof(wh_bufs[1]))!=MMSYSERR_NOERROR) {
-		waveOutUnprepareHeader(waveOut, &wh_bufs[0], sizeof(wh_bufs[0]));
-		sound_device_open_failed=TRUE;
-		waveOutClose(waveOut);
-		return(FALSE);
-	}
-	memset(&silence, 0, sizeof(silence));
-	silence.lpData=&silence_data;
-	silence.dwBufferLength=1;
-	silence.dwFlags=WHDR_BEGINLOOP|WHDR_ENDLOOP;
-	silence.dwLoops=0xffffffffUL;	/* Good for 54 hours of silence @ 22010 */
-	if(waveOutPrepareHeader(waveOut, &silence, sizeof(silence))!=MMSYSERR_NOERROR) {
-		waveOutUnprepareHeader(waveOut, &wh_bufs[0], sizeof(wh_bufs[0]));
-		waveOutUnprepareHeader(waveOut, &wh_bufs[1], sizeof(wh_bufs[1]));
-		sound_device_open_failed=TRUE;
-		waveOutClose(waveOut);
-		return(FALSE);
-	}
-	if(waveOutWrite(waveOut, &silence, sizeof(silence))!=MMSYSERR_NOERROR) {
-		waveOutUnprepareHeader(waveOut, &wh_bufs[0], sizeof(wh_bufs[0]));
-		waveOutUnprepareHeader(waveOut, &wh_bufs[1], sizeof(wh_bufs[1]));
-		waveOutUnprepareHeader(waveOut, &silence, sizeof(wh));
-		sound_device_open_failed=TRUE;
-		waveOutClose(waveOut);
-		return(FALSE);
-	}
-	wh=&wh_bufs[0];
-	curr_wh=0;
-	if(waveOutWrite(waveOut, wh, sizeof(wh_bufs[0]))!=MMSYSERR_NOERROR) {
-		waveOutUnprepareHeader(waveOut, &wh_bufs[0], sizeof(wh_bufs[0]));
-		waveOutUnprepareHeader(waveOut, &wh_bufs[1], sizeof(wh_bufs[1]));
-		waveOutUnprepareHeader(waveOut, &silence, sizeof(wh));
+	memset(&wh, 0, sizeof(wh));
+	wh.lpData=wave;
+	wh.dwBufferLength=S_RATE*15/2+1;
+	if(waveOutPrepareHeader(waveOut, &wh, sizeof(wh))!=MMSYSERR_NOERROR) {
 		sound_device_open_failed=TRUE;
 		waveOutClose(waveOut);
 		return(FALSE);
@@ -363,14 +320,9 @@ BOOL xptone_close(void)
 {
 #ifdef _WIN32
 	if(handle_type==SOUND_DEVICE_WIN32) {
-		waveOutBreakLoop(waveOut);
-		while(waveOutUnprepareHeader(waveOut, &wh_bufs[0], sizeof(wh_bufs[0]))==WAVERR_STILLPLAYING)
-			SLEEP(1);
-		while(waveOutUnprepareHeader(waveOut, &wh_bufs[1], sizeof(wh_bufs[1]))==WAVERR_STILLPLAYING)
-			SLEEP(1);
-		while(waveOutUnprepareHeader(waveOut, &silence, sizeof(silence))==WAVERR_STILLPLAYING)
-			SLEEP(1);
 		waveOutClose(waveOut);
+		while(waveOutUnprepareHeader(waveOut, &wh, sizeof(wh))==WAVERR_STILLPLAYING)
+			SLEEP(1);
 	}
 #endif
 
@@ -400,33 +352,22 @@ BOOL xptone(double freq, DWORD duration, enum WAVE_SHAPE shape)
 {
 	BOOL			success=FALSE;
 	BOOL			must_close=FALSE;
-	WAVEHDR			*this_wh;
 
 	if(handle_type==SOUND_DEVICE_CLOSED) {
 		must_close=TRUE;
 		xptone_open();
 	}
 
-	this_wh=wh;
-	wh->dwBufferLength=S_RATE*duration/1000;
-	if(wh->dwBufferLength<=S_RATE/freq*2)
-		wh->dwBufferLength=S_RATE/freq*2;
-
-	makewave(freq,wave[curr_wh],wh->dwBufferLength,shape);
-
-	waveOutBreakLoop(waveOut);
-	success=TRUE;
+	wh.dwBufferLength=S_RATE*duration/1000;
+	if(wh.dwBufferLength<=S_RATE/freq*2)
+		wh.dwBufferLength=S_RATE/freq*2;
 
-	/* Put the silence back in */
-	waveOutWrite(waveOut, &silence, sizeof(silence));
+	makewave(freq,wave,wh.dwBufferLength,shape);
 
-	/* Prepare for next note */
-	curr_wh=1-curr_wh;
-	memset(wave[curr_wh], 128, sizeof(wave[0]));	/* Ensure that if silence DOES timeout, you still get silence */
-	wh=&wh_bufs[curr_wh];
-	waveOutWrite(waveOut, wh, sizeof(wh_bufs[0]));
+	if(waveOutWrite(waveOut, &wh, sizeof(wh))==MMSYSERR_NOERROR)
+		success=TRUE;
 
-	while(!(this_wh->dwFlags & WHDR_DONE))
+	while(!(wh.dwFlags & WHDR_DONE))
 		SLEEP(1);
 
 	if(must_close)
-- 
GitLab