--- np2/wince/soundmng.cpp 2003/11/21 06:51:15 1.3 +++ np2/wince/soundmng.cpp 2005/02/11 21:17:23 1.8 @@ -16,7 +16,7 @@ typedef struct { HWAVEOUT hwave; - BYTE *buffer; + UINT8 *buffer; DWORD samples; DWORD bufalign; WAVEHDR wh[2]; @@ -111,6 +111,9 @@ UINT soundmng_create(UINT rate, UINT ms) if (waveopened) { return(0); } + + mute = 1 << SNDPROC_NP2; + switch(rate) { case 11025: type = 0; @@ -145,7 +148,7 @@ UINT soundmng_create(UINT rate, UINT ms) } w_ctrl.samples = (ms * rate) / 1000; w_ctrl.bufalign = w_ctrl.samples * 2 * 2; - w_ctrl.buffer = (BYTE *)_MALLOC(w_ctrl.bufalign * 2, "wave mng"); + w_ctrl.buffer = (UINT8 *)_MALLOC(w_ctrl.bufalign * 2, "wave mng"); if (w_ctrl.buffer == NULL) { return(0); } @@ -182,35 +185,51 @@ UINT soundmng_create(UINT rate, UINT ms) currate = rate; curms = ms; waveopened = TRUE; + TRACEOUT(("soundmng success.")); return(w_ctrl.samples); } _MFREE(w_ctrl.buffer); + TRACEOUT(("soundmng failure.")); } return(0); } void soundmng_destroy(void) { - int i; - int retry = 10; +#if defined(_WIN32_WCE) + OSVERSIONINFO osvi; +#endif + BOOL hpc4; + int i; + int retry = 10; if (waveopened) { -#if (defined(WIN32_PLATFORM_PSPC)) || (!defined(ARM)) - for (i=0; i<2; i++) { - waveOutUnprepareHeader(w_ctrl.hwave, w_ctrl.wh + i, +#if defined(_WIN32_WCE) + ZeroMemory(&osvi, sizeof(osvi)); + osvi.dwOSVersionInfoSize = sizeof(osvi); + GetVersionEx(&osvi); + hpc4 = (osvi.dwMajorVersion >= 4); +#else + hpc4 = FALSE; +#endif + if (!hpc4) { + for (i=0; i<2; i++) { + waveOutUnprepareHeader(w_ctrl.hwave, w_ctrl.wh + i, sizeof(WAVEHDR)); - w_ctrl.wh[i].lpData = NULL; + w_ctrl.wh[i].lpData = NULL; + } + waveOutPause(w_ctrl.hwave); + waveOutReset(w_ctrl.hwave); } - waveOutPause(w_ctrl.hwave); - waveOutReset(w_ctrl.hwave); -#else - waveOutReset(w_ctrl.hwave); - for (i=0; i<2; i++) { - waveOutUnprepareHeader(w_ctrl.hwave, w_ctrl.wh + i, + else { + // 誰かシグマリ3でのマトモな開放方法教えてくだちい… + // waveOutReset(w_ctrl.hwave); + for (i=0; i<2; i++) { + waveOutUnprepareHeader(w_ctrl.hwave, w_ctrl.wh + i, sizeof(WAVEHDR)); - w_ctrl.wh[i].lpData = NULL; + w_ctrl.wh[i].lpData = NULL; + } } -#endif do { if (waveOutClose(w_ctrl.hwave) == MMSYSERR_NOERROR) { _HANDLE_REM(w_ctrl.hwave);