Andrew Eikum <aeikum(a)codeweavers.com> writes:
@@ -198,21 +1771,25 @@ UINT WINAPI waveOutGetErrorTextA(UINT uError, LPSTR lpText, UINT uSize) */ UINT WINAPI waveOutGetErrorTextW(UINT uError, LPWSTR lpText, UINT uSize) { - UINT ret = MMSYSERR_BADERRNUM; - - if (lpText == NULL) ret = MMSYSERR_INVALPARAM; - else if (uSize == 0) ret = MMSYSERR_NOERROR; - else if ( - /* test has been removed because MMSYSERR_BASE is 0, and gcc did emit - * a warning for the test was always true */ - (/*uError >= MMSYSERR_BASE && */ uError <= MMSYSERR_LASTERROR) || - (uError >= WAVERR_BASE && uError <= WAVERR_LASTERROR)) { - if (LoadStringW(hWinMM32Instance, - uError, lpText, uSize) > 0) { - ret = MMSYSERR_NOERROR; - } - } - return ret; + TRACE("(%u, %p, %u)\n", uError, lpText, uSize); + + if(!WINMM_StartDevicesThread()) + return MMSYSERR_ERROR; + + if(!lpText) + return MMSYSERR_INVALPARAM; + + if(uSize == 0) + return MMSYSERR_NOERROR; + + if(uError > MMSYSERR_LASTERROR || uError < WAVERR_BASE || + uError > WAVERR_LASTERROR) + return MMSYSERR_BADERRNUM;
This doesn't do what you want (and that sort of change could easily be a separate patch). -- Alexandre Julliard julliard(a)winehq.org