d3drm: Move struct d3drm_texture to header for global access.

Signed-off-by: Aaryaman Vasishta <jem456.vasishta@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Aaryaman Vasishta 2016-03-21 21:36:45 +05:30 committed by Alexandre Julliard
parent d02e559b91
commit b05b96a0e2
4 changed files with 99 additions and 28 deletions

View File

@ -3,6 +3,7 @@
*
* Copyright 2010, 2012 Christian Costa
* Copyright 2011 André Hentschel
* Copyright 2016 Aaryaman Vasishta
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -192,9 +193,17 @@ static HRESULT WINAPI d3drm1_CreateAnimationSet(IDirect3DRM *iface, IDirect3DRMA
static HRESULT WINAPI d3drm1_CreateTexture(IDirect3DRM *iface,
D3DRMIMAGE *image, IDirect3DRMTexture **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, image %p, texture %p partial stub.\n", iface, image, texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm1_CreateLight(IDirect3DRM *iface,
@ -402,17 +411,33 @@ static HRESULT WINAPI d3drm1_CreateUserVisual(IDirect3DRM *iface,
static HRESULT WINAPI d3drm1_LoadTexture(IDirect3DRM *iface,
const char *filename, IDirect3DRMTexture **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, filename %s, texture %p stub!\n", iface, debugstr_a(filename), texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm1_LoadTextureFromResource(IDirect3DRM *iface,
HRSRC resource, IDirect3DRMTexture **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, resource %p, texture %p stub!\n", iface, resource, texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm1_SetSearchPath(IDirect3DRM *iface, const char *path)
@ -632,9 +657,17 @@ static HRESULT WINAPI d3drm2_CreateAnimationSet(IDirect3DRM2 *iface, IDirect3DRM
static HRESULT WINAPI d3drm2_CreateTexture(IDirect3DRM2 *iface,
D3DRMIMAGE *image, IDirect3DRMTexture2 **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, image %p, texture %p partial stub.\n", iface, image, texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture2, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture2_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm2_CreateLight(IDirect3DRM2 *iface,
@ -820,18 +853,34 @@ static HRESULT WINAPI d3drm2_CreateUserVisual(IDirect3DRM2 *iface,
static HRESULT WINAPI d3drm2_LoadTexture(IDirect3DRM2 *iface,
const char *filename, IDirect3DRMTexture2 **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, filename %s, texture %p stub!\n", iface, debugstr_a(filename), texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture2, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture2_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm2_LoadTextureFromResource(IDirect3DRM2 *iface, HMODULE module,
const char *resource_name, const char *resource_type, IDirect3DRMTexture2 **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, resource_name %s, resource_type %s, texture %p stub!\n",
iface, debugstr_a(resource_name), debugstr_a(resource_type), texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture2, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture2_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm2_SetSearchPath(IDirect3DRM2 *iface, const char *path)
@ -1057,9 +1106,17 @@ static HRESULT WINAPI d3drm3_CreateAnimationSet(IDirect3DRM3 *iface, IDirect3DRM
static HRESULT WINAPI d3drm3_CreateTexture(IDirect3DRM3 *iface,
D3DRMIMAGE *image, IDirect3DRMTexture3 **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, image %p, texture %p partial stub.\n", iface, image, texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture3, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture3_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm3_CreateLight(IDirect3DRM3 *iface,
@ -1295,18 +1352,34 @@ static HRESULT WINAPI d3drm3_CreateUserVisual(IDirect3DRM3 *iface,
static HRESULT WINAPI d3drm3_LoadTexture(IDirect3DRM3 *iface,
const char *filename, IDirect3DRMTexture3 **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, filename %s, texture %p stub!\n", iface, debugstr_a(filename), texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture3, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture3_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm3_LoadTextureFromResource(IDirect3DRM3 *iface, HMODULE module,
const char *resource_name, const char *resource_type, IDirect3DRMTexture3 **texture)
{
struct d3drm_texture *object;
HRESULT hr;
FIXME("iface %p, module %p, resource_name %s, resource_type %s, texture %p stub!\n",
iface, module, debugstr_a(resource_name), debugstr_a(resource_type), texture);
return Direct3DRMTexture_create(&IID_IDirect3DRMTexture3, (IUnknown **)texture);
if (FAILED(hr = d3drm_texture_create(&object)))
return hr;
*texture = &object->IDirect3DRMTexture3_iface;
return D3DRM_OK;
}
static HRESULT WINAPI d3drm3_SetSearchPath(IDirect3DRM3 *iface, const char *path)

View File

@ -34,12 +34,22 @@ struct d3drm_object
struct list destroy_callbacks;
};
struct d3drm_texture
{
IDirect3DRMTexture IDirect3DRMTexture_iface;
IDirect3DRMTexture2 IDirect3DRMTexture2_iface;
IDirect3DRMTexture3 IDirect3DRMTexture3_iface;
LONG ref;
DWORD app_data;
};
void d3drm_object_init(struct d3drm_object *object) DECLSPEC_HIDDEN;
HRESULT d3drm_object_add_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx) DECLSPEC_HIDDEN;
HRESULT d3drm_object_delete_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx) DECLSPEC_HIDDEN;
void d3drm_object_cleanup(IDirect3DRMObject *iface, struct d3drm_object *object) DECLSPEC_HIDDEN;
HRESULT d3drm_device_create(struct d3drm_device **out) DECLSPEC_HIDDEN;
HRESULT d3drm_texture_create(struct d3drm_texture **texture) DECLSPEC_HIDDEN;
IDirect3DRMDevice *IDirect3DRMDevice_from_impl(struct d3drm_device *device) DECLSPEC_HIDDEN;
IDirect3DRMDevice2 *IDirect3DRMDevice2_from_impl(struct d3drm_device *device) DECLSPEC_HIDDEN;
IDirect3DRMDevice3 *IDirect3DRMDevice3_from_impl(struct d3drm_device *device) DECLSPEC_HIDDEN;
@ -50,7 +60,6 @@ HRESULT Direct3DRMMesh_create(IDirect3DRMMesh** obj) DECLSPEC_HIDDEN;
HRESULT Direct3DRMMeshBuilder_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN;
HRESULT Direct3DRMViewport_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN;
HRESULT Direct3DRMMaterial_create(IDirect3DRMMaterial2** ret_iface) DECLSPEC_HIDDEN;
HRESULT Direct3DRMTexture_create(REFIID riid, IUnknown** ret_iface) DECLSPEC_HIDDEN;
HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *data,
D3DRMLOADTEXTURECALLBACK load_texture_proc, void *arg) DECLSPEC_HIDDEN;

View File

@ -1162,6 +1162,7 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData,
IDirectXFileObject *child;
DWORD i = 0;
float* values;
struct d3drm_texture *texture_object;
TRACE("Process MeshMaterialList\n");
@ -1299,13 +1300,12 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData,
if (file != INVALID_HANDLE_VALUE)
{
CloseHandle(file);
hr = Direct3DRMTexture_create(&IID_IDirect3DRMTexture3, (IUnknown**)&This->materials[i].texture);
if (FAILED(hr))
if (FAILED(hr = d3drm_texture_create(&texture_object)))
{
IDirectXFileData_Release(data);
goto end;
}
This->materials[i].texture = &texture_object->IDirect3DRMTexture3_iface;
}
}
}

View File

@ -29,15 +29,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
struct d3drm_texture
{
IDirect3DRMTexture IDirect3DRMTexture_iface;
IDirect3DRMTexture2 IDirect3DRMTexture2_iface;
IDirect3DRMTexture3 IDirect3DRMTexture3_iface;
LONG ref;
DWORD app_data;
};
static inline struct d3drm_texture *impl_from_IDirect3DRMTexture(IDirect3DRMTexture *iface)
{
return CONTAINING_RECORD(iface, struct d3drm_texture, IDirect3DRMTexture_iface);
@ -1038,12 +1029,11 @@ static const struct IDirect3DRMTexture3Vtbl d3drm_texture3_vtbl =
d3drm_texture3_SetValidationCallback,
};
HRESULT Direct3DRMTexture_create(REFIID riid, IUnknown **out)
HRESULT d3drm_texture_create(struct d3drm_texture **texture)
{
struct d3drm_texture *object;
HRESULT hr;
TRACE("riid %s, out %p.\n", debugstr_guid(riid), out);
TRACE("texture %p.\n", texture);
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
@ -1053,8 +1043,7 @@ HRESULT Direct3DRMTexture_create(REFIID riid, IUnknown **out)
object->IDirect3DRMTexture3_iface.lpVtbl = &d3drm_texture3_vtbl;
object->ref = 1;
hr = IDirect3DRMTexture3_QueryInterface(&object->IDirect3DRMTexture3_iface, riid, (void **)out);
IDirect3DRMTexture3_Release(&object->IDirect3DRMTexture3_iface);
*texture = object;
return hr;
return D3DRM_OK;
}