Re: [PATCH 5/5] d3d11: Add ID3D11Texture2D stub interface.
On 24 August 2015 at 01:04, Józef Kucia <jkucia(a)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.
participants (1)
-
Henri Verbeet