On 22 March 2012 00:50, Michael Stefaniuc <mstefani(a)redhat.de> wrote:
-static HRESULT STDMETHODCALLTYPE d3d10_device_inner_QueryInterface(IUnknown *iface, REFIID riid, void **object) +static HRESULT STDMETHODCALLTYPE d3d10_device_inner_QueryInterface(IUnknown *iface, REFIID riid, + void **ppv) { - struct d3d10_device *This = d3d10_device_from_inner_unknown(iface); + struct d3d10_device *This = impl_from_IUnknown(iface);
- TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object); + TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), ppv);
- if (IsEqualGUID(riid, &IID_IUnknown) - || IsEqualGUID(riid, &IID_ID3D10Device)) + if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_ID3D10Device)) + *ppv = This; + else if (IsEqualGUID(riid, &IID_IWineDXGIDeviceParent)) + *ppv = &This->IWineDXGIDeviceParent_iface; + else { - ID3D10Device_AddRef(&This->ID3D10Device_iface); - *object = This; - return S_OK; + WARN("%s not implemented, returning E_NOINTERFACE\n", debugstr_guid(riid)); + *ppv = NULL; + return E_NOINTERFACE; }
- if (IsEqualGUID(riid, &IID_IWineDXGIDeviceParent)) - { - IWineDXGIDeviceParent_AddRef(&This->IWineDXGIDeviceParent_iface); - *object = &This->IWineDXGIDeviceParent_iface; - return S_OK; - } - - WARN("%s not implemented, returning E_NOINTERFACE\n", debugstr_guid(riid)); - - *object = NULL; - return E_NOINTERFACE; + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; } I'm not sure this really makes it much better, but I guess it's mostly up to how Alexandre wants these.