[PATCH 1/8] wineoss: Explicitly store the channel count in the client.

Andrew Eikum aeikum at codeweavers.com
Mon Apr 11 08:59:19 CDT 2022


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>

On Wed, Apr 06, 2022 at 07:55:51AM +0100, Huw Davies wrote:
> Signed-off-by: Huw Davies <huw at codeweavers.com>
> ---
>  dlls/wineoss.drv/mmdevdrv.c | 18 ++++++++++--------
>  1 file changed, 10 insertions(+), 8 deletions(-)
> 
> diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
> index fd35a439c5a..5b6addef0f7 100644
> --- a/dlls/wineoss.drv/mmdevdrv.c
> +++ b/dlls/wineoss.drv/mmdevdrv.c
> @@ -117,6 +117,7 @@ struct ACImpl {
>      AUDCLNT_SHAREMODE share;
>      HANDLE event;
>      float *vols;
> +    UINT32 channel_count;
>  
>      int fd;
>      oss_audioinfo ai;
> @@ -970,7 +971,8 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface,
>          return E_OUTOFMEMORY;
>      }
>  
> -    This->vols = HeapAlloc(GetProcessHeap(), 0, fmt->nChannels * sizeof(float));
> +    This->channel_count = fmt->nChannels;
> +    This->vols = HeapAlloc(GetProcessHeap(), 0, This->channel_count * sizeof(float));
>      if(!This->vols){
>          CoTaskMemFree(This->fmt);
>          This->fmt = NULL;
> @@ -979,14 +981,14 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface,
>          return E_OUTOFMEMORY;
>      }
>  
> -    for(i = 0; i < fmt->nChannels; ++i)
> +    for(i = 0; i < This->channel_count; ++i)
>          This->vols[i] = 1.f;
>  
>      This->share = mode;
>      This->flags = flags;
>      This->oss_bufsize_bytes = 0;
>  
> -    hr = get_audio_session(sessionguid, This->parent, fmt->nChannels,
> +    hr = get_audio_session(sessionguid, This->parent, This->channel_count,
>              &This->session);
>      if(FAILED(hr)){
>          HeapFree(GetProcessHeap(), 0, This->vols);
> @@ -2674,7 +2676,7 @@ static HRESULT WINAPI AudioStreamVolume_GetChannelCount(
>      if(!out)
>          return E_POINTER;
>  
> -    *out = This->fmt->nChannels;
> +    *out = This->channel_count;
>  
>      return S_OK;
>  }
> @@ -2689,7 +2691,7 @@ static HRESULT WINAPI AudioStreamVolume_SetChannelVolume(
>      if(level < 0.f || level > 1.f)
>          return E_INVALIDARG;
>  
> -    if(index >= This->fmt->nChannels)
> +    if(index >= This->channel_count)
>          return E_INVALIDARG;
>  
>      EnterCriticalSection(&This->lock);
> @@ -2713,7 +2715,7 @@ static HRESULT WINAPI AudioStreamVolume_GetChannelVolume(
>      if(!level)
>          return E_POINTER;
>  
> -    if(index >= This->fmt->nChannels)
> +    if(index >= This->channel_count)
>          return E_INVALIDARG;
>  
>      *level = This->vols[index];
> @@ -2732,7 +2734,7 @@ static HRESULT WINAPI AudioStreamVolume_SetAllVolumes(
>      if(!levels)
>          return E_POINTER;
>  
> -    if(count != This->fmt->nChannels)
> +    if(count != This->channel_count)
>          return E_INVALIDARG;
>  
>      EnterCriticalSection(&This->lock);
> @@ -2758,7 +2760,7 @@ static HRESULT WINAPI AudioStreamVolume_GetAllVolumes(
>      if(!levels)
>          return E_POINTER;
>  
> -    if(count != This->fmt->nChannels)
> +    if(count != This->channel_count)
>          return E_INVALIDARG;
>  
>      EnterCriticalSection(&This->lock);
> -- 
> 2.25.1
> 
> 



More information about the wine-devel mailing list