diff --git a/src/xpdev/xpbeep.c b/src/xpdev/xpbeep.c index 369dae5f432bb6fc171861f577c8bd339a268e27..bd535458f2cf8cfac83e02b8542508e2a59e1116 100644 --- a/src/xpdev/xpbeep.c +++ b/src/xpdev/xpbeep.c @@ -60,7 +60,7 @@ void makesine(double freq, unsigned char *wave, int samples) wave[i]=127; } /* Fade out */ - for(k=2;k<=10;k++) { + for(k=10;k>1;k--) { for(;i>0;i--) { if(!endhigh && wave[i]<=127) break; @@ -96,7 +96,7 @@ void makesine(double freq, unsigned char *wave, int samples) wave[i]=127; } /* Fade in */ - for(k=2;k<=10;k++) { + for(k=10;k>1;k--) { for(;i<samples;i--) { if(!starthigh && wave[i]<=127) break; @@ -152,7 +152,8 @@ void SineBeep(double freq, DWORD duration) goto abrt; if(waveOutWrite(waveOut, &wh, sizeof(wh))!=MMSYSERR_NOERROR) goto abrt; - SLEEP(duration); + while(!(wh.dwFlags&WHDR_DONE)) + SLEEP(1); abrt: waveOutUnprepareHeader(waveOut, &wh, sizeof(wh)); waveOutReset(waveOut);