Zhiyi Zhang : d3d8: Store a struct d3d8 in struct d3d8_device.
Module: wine Branch: master Commit: 97fce0b3af87d8425cb484cb47eb02d4717f322b URL: https://source.winehq.org/git/wine.git/?a=commit;h=97fce0b3af87d8425cb484cb4... Author: Zhiyi Zhang <zzhang(a)codeweavers.com> Date: Tue May 12 20:49:16 2020 +0800 d3d8: Store a struct d3d8 in struct d3d8_device. So that d3d_parent->wined3d_outputs can be directly accessed in device. Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d8/d3d8_private.h | 2 +- dlls/d3d8/device.c | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h index 04bca7ddfa..e98746a13b 100644 --- a/dlls/d3d8/d3d8_private.h +++ b/dlls/d3d8/d3d8_private.h @@ -115,7 +115,7 @@ struct d3d8_device LONG ref; struct wined3d_device *wined3d_device; unsigned int adapter_ordinal; - IDirect3D8 *d3d_parent; + struct d3d8 *d3d_parent; struct d3d8_handle_table handle_table; /* FVF management */ diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index e123502dab..d3a88acc35 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -609,7 +609,7 @@ static ULONG WINAPI d3d8_device_Release(IDirect3DDevice8 *iface) if (!ref) { - IDirect3D8 *parent = device->d3d_parent; + IDirect3D8 *parent = &device->d3d_parent->IDirect3D8_iface; unsigned i; TRACE("Releasing wined3d device %p.\n", device->wined3d_device); @@ -705,7 +705,8 @@ static HRESULT WINAPI d3d8_device_GetDirect3D(IDirect3DDevice8 *iface, IDirect3D if (!d3d8) return D3DERR_INVALIDCALL; - return IDirect3D8_QueryInterface(device->d3d_parent, &IID_IDirect3D8, (void **)d3d8); + return IDirect3D8_QueryInterface(&device->d3d_parent->IDirect3D8_iface, &IID_IDirect3D8, + (void **)d3d8); } static HRESULT WINAPI d3d8_device_GetDeviceCaps(IDirect3DDevice8 *iface, D3DCAPS8 *caps) @@ -791,8 +792,8 @@ static HRESULT WINAPI d3d8_device_SetCursorProperties(IDirect3DDevice8 *iface, return hr; } - if (FAILED(hr = IDirect3D8_GetAdapterDisplayMode(device->d3d_parent, device->adapter_ordinal, - &mode))) + if (FAILED(hr = IDirect3D8_GetAdapterDisplayMode(&device->d3d_parent->IDirect3D8_iface, + device->adapter_ordinal, &mode))) { WARN("Failed to get device display mode, hr %#x.\n", hr); return hr; @@ -3835,8 +3836,8 @@ HRESULT device_init(struct d3d8_device *device, struct d3d8 *parent, struct wine device->implicit_swapchain = wined3d_swapchain; - device->d3d_parent = &parent->IDirect3D8_iface; - IDirect3D8_AddRef(device->d3d_parent); + device->d3d_parent = parent; + IDirect3D8_AddRef(&parent->IDirect3D8_iface); return D3D_OK;
participants (1)
-
Alexandre Julliard