From c06089d0c5a5b26b13a375f4f504fa027f219fa1 Mon Sep 17 00:00:00 2001 From: Eric Pouech <Eric.Pouech@wanadoo.fr> Date: Sun, 5 Dec 1999 23:09:13 +0000 Subject: [PATCH] Added support for WAVE_FORMAT_QUERY flag in wodOpen. --- dlls/winmm/wavemap/wavemap.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dlls/winmm/wavemap/wavemap.c b/dlls/winmm/wavemap/wavemap.c index 2f063339d3a..0172752e0ae 100644 --- a/dlls/winmm/wavemap/wavemap.c +++ b/dlls/winmm/wavemap/wavemap.c @@ -84,11 +84,12 @@ static DWORD wodOpenHelper(WAVEMAPDATA* wom, UINT idx, /* destination is always PCM, so the formulas below apply */ lpwfx->nBlockAlign = (lpwfx->nChannels * lpwfx->wBitsPerSample) / 8; lpwfx->nAvgBytesPerSec = lpwfx->nSamplesPerSec * lpwfx->nBlockAlign; - ret = wom->acmStreamOpen(&wom->hAcmStream, 0, lpDesc->lpFormat, lpwfx, NULL, 0L, 0L, 0L); + ret = wom->acmStreamOpen(&wom->hAcmStream, 0, lpDesc->lpFormat, lpwfx, NULL, 0L, 0L, + (dwFlags & WAVE_FORMAT_QUERY) ? ACM_STREAMOPENF_QUERY : 0L); if (ret != MMSYSERR_NOERROR) return ret; return waveOutOpen(&wom->hWave, idx, lpwfx, (DWORD)WAVEMAP_DstCallback, - (DWORD)wom, (dwFlags & CALLBACK_TYPEMASK) | CALLBACK_FUNCTION); + (DWORD)wom, (dwFlags & ~CALLBACK_TYPEMASK) | CALLBACK_FUNCTION); } static DWORD wodOpen(LPDWORD lpdwUser, LPWAVEOPENDESC lpDesc, DWORD dwFlags) @@ -157,8 +158,14 @@ static DWORD wodOpen(LPDWORD lpdwUser, LPWAVEOPENDESC lpDesc, DWORD dwFlags) HeapFree(GetProcessHeap(), 0, wom); return MMSYSERR_ALLOCATED; found: - lpDesc->hWave = wom->hWave; - *lpdwUser = (DWORD)wom; + if (dwFlags & WAVE_FORMAT_QUERY) { + lpDesc->hWave = 0; + *lpdwUser = 0L; + HeapFree(GetProcessHeap(), 0, wom); + } else { + lpDesc->hWave = wom->hWave; + *lpdwUser = (DWORD)wom; + } return MMSYSERR_NOERROR; } -- GitLab