Zhiyi Zhang : d3d8: Store a struct d3d8 in struct d3d8_device.

Alexandre Julliard julliard at winehq.org
Wed May 13 16:29:54 CDT 2020


Module: wine
Branch: master
Commit: 97fce0b3af87d8425cb484cb47eb02d4717f322b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=97fce0b3af87d8425cb484cb47eb02d4717f322b

Author: Zhiyi Zhang <zzhang at 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 at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
 




More information about the wine-cvs mailing list