Files
wine-staging/patches/d3drm-starwars/0017-d3drm-IDirect3DRMMesh-Clone-semi-stub.patch
Alistair Leslie-Hughes 31b114a4e3 Added d3drm-starwars patchset
This stops the crash but doesn't show the battle at all.

Patchset shows what is needed (as a minimum), to be
implemented in order for it to work correctly.
2025-10-16 17:40:42 +11:00

40 lines
1.3 KiB
Diff

From 61ed2e5563b365fb0bd4e581d03ca8300cd1b4ee Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 15 Sep 2023 15:33:13 +1000
Subject: [PATCH] d3drm: IDirect3DRMMesh Clone semi-stub
Needs to copy all members.
---
dlls/d3drm/meshbuilder.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c
index ec2615a016d..3e57fa99435 100644
--- a/dlls/d3drm/meshbuilder.c
+++ b/dlls/d3drm/meshbuilder.c
@@ -2508,9 +2508,20 @@ static ULONG WINAPI d3drm_mesh_Release(IDirect3DRMMesh *iface)
static HRESULT WINAPI d3drm_mesh_Clone(IDirect3DRMMesh *iface,
IUnknown *outer, REFIID iid, void **out)
{
+ struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
+ struct d3drm_mesh *meshout;
+ HRESULT hr;
+
FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
- return E_NOTIMPL;
+ hr = d3drm_mesh_create(&meshout, mesh->d3drm);
+ if (FAILED(hr))
+ return hr;
+
+ hr = IDirect3DRMMesh_QueryInterface(&meshout->IDirect3DRMMesh_iface, iid, out);
+ IDirect3DRMMesh_Release(&meshout->IDirect3DRMMesh_iface);
+
+ return hr;
}
static HRESULT WINAPI d3drm_mesh_AddDestroyCallback(IDirect3DRMMesh *iface,
--
2.45.2