Commit 00684f84 authored by Jörg Höhle's avatar Jörg Höhle Committed by Alexandre Julliard

mmdevapi: IsFormatSupported EXCLUSIVE mode never returns S_FALSE.

parent 41c6ffea
......@@ -1204,8 +1204,11 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
dump_fmt(fmt);
if(out)
if(out){
*out = NULL;
if(mode != AUDCLNT_SHAREMODE_SHARED)
out = NULL;
}
EnterCriticalSection(&This->lock);
......@@ -1339,6 +1342,9 @@ exit:
LeaveCriticalSection(&This->lock);
HeapFree(GetProcessHeap(), 0, formats);
if(hr == S_FALSE && !out)
hr = AUDCLNT_E_UNSUPPORTED_FORMAT;
if(hr == S_FALSE && out) {
closest->nBlockAlign =
closest->nChannels * closest->wBitsPerSample / 8;
......
......@@ -1145,6 +1145,9 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
dump_fmt(pwfx);
if(outpwfx)
*outpwfx = NULL;
if(pwfx->wFormatTag == WAVE_FORMAT_EXTENSIBLE &&
fmtex->dwChannelMask != 0 &&
fmtex->dwChannelMask != get_channel_mask(pwfx->nChannels))
......@@ -1156,17 +1159,12 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
if(SUCCEEDED(hr)){
AudioQueueDispose(aqueue, 1);
OSSpinLockUnlock(&This->lock);
if(outpwfx)
*outpwfx = NULL;
TRACE("returning %08x\n", S_OK);
return S_OK;
}
OSSpinLockUnlock(&This->lock);
if(outpwfx)
*outpwfx = NULL;
TRACE("returning %08x\n", AUDCLNT_E_UNSUPPORTED_FORMAT);
return AUDCLNT_E_UNSUPPORTED_FORMAT;
}
......
......@@ -714,9 +714,6 @@ static HRESULT setup_oss_device(int fd, const WAVEFORMATEX *fmt,
WAVEFORMATEXTENSIBLE *fmtex = (void*)fmt;
WAVEFORMATEX *closest = NULL;
if(out)
*out = NULL;
tmp = oss_format = get_oss_format(fmt);
if(oss_format < 0)
return AUDCLNT_E_UNSUPPORTED_FORMAT;
......@@ -767,6 +764,9 @@ static HRESULT setup_oss_device(int fd, const WAVEFORMATEX *fmt,
ret = S_FALSE;
}
if(ret == S_FALSE && !out)
ret = AUDCLNT_E_UNSUPPORTED_FORMAT;
if(ret == S_FALSE && out){
closest->nBlockAlign =
closest->nChannels * closest->wBitsPerSample / 8;
......@@ -901,10 +901,6 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient *iface,
}
hr = setup_oss_device(This->fd, fmt, NULL, FALSE);
if(hr == S_FALSE){
LeaveCriticalSection(&This->lock);
return AUDCLNT_E_UNSUPPORTED_FORMAT;
}
if(FAILED(hr)){
LeaveCriticalSection(&This->lock);
return hr;
......@@ -1137,6 +1133,12 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
dump_fmt(pwfx);
if(outpwfx){
*outpwfx = NULL;
if(mode != AUDCLNT_SHAREMODE_SHARED)
outpwfx = NULL;
}
if(This->dataflow == eRender)
fd = open(This->devnode, O_WRONLY, 0);
else if(This->dataflow == eCapture)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment