[PATCH v4 0/1] MR4820: dlls/winmm: waveOutGetID: Return correct id for WAVE_MAPPER.
Fixes bug 52592. https://bugs.winehq.org/show_bug.cgi?id=52592 -- v4: dlls/winmm: waveOutGetID: Return correct id for WAVE_MAPPER. https://gitlab.winehq.org/wine/wine/-/merge_requests/4820
From: Carlo Bramini <carlo_bramini(a)users.sourceforge.net> Fixes bug 52592. https://bugs.winehq.org/show_bug.cgi?id=52592 Added tests for checking waveOutGetID() --- dlls/winmm/tests/wave.c | 30 ++++++++++++++++++++++++++++++ dlls/winmm/waveform.c | 3 +++ 2 files changed, 33 insertions(+) diff --git a/dlls/winmm/tests/wave.c b/dlls/winmm/tests/wave.c index 673c2c010ac..cb68ee315da 100644 --- a/dlls/winmm/tests/wave.c +++ b/dlls/winmm/tests/wave.c @@ -1409,6 +1409,36 @@ static void wave_out_test_device(UINT_PTR device) trace("waveOutOpen(%s): 32 bit float samples not supported\n", dev_name(device)); + /* Test if waveOutGetID() returns expected device */ + + format.wFormatTag=WAVE_FORMAT_PCM; + format.nChannels=1; + format.wBitsPerSample=8; + format.nSamplesPerSec=22050; + format.nBlockAlign=format.nChannels*format.wBitsPerSample/8; + format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign; + format.cbSize=0; + + rc = waveOutOpen(&wout, device, &format, 0, 0, 0); + ok(rc==MMSYSERR_NOERROR || rc==WAVERR_BADFORMAT || + rc==MMSYSERR_INVALFLAG || rc==MMSYSERR_INVALPARAM, + "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc)); + if (rc==MMSYSERR_NOERROR) { + rc = waveOutGetID(wout, &f); + ok(rc==MMSYSERR_NOERROR || + rc==MMSYSERR_INVALHANDLE || rc==MMSYSERR_INVALPARAM, + "waveOutGetID(%s): returned %s\n",dev_name(device),wave_out_error(rc)); + if (rc==MMSYSERR_NOERROR) { + ok(f==(UINT)device, + "waveOutGetID(%s): wrong id device, got %d expected %d\n", + dev_name(device),f,(int)device); + } else + trace("waveOutGetID(%s): cannot get device id\n", + dev_name(device)); + } else + trace("waveOutOpen(%s): cannot test waveOutGetID()\n", + dev_name(device)); + /* Test invalid parameters */ format.wFormatTag = WAVE_FORMAT_PCM; diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c index 8c0cc4d879c..f033e0a5fed 100644 --- a/dlls/winmm/waveform.c +++ b/dlls/winmm/waveform.c @@ -3159,6 +3159,9 @@ UINT WINAPI waveOutGetID(HWAVEOUT hWaveOut, UINT* lpuDeviceID) WINMM_DecomposeHWAVE((HWAVE)hWaveOut, lpuDeviceID, &is_out, &dev, &junk); + if (*lpuDeviceID == MAPPER_INDEX) + *lpuDeviceID = WAVE_MAPPER; + return MMSYSERR_NOERROR; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4820
This merge request was approved by Huw Davies. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4820
participants (3)
-
Carlo Bramini -
Carlo Bramini (@carlo-bramini) -
Huw Davies (@huw)