--- np2/wince/soundmng.cpp 2003/11/21 06:51:15 1.3 +++ np2/wince/soundmng.cpp 2003/11/28 08:01:34 1.5 @@ -182,35 +182,51 @@ UINT soundmng_create(UINT rate, UINT ms) currate = rate; curms = ms; waveopened = TRUE; + TRACEOUT(("soundmng success.")); + mute = 0; 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 { + 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);