d3drm: Added IDirect3DRMWrap stub.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
4ee9bbc889
commit
5697821917
|
@ -175,6 +175,19 @@ static HRESULT d3drm_create_animation_object(void **object, IDirect3DRM *d3drm)
|
|||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT d3drm_create_wrap_object(void **object, IDirect3DRM *d3drm)
|
||||
{
|
||||
struct d3drm_wrap *wrap;
|
||||
HRESULT hr;
|
||||
|
||||
if (FAILED(hr = d3drm_wrap_create(&wrap, d3drm)))
|
||||
return hr;
|
||||
|
||||
*object = &wrap->IDirect3DRMWrap_iface;
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
struct d3drm
|
||||
{
|
||||
IDirect3DRM IDirect3DRM_iface;
|
||||
|
@ -593,11 +606,22 @@ static HRESULT WINAPI d3drm1_CreateWrap(IDirect3DRM *iface, D3DRMWRAPTYPE type,
|
|||
D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv,
|
||||
IDirect3DRMWrap **wrap)
|
||||
{
|
||||
struct d3drm_wrap *object;
|
||||
HRESULT hr;
|
||||
|
||||
FIXME("iface %p, type %#x, frame %p, ox %.8e, oy %.8e, oz %.8e, dx %.8e, dy %.8e, dz %.8e, "
|
||||
"ux %.8e, uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e, wrap %p stub!\n",
|
||||
"ux %.8e, uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e, wrap %p, semi-stub.\n",
|
||||
iface, type, frame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, wrap);
|
||||
|
||||
return E_NOTIMPL;
|
||||
if (!wrap)
|
||||
return D3DRMERR_BADVALUE;
|
||||
|
||||
if (FAILED(hr = d3drm_wrap_create(&object, iface)))
|
||||
return hr;
|
||||
|
||||
*wrap = &object->IDirect3DRMWrap_iface;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm1_CreateUserVisual(IDirect3DRM *iface,
|
||||
|
@ -1097,11 +1121,14 @@ static HRESULT WINAPI d3drm2_CreateWrap(IDirect3DRM2 *iface, D3DRMWRAPTYPE type,
|
|||
D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv,
|
||||
IDirect3DRMWrap **wrap)
|
||||
{
|
||||
FIXME("iface %p, type %#x, frame %p, ox %.8e, oy %.8e, oz %.8e, dx %.8e, dy %.8e, dz %.8e, "
|
||||
"ux %.8e, uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e, wrap %p stub!\n",
|
||||
struct d3drm *d3drm = impl_from_IDirect3DRM2(iface);
|
||||
|
||||
TRACE("iface %p, type %#x, frame %p, ox %.8e, oy %.8e, oz %.8e, dx %.8e, dy %.8e, dz %.8e, "
|
||||
"ux %.8e, uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e, wrap %p.\n",
|
||||
iface, type, frame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, wrap);
|
||||
|
||||
return E_NOTIMPL;
|
||||
return IDirect3DRM_CreateWrap(&d3drm->IDirect3DRM_iface, type, frame, ox, oy, oz, dx, dy, dz, ux, uy, uz,
|
||||
ou, ov, su, sv, wrap);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm2_CreateUserVisual(IDirect3DRM2 *iface,
|
||||
|
@ -1340,6 +1367,7 @@ static HRESULT WINAPI d3drm3_CreateObject(IDirect3DRM3 *iface,
|
|||
{&CLSID_CDirect3DRMMaterial, d3drm_create_material_object},
|
||||
{&CLSID_CDirect3DRMMesh, d3drm_create_mesh_object},
|
||||
{&CLSID_CDirect3DRMAnimation, d3drm_create_animation_object},
|
||||
{&CLSID_CDirect3DRMWrap, d3drm_create_wrap_object},
|
||||
};
|
||||
|
||||
TRACE("iface %p, clsid %s, outer %p, iid %s, out %p.\n",
|
||||
|
@ -1756,11 +1784,23 @@ static HRESULT WINAPI d3drm3_CreateWrap(IDirect3DRM3 *iface, D3DRMWRAPTYPE type,
|
|||
D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv,
|
||||
IDirect3DRMWrap **wrap)
|
||||
{
|
||||
struct d3drm *d3drm = impl_from_IDirect3DRM3(iface);
|
||||
struct d3drm_wrap *object;
|
||||
HRESULT hr;
|
||||
|
||||
FIXME("iface %p, type %#x, frame %p, ox %.8e, oy %.8e, oz %.8e, dx %.8e, dy %.8e, dz %.8e, "
|
||||
"ux %.8e, uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e, wrap %p stub!\n",
|
||||
"ux %.8e, uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e, wrap %p, semi-stub.\n",
|
||||
iface, type, frame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, wrap);
|
||||
|
||||
return E_NOTIMPL;
|
||||
if (!wrap)
|
||||
return D3DRMERR_BADVALUE;
|
||||
|
||||
if (FAILED(hr = d3drm_wrap_create(&object, &d3drm->IDirect3DRM_iface)))
|
||||
return hr;
|
||||
|
||||
*wrap = &object->IDirect3DRMWrap_iface;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm3_CreateUserVisual(IDirect3DRM3 *iface,
|
||||
|
|
|
@ -215,6 +215,12 @@ struct d3drm_animation
|
|||
IDirect3DRM *d3drm;
|
||||
};
|
||||
|
||||
struct d3drm_wrap
|
||||
{
|
||||
struct d3drm_object obj;
|
||||
IDirect3DRMWrap IDirect3DRMWrap_iface;
|
||||
LONG ref;
|
||||
};
|
||||
|
||||
HRESULT d3drm_device_create(struct d3drm_device **device, IDirect3DRM *d3drm) DECLSPEC_HIDDEN;
|
||||
HRESULT d3drm_device_create_surfaces_from_clipper(struct d3drm_device *object, IDirectDraw *ddraw,
|
||||
|
@ -243,6 +249,7 @@ HRESULT d3drm_light_create(struct d3drm_light **light, IDirect3DRM *d3drm) DECLS
|
|||
HRESULT d3drm_material_create(struct d3drm_material **material, IDirect3DRM *d3drm) DECLSPEC_HIDDEN;
|
||||
HRESULT d3drm_mesh_create(struct d3drm_mesh **mesh, IDirect3DRM *d3drm) DECLSPEC_HIDDEN;
|
||||
HRESULT d3drm_animation_create(struct d3drm_animation **animation, IDirect3DRM *d3drm) DECLSPEC_HIDDEN;
|
||||
HRESULT d3drm_wrap_create(struct d3drm_wrap **wrap, IDirect3DRM *d3drm) DECLSPEC_HIDDEN;
|
||||
|
||||
HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *data,
|
||||
D3DRMLOADTEXTURECALLBACK load_texture_proc, void *arg) DECLSPEC_HIDDEN;
|
||||
|
|
|
@ -307,6 +307,11 @@ static inline struct d3drm_mesh_builder *impl_from_IDirect3DRMMeshBuilder3(IDire
|
|||
return CONTAINING_RECORD(iface, struct d3drm_mesh_builder, IDirect3DRMMeshBuilder3_iface);
|
||||
}
|
||||
|
||||
static inline struct d3drm_wrap *impl_from_IDirect3DRMWrap(IDirect3DRMWrap *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, struct d3drm_wrap, IDirect3DRMWrap_iface);
|
||||
}
|
||||
|
||||
static void clean_mesh_builder_data(struct d3drm_mesh_builder *mesh_builder)
|
||||
{
|
||||
DWORD i;
|
||||
|
@ -2878,3 +2883,187 @@ HRESULT d3drm_mesh_create(struct d3drm_mesh **mesh, IDirect3DRM *d3drm)
|
|||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_QueryInterface(IDirect3DRMWrap *iface, REFIID riid, void **out)
|
||||
{
|
||||
TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
|
||||
|
||||
if (IsEqualGUID(riid, &IID_IDirect3DRMWrap)
|
||||
|| IsEqualGUID(riid, &IID_IDirect3DRMObject)
|
||||
|| IsEqualGUID(riid, &IID_IUnknown))
|
||||
{
|
||||
IDirect3DRMWrap_AddRef(iface);
|
||||
*out = iface;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
WARN("%s not implemented.\n", debugstr_guid(riid));
|
||||
|
||||
*out = NULL;
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI d3drm_wrap_AddRef(IDirect3DRMWrap *iface)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
ULONG refcount = InterlockedIncrement(&wrap->ref);
|
||||
|
||||
TRACE("%p increasing refcount to %u.\n", iface, refcount);
|
||||
|
||||
return refcount;
|
||||
}
|
||||
|
||||
static ULONG WINAPI d3drm_wrap_Release(IDirect3DRMWrap *iface)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
ULONG refcount = InterlockedDecrement(&wrap->ref);
|
||||
|
||||
TRACE("%p decreasing refcount to %u.\n", iface, refcount);
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
d3drm_object_cleanup((IDirect3DRMObject *)iface, &wrap->obj);
|
||||
HeapFree(GetProcessHeap(), 0, wrap);
|
||||
}
|
||||
|
||||
return refcount;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_Clone(IDirect3DRMWrap *iface,
|
||||
IUnknown *outer, REFIID iid, void **out)
|
||||
{
|
||||
FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_AddDestroyCallback(IDirect3DRMWrap *iface,
|
||||
D3DRMOBJECTCALLBACK cb, void *ctx)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
|
||||
TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
|
||||
|
||||
return d3drm_object_add_destroy_callback(&wrap->obj, cb, ctx);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_DeleteDestroyCallback(IDirect3DRMWrap *iface,
|
||||
D3DRMOBJECTCALLBACK cb, void *ctx)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
|
||||
TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
|
||||
|
||||
return d3drm_object_delete_destroy_callback(&wrap->obj, cb, ctx);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_SetAppData(IDirect3DRMWrap *iface, DWORD data)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
|
||||
TRACE("iface %p, data %#x.\n", iface, data);
|
||||
|
||||
wrap->obj.appdata = data;
|
||||
|
||||
return D3DRM_OK;
|
||||
}
|
||||
|
||||
static DWORD WINAPI d3drm_wrap_GetAppData(IDirect3DRMWrap *iface)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
|
||||
TRACE("iface %p.\n", iface);
|
||||
|
||||
return wrap->obj.appdata;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_SetName(IDirect3DRMWrap *iface, const char *name)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
|
||||
TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
|
||||
|
||||
return d3drm_object_set_name(&wrap->obj, name);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_GetName(IDirect3DRMWrap *iface, DWORD *size, char *name)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
|
||||
TRACE("iface %p, size %p, name %p.\n", iface, size, name);
|
||||
|
||||
return d3drm_object_get_name(&wrap->obj, size, name);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_GetClassName(IDirect3DRMWrap *iface, DWORD *size, char *name)
|
||||
{
|
||||
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
|
||||
|
||||
TRACE("iface %p, size %p, name %p.\n", iface, size, name);
|
||||
|
||||
return d3drm_object_get_class_name(&wrap->obj, size, name);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_Init(IDirect3DRMWrap *iface, D3DRMWRAPTYPE type, IDirect3DRMFrame *reference,
|
||||
D3DVALUE ox, D3DVALUE oy, D3DVALUE oz, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux,
|
||||
D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv)
|
||||
{
|
||||
FIXME("iface %p, type %d, reference frame %p, ox %.8e, oy %.8e, oz %.8e, dx %.8e, dy %.8e, dz %.8e, ux %.8e, "
|
||||
"uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e.\n", iface, type, reference, ox, oy, oz, dx, dy, dz,
|
||||
ux, uy, uz, ou, ov, su, sv);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_Apply(IDirect3DRMWrap *iface, IDirect3DRMObject *object)
|
||||
{
|
||||
FIXME("iface %p, object %p.\n", iface, object);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3drm_wrap_ApplyRelative(IDirect3DRMWrap *iface, IDirect3DRMFrame *frame,
|
||||
IDirect3DRMObject *object)
|
||||
{
|
||||
FIXME("iface %p, frame %p, object %p.\n", iface, frame, object);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const struct IDirect3DRMWrapVtbl d3drm_wrap_vtbl =
|
||||
{
|
||||
d3drm_wrap_QueryInterface,
|
||||
d3drm_wrap_AddRef,
|
||||
d3drm_wrap_Release,
|
||||
d3drm_wrap_Clone,
|
||||
d3drm_wrap_AddDestroyCallback,
|
||||
d3drm_wrap_DeleteDestroyCallback,
|
||||
d3drm_wrap_SetAppData,
|
||||
d3drm_wrap_GetAppData,
|
||||
d3drm_wrap_SetName,
|
||||
d3drm_wrap_GetName,
|
||||
d3drm_wrap_GetClassName,
|
||||
d3drm_wrap_Init,
|
||||
d3drm_wrap_Apply,
|
||||
d3drm_wrap_ApplyRelative,
|
||||
};
|
||||
|
||||
HRESULT d3drm_wrap_create(struct d3drm_wrap **wrap, IDirect3DRM *d3drm)
|
||||
{
|
||||
static const char classname[] = "";
|
||||
struct d3drm_wrap *object;
|
||||
|
||||
TRACE("wrap %p, d3drm %p.\n", wrap, d3drm);
|
||||
|
||||
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
object->IDirect3DRMWrap_iface.lpVtbl = &d3drm_wrap_vtbl;
|
||||
object->ref = 1;
|
||||
|
||||
d3drm_object_init(&object->obj, classname);
|
||||
|
||||
*wrap = object;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -96,8 +96,8 @@ static HWND create_window(void)
|
|||
static void test_class_name_(unsigned int line, IDirect3DRMObject *object, const char *name)
|
||||
{
|
||||
char cname[64] = {0};
|
||||
DWORD size, size2;
|
||||
HRESULT hr;
|
||||
DWORD size;
|
||||
|
||||
hr = IDirect3DRMObject_GetClassName(object, NULL, cname);
|
||||
ok_(__FILE__, line)(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
|
||||
|
@ -109,10 +109,10 @@ static void test_class_name_(unsigned int line, IDirect3DRMObject *object, const
|
|||
ok_(__FILE__, line)(hr == D3DRM_OK, "Failed to get classname size, hr %#x.\n", hr);
|
||||
ok_(__FILE__, line)(size == strlen(name) + 1, "wrong size: %u\n", size);
|
||||
|
||||
size = 1;
|
||||
size = size2 = !!*name ? 1 : 0;
|
||||
hr = IDirect3DRMObject_GetClassName(object, &size, cname);
|
||||
ok_(__FILE__, line)(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
|
||||
ok_(__FILE__, line)(size == 1, "Got size %u.\n", size);
|
||||
ok_(__FILE__, line)(size == size2, "Got size %u.\n", size);
|
||||
|
||||
size = sizeof(cname);
|
||||
hr = IDirect3DRMObject_GetClassName(object, &size, cname);
|
||||
|
@ -1490,6 +1490,7 @@ static void test_object(void)
|
|||
{ &CLSID_CDirect3DRMMesh, &IID_IDirect3DRMMesh, TRUE },
|
||||
{ &CLSID_CDirect3DRMAnimation, &IID_IDirect3DRMAnimation, TRUE },
|
||||
{ &CLSID_CDirect3DRMAnimation, &IID_IDirect3DRMAnimation2, TRUE },
|
||||
{ &CLSID_CDirect3DRMWrap, &IID_IDirect3DRMWrap },
|
||||
};
|
||||
IDirect3DRM *d3drm1;
|
||||
IDirect3DRM2 *d3drm2;
|
||||
|
@ -6743,6 +6744,112 @@ static void test_animation(void)
|
|||
IDirect3DRM_Release(d3drm1);
|
||||
}
|
||||
|
||||
static void test_wrap(void)
|
||||
{
|
||||
IDirect3DRMWrap *wrap;
|
||||
IDirect3DRM *d3drm1;
|
||||
HRESULT hr;
|
||||
|
||||
hr = Direct3DRMCreate(&d3drm1);
|
||||
ok(SUCCEEDED(hr), "Failed to create IDirect3DRM instance, hr %#x.\n", hr);
|
||||
|
||||
hr = IDirect3DRM_CreateObject(d3drm1, &CLSID_CDirect3DRMWrap, NULL, &IID_IDirect3DRMWrap, (void **)&wrap);
|
||||
ok(SUCCEEDED(hr), "Failed to create wrap instance, hr %#x.\n", hr);
|
||||
|
||||
test_class_name((IDirect3DRMObject *)wrap, "");
|
||||
|
||||
IDirect3DRMWrap_Release(wrap);
|
||||
IDirect3DRM_Release(d3drm1);
|
||||
}
|
||||
|
||||
static void test_wrap_qi(void)
|
||||
{
|
||||
static const struct qi_test tests[] =
|
||||
{
|
||||
{ &IID_IDirect3DRMWrap, &IID_IUnknown, &IID_IDirect3DRMWrap, S_OK },
|
||||
{ &IID_IDirect3DRM, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMDevice, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMObject, &IID_IUnknown, &IID_IDirect3DRMWrap, S_OK },
|
||||
{ &IID_IDirect3DRMDevice2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMDevice3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMViewport, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMViewport2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRM3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRM2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMVisual, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMMesh, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMMeshBuilder, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMMeshBuilder2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMMeshBuilder3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMFace, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMFace2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMLight, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMTexture, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMTexture2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMTexture3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMMaterial, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMMaterial2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMAnimation, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMAnimation2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMAnimationSet, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMAnimationSet2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMObjectArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMDeviceArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMViewportArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMFrameArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMVisualArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMLightArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMPickedArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMFaceArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMAnimationArray, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMUserVisual, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMShadow, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMShadow2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMInterpolator, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMProgressiveMesh, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMPicked2Array, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DRMClippedVisual, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDrawClipper, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDrawSurface7, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDrawSurface4, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDrawSurface3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDrawSurface2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDrawSurface, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DDevice7, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DDevice3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DDevice2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DDevice, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3D7, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3D3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3D2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3D, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDraw7, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDraw4, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDraw3, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDraw2, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirectDraw, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IDirect3DLight, NULL, NULL, CLASS_E_CLASSNOTAVAILABLE },
|
||||
{ &IID_IUnknown, &IID_IUnknown, NULL, S_OK },
|
||||
};
|
||||
IDirect3DRMWrap *wrap;
|
||||
IDirect3DRM *d3drm1;
|
||||
IUnknown *unknown;
|
||||
HRESULT hr;
|
||||
|
||||
hr = Direct3DRMCreate(&d3drm1);
|
||||
ok(SUCCEEDED(hr), "Failed to create d3drm instance, hr %#x.\n", hr);
|
||||
|
||||
hr = IDirect3DRM_CreateObject(d3drm1, &CLSID_CDirect3DRMWrap, NULL, &IID_IDirect3DRMWrap, (void **)&wrap);
|
||||
ok(SUCCEEDED(hr), "Failed to create wrap instance, hr %#x.\n", hr);
|
||||
|
||||
hr = IDirect3DRMWrap_QueryInterface(wrap, &IID_IUnknown, (void **)&unknown);
|
||||
ok(SUCCEEDED(hr), "Failed to get IUnknown from wrap (hr = %#x)\n", hr);
|
||||
IDirect3DRMWrap_Release(wrap);
|
||||
test_qi("wrap_qi", unknown, &IID_IUnknown, tests, sizeof(tests) / sizeof(*tests));
|
||||
IUnknown_Release(unknown);
|
||||
|
||||
IDirect3DRM_Release(d3drm1);
|
||||
}
|
||||
START_TEST(d3drm)
|
||||
{
|
||||
test_MeshBuilder();
|
||||
|
@ -6778,4 +6885,6 @@ START_TEST(d3drm)
|
|||
test_viewport_clear2();
|
||||
test_create_texture_from_surface();
|
||||
test_animation();
|
||||
test_wrap();
|
||||
test_wrap_qi();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue