[PATCH 4/4] d3drm: Implement IDirect3DRMMesh_GetGroupCount.

Christian Costa titan.costa at gmail.com
Mon May 21 02:42:57 CDT 2012


---
 dlls/d3drm/meshbuilder.c |    4 ++--
 dlls/d3drm/tests/d3drm.c |   26 ++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c
index bbe927d..4333516 100644
--- a/dlls/d3drm/meshbuilder.c
+++ b/dlls/d3drm/meshbuilder.c
@@ -2508,9 +2508,9 @@ static DWORD WINAPI IDirect3DRMMeshImpl_GetGroupCount(IDirect3DRMMesh* iface)
 {
     IDirect3DRMMeshImpl *This = impl_from_IDirect3DRMMesh(iface);
 
-    FIXME("(%p)->(): stub\n", This);
+    TRACE("(%p)->()\n", This);
 
-    return 0;
+    return This->nb_groups;
 }
 
 static HRESULT WINAPI IDirect3DRMMeshImpl_GetGroup(IDirect3DRMMesh* iface,
diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c
index 76cb790..ffe571a 100644
--- a/dlls/d3drm/tests/d3drm.c
+++ b/dlls/d3drm/tests/d3drm.c
@@ -172,6 +172,7 @@ static void test_MeshBuilder(void)
     HRESULT hr;
     LPDIRECT3DRM pD3DRM;
     LPDIRECT3DRMMESHBUILDER pMeshBuilder;
+    LPDIRECT3DRMMESH mesh;
     D3DRMLOADMEMORY info;
     int val;
     DWORD val1, val2, val3;
@@ -282,6 +283,19 @@ static void test_MeshBuilder(void)
     hr = IDirect3DRM_CreateMeshBuilder(pD3DRM, &pMeshBuilder);
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRMMeshBuilder interface (hr = %x)\n", hr);
 
+    /* No group in mesh when mesh builder is not loaded */
+    hr = IDirect3DRMMeshBuilder_CreateMesh(pMeshBuilder, &mesh);
+    ok(hr == D3DRM_OK, "CreateMesh failed returning hr = %x\n", hr);
+    if (hr == D3DRM_OK)
+    {
+        DWORD nb_groups;
+
+        nb_groups = IDirect3DRMMesh_GetGroupCount(mesh);
+        ok(nb_groups == 0, "GetCroupCount returned %u\n", nb_groups);
+
+        IDirect3DRMMesh_Release(mesh);
+    }
+
     info.lpMemory = data_full;
     info.dSize = strlen(data_full);
     hr = IDirect3DRMMeshBuilder_Load(pMeshBuilder, &info, NULL, D3DRMLOAD_FROMMEMORY, NULL, NULL);
@@ -325,6 +339,18 @@ static void test_MeshBuilder(void)
     ok(f[6] == 2 , "Wrong component f[6] = %d (expected 2)\n", f[6]);
     ok(f[7] == 0 , "Wrong component f[7] = %d (expected 0)\n", f[7]);
 
+    hr = IDirect3DRMMeshBuilder_CreateMesh(pMeshBuilder, &mesh);
+    ok(hr == D3DRM_OK, "CreateMesh failed returning hr = %x\n", hr);
+    if (hr == D3DRM_OK)
+    {
+        DWORD nb_groups;
+
+        nb_groups = IDirect3DRMMesh_GetGroupCount(mesh);
+        ok(nb_groups == 1, "GetCroupCount returned %u\n", nb_groups);
+
+        IDirect3DRMMesh_Release(mesh);
+    }
+
     hr = IDirect3DRMMeshBuilder_Scale(pMeshBuilder, 2, 3 ,4);
     ok(hr == D3DRM_OK, "Scale failed returning hr = %x\n", hr);
 




More information about the wine-patches mailing list