[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