Elizabeth Figura (@zfigura) commented about dlls/d3d9/device.c:
- return CONTAINING_RECORD( iface, struct d3d9_device, IDirect3DDevice9On12_iface );
+}
+static HRESULT WINAPI d3d9on12_QueryInterface( IDirect3DDevice9On12 *iface, REFIID iid, void **out ) +{
- struct d3d9_device *device = impl_from_IDirect3DDevice9On12(iface);
- TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out );
- if (IsEqualGUID( iid, &IID_IUnknown ) ||
IsEqualGUID( iid, &IID_IDirect3DDevice9On12 ))
- {
IDirect3DDevice9On12_AddRef( &device->IDirect3DDevice9On12_iface );
*out = &device->IDirect3DDevice9On12_iface;
return S_OK;
- }
Again, QueryInterface() is symmetric. You should be forwarding to d3d9_device_QueryInterface(). Same for AddRef() and Release().