[PATCH 5/5] d3d11: Add ID3D11Texture2D stub interface.

Henri Verbeet hverbeet at gmail.com
Mon Aug 24 08:14:52 CDT 2015


On 24 August 2015 at 01:04, Józef Kucia <jkucia at codeweavers.com> wrote:
>  struct d3d10_texture2d
>  {
>      ID3D10Texture2D ID3D10Texture2D_iface;
> +    ID3D11Texture2D ID3D11Texture2D_iface;
We usually put the newest interface version first.

> +static HRESULT texture2d_query_interface(struct d3d10_texture2d *texture, REFIID riid, void **object)
>  {
> -    struct d3d10_texture2d *This = impl_from_ID3D10Texture2D(iface);
> -
> -    TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object);
> -
>      if (IsEqualGUID(riid, &IID_ID3D10Texture2D)
>              || IsEqualGUID(riid, &IID_ID3D10Resource)
>              || IsEqualGUID(riid, &IID_ID3D10DeviceChild)
>              || IsEqualGUID(riid, &IID_IUnknown))
>      {
> -        IUnknown_AddRef(iface);
> -        *object = iface;
> +        *object = &texture->ID3D10Texture2D_iface;
> +        IUnknown_AddRef((IUnknown *)*object);
> +        return S_OK;
> +    }
> +    else if (IsEqualGUID(riid, &IID_ID3D11Texture2D)
> +            || IsEqualGUID(riid, &IID_ID3D11Resource)
> +            || IsEqualGUID(riid, &IID_ID3D11DeviceChild))
> +    {
> +        *object = &texture->ID3D11Texture2D_iface;
> +        IUnknown_AddRef((IUnknown *)*object);
>          return S_OK;
>      }
>
Here too.

> +static HRESULT STDMETHODCALLTYPE d3d10_texture2d_QueryInterface(ID3D10Texture2D *iface, REFIID riid, void **object)
> +{
> +    struct d3d10_texture2d *This = impl_from_ID3D10Texture2D(iface);
> +
> +    TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object);
> +
> +    return texture2d_query_interface(This, riid, object);
> +}
There's something to say for this approach, but what we usually do is
to just forward to the newest interface version (where possible,
practical, etc.) I.e. "return
d3d11_texture2d_queryInterface(&texture->ID3D11Texture2d_iface, iid,
out);".

> +HRESULT STDMETHODCALLTYPE d3d11_texture2d_QueryInterface(ID3D11Texture2D *iface, REFIID riid, void **object)
These should be static.



More information about the wine-devel mailing list