[PATCH] dsound: fixup IDirectSoundCaptureBuffer_QueryInterface

Andrew Eikum aeikum at codeweavers.com
Tue Oct 1 09:08:59 CDT 2013


Seems reasonable, but could you put together some tests to show this?

Andrew

On Sat, Sep 28, 2013 at 10:41:15AM +0200, Maarten Lankhorst wrote:
> diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c
> index 40f1702..0fe300c 100644
> --- a/dlls/dsound/capture.c
> +++ b/dlls/dsound/capture.c
> @@ -51,7 +51,7 @@ typedef struct IDirectSoundCaptureBufferImpl
>      IDirectSoundCaptureBuffer8          IDirectSoundCaptureBuffer8_iface;
>      IDirectSoundNotify                  IDirectSoundNotify_iface;
>      LONG                                numIfaces; /* "in use interfaces" refcount */
> -    LONG                                ref, refn;
> +    LONG                                ref, refn, has_dsc8;
>      /* IDirectSoundCaptureBuffer fields */
>      DirectSoundCaptureDevice            *device;
>      DSCBUFFERDESC                       *pdscbd;
> @@ -241,8 +241,9 @@ static HRESULT WINAPI IDirectSoundCaptureBufferImpl_QueryInterface(IDirectSoundC
>  
>      *ppobj = NULL;
>  
> -    if ( IsEqualGUID( &IID_IDirectSoundCaptureBuffer, riid ) ||
> -         IsEqualGUID( &IID_IDirectSoundCaptureBuffer8, riid ) ) {
> +    if ( IsEqualIID( &IID_IUnknown, riid ) ||
> +         IsEqualIID( &IID_IDirectSoundCaptureBuffer, riid ) ||
> +         (This->has_dsc8 && IsEqualIID( &IID_IDirectSoundCaptureBuffer8, riid )) ) {
>  	IDirectSoundCaptureBuffer8_AddRef(iface);
>          *ppobj = iface;
>          return S_OK;
> @@ -1239,6 +1240,8 @@ static HRESULT WINAPI IDirectSoundCaptureImpl_CreateCaptureBuffer(IDirectSoundCa
>  
>      if (hr != DS_OK)
>  	WARN("IDirectSoundCaptureBufferImpl_Create failed\n");
> +    else
> +        This->device->capture_buffer->has_dsc8 = This->has_dsc8;
>  
>      return hr;
>  }
> 
> 
> 



More information about the wine-devel mailing list