[PATCH 2/7] winecoreaudio: Move creation of the audio unit to IAudioClient_Initialize().
Andrew Eikum
aeikum at codeweavers.com
Mon Nov 22 14:54:34 CST 2021
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Thu, Nov 18, 2021 at 07:52:33AM +0000, Huw Davies wrote:
> Signed-off-by: Huw Davies <huw at codeweavers.com>
> ---
> dlls/winecoreaudio.drv/mmdevdrv.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c
> index 642610b4b60..56f533f8bc1 100644
> --- a/dlls/winecoreaudio.drv/mmdevdrv.c
> +++ b/dlls/winecoreaudio.drv/mmdevdrv.c
> @@ -580,12 +580,6 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, IAudioClient
>
> This->adevid = adevid;
>
> - if(!(This->stream->unit = get_audiounit(This->dataflow, This->adevid))){
> - HeapFree(GetProcessHeap(), 0, This->stream);
> - HeapFree(GetProcessHeap(), 0, This);
> - return AUDCLNT_E_DEVICE_INVALIDATED;
> - }
> -
> *out = (IAudioClient *)&This->IAudioClient3_iface;
> IAudioClient3_AddRef(&This->IAudioClient3_iface);
>
> @@ -1262,6 +1256,14 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface,
> if(mode == AUDCLNT_SHAREMODE_EXCLUSIVE)
> This->stream->bufsize_frames -= This->stream->bufsize_frames % This->stream->period_frames;
>
> + if(!(This->stream->unit = get_audiounit(This->dataflow, This->adevid))){
> + CoTaskMemFree(This->stream->fmt);
> + This->stream->fmt = NULL;
> + OSSpinLockUnlock(&This->stream->lock);
> + LeaveCriticalSection(&g_sessions_lock);
> + return AUDCLNT_E_DEVICE_INVALIDATED;
> + }
> +
> hr = ca_setup_audiounit(This->dataflow, This->stream->unit, This->stream->fmt, &This->stream->dev_desc, &This->stream->converter);
> if(FAILED(hr)){
> CoTaskMemFree(This->stream->fmt);
> --
> 2.23.0
>
>
More information about the wine-devel
mailing list