From 94d6bc927f9aa8b773e0fdcccc08234f7848e64b Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Sun, 5 Dec 1999 23:08:42 +0000 Subject: [PATCH] Correctly implement ACM_STREAMOPENF_QUERY flag in acmOpenStream. --- dlls/msacm32/stream.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/dlls/msacm32/stream.c b/dlls/msacm32/stream.c index c8f3436a6c9..4918f873264 100644 --- a/dlls/msacm32/stream.c +++ b/dlls/msacm32/stream.c @@ -185,9 +185,12 @@ MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pw was->hAcmDriver = had; ret = SendDriverMessage(wad->hDrvr, ACMDM_STREAM_OPEN, (DWORD)&was->drvInst, 0L); - /* FIXME: when shall the acmDriver be Close():d ? */ - if (ret == MMSYSERR_NOERROR) + if (ret == MMSYSERR_NOERROR) { + if (fdwOpen & ACM_STREAMOPENF_QUERY) { + acmDriverClose(had, 0L); + } break; + } } /* no match, close this acm driver and try next one */ acmDriverClose(had, 0L); @@ -198,13 +201,16 @@ MMRESULT WINAPI acmStreamOpen(PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pw goto errCleanUp; } } - if (phas) - *phas = (HACMSTREAM)was; - TRACE("=> (%d)\n", ret); ret = MMSYSERR_NOERROR; - if (!(fdwOpen & ACM_STREAMOPENF_QUERY)) + if (!(fdwOpen & ACM_STREAMOPENF_QUERY)) { + if (phas) + *phas = (HACMSTREAM)was; + TRACE("=> (%d)\n", ret); return ret; + } errCleanUp: + if (phas) + *phas = (HACMSTREAM)0; HeapFree(MSACM_hHeap, 0, was); TRACE("=> (%d)\n", ret); return ret;