On 24 August 2015 at 01:04, Józef Kucia jkucia@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.