|
|
| version 1.1, 2003/11/21 06:51:13 | version 1.2, 2003/11/23 09:59:10 |
|---|---|
| Line 14 typedef struct { | Line 14 typedef struct { |
| void (*usercb)(void *userdata, BYTE *stream, int len); | void (*usercb)(void *userdata, BYTE *stream, int len); |
| void *userdata; | void *userdata; |
| WAVEHDR *wh; | WAVEHDR *wh; |
| int pause_on; | |
| } WCTRL; | } WCTRL; |
| static WCTRL w_ctrl; | static WCTRL w_ctrl; |
| Line 35 void __sdl_audio_cb(UINT msg, HWAVEOUT h | Line 36 void __sdl_audio_cb(UINT msg, HWAVEOUT h |
| if ((msg == MM_WOM_DONE) && (whd)) { | if ((msg == MM_WOM_DONE) && (whd)) { |
| waveOutUnprepareHeader(hwo, whd, sizeof(WAVEHDR)); | waveOutUnprepareHeader(hwo, whd, sizeof(WAVEHDR)); |
| if (whd->lpData) { | if (whd->lpData) { |
| w_ctrl.usercb(w_ctrl.userdata, | if (!w_ctrl.pause_on) { |
| w_ctrl.usercb(w_ctrl.userdata, | |
| (BYTE *)whd->lpData, w_ctrl.bufsize); | (BYTE *)whd->lpData, w_ctrl.bufsize); |
| } | |
| else { | |
| ZeroMemory((BYTE *)whd->lpData, w_ctrl.bufsize); | |
| } | |
| waveOutPrepareHeader(hwo, whd, sizeof(WAVEHDR)); | waveOutPrepareHeader(hwo, whd, sizeof(WAVEHDR)); |
| waveOutWrite(hwo, whd, sizeof(WAVEHDR)); | waveOutWrite(hwo, whd, sizeof(WAVEHDR)); |
| } | } |
| Line 49 static void CALLBACK hwavecb(HWAVEOUT hw | Line 55 static void CALLBACK hwavecb(HWAVEOUT hw |
| if ((uMsg == WOM_DONE) && (dwParam1)) { | if ((uMsg == WOM_DONE) && (dwParam1)) { |
| waveOutUnprepareHeader(hwo, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); | waveOutUnprepareHeader(hwo, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); |
| if (((WAVEHDR *)dwParam1)->lpData) { | if (((WAVEHDR *)dwParam1)->lpData) { |
| w_ctrl.usercb(w_ctrl.userdata, | if (!w_ctrl.pause_on) { |
| w_ctrl.usercb(w_ctrl.userdata, | |
| (BYTE *)whd->lpData, w_ctrl.bufsize); | (BYTE *)whd->lpData, w_ctrl.bufsize); |
| } | |
| else { | |
| ZeroMemory((BYTE *)whd->lpData, w_ctrl.bufsize); | |
| } | |
| waveOutPrepareHeader(hwo, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); | waveOutPrepareHeader(hwo, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); |
| waveOutWrite(hwo, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); | waveOutWrite(hwo, (WAVEHDR *)dwParam1, sizeof(WAVEHDR)); |
| } | } |
| Line 194 int SDL_OpenAudio(SDL_AudioSpec *desired | Line 205 int SDL_OpenAudio(SDL_AudioSpec *desired |
| goto soa_err2; | goto soa_err2; |
| } | } |
| w_ctrl.opened = TRUE; | w_ctrl.opened = TRUE; |
| w_ctrl.pause_on = 0; | |
| w_ctrl.hwave = hwave; | w_ctrl.hwave = hwave; |
| for (i=0; i<slice; i++) { | for (i=0; i<slice; i++) { |
| waveOutPrepareHeader(hwave, wh + i, sizeof(WAVEHDR)); | waveOutPrepareHeader(hwave, wh + i, sizeof(WAVEHDR)); |
| Line 237 void SDL_CloseAudio(void) { | Line 249 void SDL_CloseAudio(void) { |
| } | } |
| void SDL_PauseAudio(int pause_on) { | void SDL_PauseAudio(int pause_on) { |
| w_ctrl.pause_on = pause_on; | |
| } | } |
| void SDL_MixAudio(BYTE *dst, const BYTE *src, DWORD len, int volume) { | void SDL_MixAudio(BYTE *dst, const BYTE *src, DWORD len, int volume) { |