[PATCH v4 1/1] d3drm: IDirect3DRMMeshBuilder3 Load support loading from resource
Alistair Leslie-Hughes
wine at gitlab.winehq.org
Wed Jun 8 17:42:24 CDT 2022
From: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/d3drm/meshbuilder.c | 25 +++++++++----------------
1 file changed, 9 insertions(+), 16 deletions(-)
diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c
index 1f783baf1fe..d23e2575a6e 100644
--- a/dlls/d3drm/meshbuilder.c
+++ b/dlls/d3drm/meshbuilder.c
@@ -1462,8 +1462,10 @@ end:
static HRESULT WINAPI d3drm_mesh_builder3_Load(IDirect3DRMMeshBuilder3 *iface, void *filename,
void *name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK cb, void *arg)
{
+ const DWORD supported_flags = D3DRMLOAD_FROMFILE | D3DRMLOAD_FROMRESOURCE | D3DRMLOAD_FROMMEMORY
+ | D3DRMLOAD_FROMSTREAM | D3DRMLOAD_FROMURL;
struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder3(iface);
- DXFILELOADOPTIONS load_options;
+ DXFILELOADOPTIONS load_options = loadflags & supported_flags;
IDirectXFile *dxfile = NULL;
IDirectXFileEnumObject *enum_object = NULL;
IDirectXFileData *data = NULL;
@@ -1476,22 +1478,10 @@ static HRESULT WINAPI d3drm_mesh_builder3_Load(IDirect3DRMMeshBuilder3 *iface, v
TRACE("iface %p, filename %p, name %p, loadflags %#lx, cb %p, arg %p.\n",
iface, filename, name, loadflags, cb, arg);
- clean_mesh_builder_data(mesh_builder);
+ if (loadflags & ~supported_flags)
+ FIXME("Unsupported flags %#lx\n", loadflags & ~supported_flags);
- if (loadflags == D3DRMLOAD_FROMMEMORY)
- {
- load_options = DXFILELOAD_FROMMEMORY;
- }
- else if (loadflags == D3DRMLOAD_FROMFILE)
- {
- load_options = DXFILELOAD_FROMFILE;
- TRACE("Loading from file %s\n", debugstr_a(filename));
- }
- else
- {
- FIXME("Load options %ld not supported yet\n", loadflags);
- return E_NOTIMPL;
- }
+ clean_mesh_builder_data(mesh_builder);
hr = DirectXFileCreate(&dxfile);
if (hr != DXFILE_OK)
@@ -1503,7 +1493,10 @@ static HRESULT WINAPI d3drm_mesh_builder3_Load(IDirect3DRMMeshBuilder3 *iface, v
hr = IDirectXFile_CreateEnumObject(dxfile, filename, load_options, &enum_object);
if (hr != DXFILE_OK)
+ {
+ WARN("Failed to create object for type %#lx\n", loadflags);
goto end;
+ }
hr = IDirectXFileEnumObject_GetNextDataObject(enum_object, &data);
if (hr != DXFILE_OK)
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/167
More information about the wine-devel
mailing list