=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: winealsa: Map ALSA errors to AUDCLNT_E_*.
Alexandre Julliard
julliard at winehq.org
Thu Jan 26 14:49:25 CST 2012
Module: wine
Branch: master
Commit: ef111ce1389c542a5f0b7eaa456aeecbc17dba8b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ef111ce1389c542a5f0b7eaa456aeecbc17dba8b
Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date: Mon Jan 9 19:04:42 2012 +0100
winealsa: Map ALSA errors to AUDCLNT_E_*.
---
dlls/winealsa.drv/mmdevdrv.c | 29 +++++++++++++++++------------
1 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index af94add..5da8ec9 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -579,7 +579,12 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(const char *key, IMMDevice *dev,
if(err < 0){
HeapFree(GetProcessHeap(), 0, This);
WARN("Unable to open PCM \"%s\": %d (%s)\n", key, err, snd_strerror(err));
- return E_FAIL;
+ switch(err){
+ case EBUSY:
+ return AUDCLNT_E_DEVICE_IN_USE;
+ default:
+ return AUDCLNT_E_ENDPOINT_CREATE_FAILED;
+ }
}
This->hw_params = HeapAlloc(GetProcessHeap(), 0,
@@ -1241,7 +1246,7 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
EnterCriticalSection(&This->lock);
if((err = snd_pcm_hw_params_any(This->pcm_handle, This->hw_params)) < 0){
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
goto exit;
}
@@ -1267,13 +1272,13 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
}
if((err = snd_pcm_hw_params_get_rate_min(This->hw_params, &min, NULL)) < 0){
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
WARN("Unable to get min rate: %d (%s)\n", err, snd_strerror(err));
goto exit;
}
if((err = snd_pcm_hw_params_get_rate_max(This->hw_params, &max, NULL)) < 0){
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
WARN("Unable to get max rate: %d (%s)\n", err, snd_strerror(err));
goto exit;
}
@@ -1284,13 +1289,13 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
}
if((err = snd_pcm_hw_params_get_channels_min(This->hw_params, &min)) < 0){
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
WARN("Unable to get min channels: %d (%s)\n", err, snd_strerror(err));
goto exit;
}
if((err = snd_pcm_hw_params_get_channels_max(This->hw_params, &max)) < 0){
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
WARN("Unable to get max channels: %d (%s)\n", err, snd_strerror(err));
goto exit;
}
@@ -1365,7 +1370,7 @@ static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient *iface,
if((err = snd_pcm_hw_params_any(This->pcm_handle, This->hw_params)) < 0){
WARN("Unable to get hw_params: %d (%s)\n", err, snd_strerror(err));
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
goto exit;
}
@@ -1389,14 +1394,14 @@ static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient *iface,
fmt->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
}else{
ERR("Didn't recognize any available ALSA formats\n");
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
goto exit;
}
if((err = snd_pcm_hw_params_get_channels_max(This->hw_params,
&max_channels)) < 0){
WARN("Unable to get max channels: %d (%s)\n", err, snd_strerror(err));
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
goto exit;
}
@@ -1410,7 +1415,7 @@ static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient *iface,
if((err = snd_pcm_hw_params_get_rate_max(This->hw_params, &max_rate,
NULL)) < 0){
WARN("Unable to get max rate: %d (%s)\n", err, snd_strerror(err));
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
goto exit;
}
@@ -1426,7 +1431,7 @@ static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient *iface,
fmt->Format.nSamplesPerSec = 8000;
else{
ERR("Unknown max rate: %u\n", max_rate);
- hr = E_FAIL;
+ hr = AUDCLNT_E_DEVICE_INVALIDATED;
goto exit;
}
@@ -1681,7 +1686,7 @@ static HRESULT WINAPI AudioClient_Start(IAudioClient *iface)
This, 0, This->mmdev_period_rt / 10000, WT_EXECUTEINTIMERTHREAD)){
LeaveCriticalSection(&This->lock);
WARN("Unable to create timer: %u\n", GetLastError());
- return E_FAIL;
+ return E_OUTOFMEMORY;
}
This->started = TRUE;
More information about the wine-cvs
mailing list