d3d8: Fix GetDevice() for surfaces that are part of a texture.
If the surface is part of a texture it doesn't keep its own reference to the
device, but instead relies on the reference the texture has. This fixes a
regression introduced by 3cedef2ffe
.
This commit is contained in:
parent
740e2d403e
commit
179cee08b0
|
@ -106,6 +106,23 @@ static HRESULT WINAPI IDirect3DSurface8Impl_GetDevice(IDirect3DSurface8 *iface,
|
|||
|
||||
TRACE("iface %p, device %p.\n", iface, device);
|
||||
|
||||
if (This->forwardReference)
|
||||
{
|
||||
IDirect3DResource8 *resource;
|
||||
HRESULT hr;
|
||||
|
||||
hr = IUnknown_QueryInterface(This->forwardReference, &IID_IDirect3DResource8, (void **)&resource);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = IDirect3DResource8_GetDevice(resource, device);
|
||||
IDirect3DResource8_Release(resource);
|
||||
|
||||
TRACE("Returning device %p.\n", *device);
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
*device = (IDirect3DDevice8 *)This->parentDevice;
|
||||
IDirect3DDevice8_AddRef(*device);
|
||||
|
||||
|
|
Loading…
Reference in New Issue