d3dx9_36: Implement ID3DXFileDataImpl_Lock and ID3DXFileDataImpl_Unlock + tests.
This commit is contained in:
parent
8aa700e7ba
commit
45e43dc5d0
|
@ -46,6 +46,12 @@ char templates[] =
|
||||||
"DWORD flags;"
|
"DWORD flags;"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
|
static char objects[] =
|
||||||
|
"xof 0302txt 0064\n"
|
||||||
|
"Header Object\n"
|
||||||
|
"{\n"
|
||||||
|
"1; 2; 3;\n"
|
||||||
|
"}\n";
|
||||||
|
|
||||||
static void test_templates(void)
|
static void test_templates(void)
|
||||||
{
|
{
|
||||||
|
@ -79,8 +85,49 @@ static void test_templates(void)
|
||||||
d3dxfile->lpVtbl->Release(d3dxfile);
|
d3dxfile->lpVtbl->Release(d3dxfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_lock_unlock(void)
|
||||||
|
{
|
||||||
|
ID3DXFile *d3dxfile;
|
||||||
|
D3DXF_FILELOADMEMORY memory;
|
||||||
|
ID3DXFileEnumObject *enum_object;
|
||||||
|
ID3DXFileData *data_object;
|
||||||
|
const void *data;
|
||||||
|
SIZE_T size;
|
||||||
|
HRESULT ret;
|
||||||
|
|
||||||
|
ret = D3DXFileCreate(&d3dxfile);
|
||||||
|
ok(ret == S_OK, "D3DXCreateFile failed with %#x\n", ret);
|
||||||
|
|
||||||
|
ret = d3dxfile->lpVtbl->RegisterTemplates(d3dxfile, (const void *)templates, (SIZE_T)(sizeof(templates) - 1));
|
||||||
|
ok(ret == S_OK, "RegisterTemplates failed with %#x\n", ret);
|
||||||
|
|
||||||
|
memory.lpMemory = objects;
|
||||||
|
memory.dSize = sizeof(objects) - 1;
|
||||||
|
|
||||||
|
ret = d3dxfile->lpVtbl->CreateEnumObject(d3dxfile, &memory, D3DXF_FILELOAD_FROMMEMORY, &enum_object);
|
||||||
|
ok(ret == S_OK, "CreateEnumObject failed with %#x\n", ret);
|
||||||
|
|
||||||
|
ret = enum_object->lpVtbl->GetChild(enum_object, 0, &data_object);
|
||||||
|
ok(ret == S_OK, "GetChild failed with %#x\n", ret);
|
||||||
|
|
||||||
|
ret = data_object->lpVtbl->Unlock(data_object);
|
||||||
|
ok(ret == S_OK, "Unlock failed with %#x\n", ret);
|
||||||
|
ret = data_object->lpVtbl->Lock(data_object, &size, &data);
|
||||||
|
ok(ret == S_OK, "Lock failed with %#x\n", ret);
|
||||||
|
ret = data_object->lpVtbl->Lock(data_object, &size, &data);
|
||||||
|
ok(ret == S_OK, "Lock failed with %#x\n", ret);
|
||||||
|
ret = data_object->lpVtbl->Unlock(data_object);
|
||||||
|
ok(ret == S_OK, "Unlock failed with %#x\n", ret);
|
||||||
|
ret = data_object->lpVtbl->Unlock(data_object);
|
||||||
|
ok(ret == S_OK, "Unlock failed with %#x\n", ret);
|
||||||
|
|
||||||
|
data_object->lpVtbl->Release(data_object);
|
||||||
|
enum_object->lpVtbl->Release(enum_object);
|
||||||
|
d3dxfile->lpVtbl->Release(d3dxfile);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(xfile)
|
START_TEST(xfile)
|
||||||
{
|
{
|
||||||
test_templates();
|
test_templates();
|
||||||
|
test_lock_unlock();
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,17 +178,32 @@ static HRESULT WINAPI ID3DXFileDataImpl_GetId(ID3DXFileData *iface, GUID *guid)
|
||||||
|
|
||||||
static HRESULT WINAPI ID3DXFileDataImpl_Lock(ID3DXFileData *iface, SIZE_T *size, const void **data)
|
static HRESULT WINAPI ID3DXFileDataImpl_Lock(ID3DXFileData *iface, SIZE_T *size, const void **data)
|
||||||
{
|
{
|
||||||
FIXME("(%p)->(%p, %p): stub\n", iface, size, data);
|
ID3DXFileDataImpl *This = impl_from_ID3DXFileData(iface);
|
||||||
|
DWORD dxfile_size;
|
||||||
|
HRESULT ret;
|
||||||
|
|
||||||
return E_NOTIMPL;
|
TRACE("(%p)->(%p, %p)\n", iface, size, data);
|
||||||
|
|
||||||
|
if (!size || !data)
|
||||||
|
return E_POINTER;
|
||||||
|
|
||||||
|
ret = IDirectXFileData_GetData(This->dxfile_data, NULL, &dxfile_size, (void**)data);
|
||||||
|
if (ret != DXFILE_OK)
|
||||||
|
return error_dxfile_to_d3dxfile(ret);
|
||||||
|
|
||||||
|
*size = dxfile_size;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static HRESULT WINAPI ID3DXFileDataImpl_Unlock(ID3DXFileData *iface)
|
static HRESULT WINAPI ID3DXFileDataImpl_Unlock(ID3DXFileData *iface)
|
||||||
{
|
{
|
||||||
FIXME("(%p)->(): stub\n", iface);
|
TRACE("(%p)->()\n", iface);
|
||||||
|
|
||||||
return E_NOTIMPL;
|
/* Nothing to do */
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue