[PATCH] d3dx9: Implement D3DXFrameFind()

Nikolay Sivov nsivov at codeweavers.com
Sat Nov 4 19:48:41 CDT 2017


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/d3dx9_24/d3dx9_24.spec |  2 +-
 dlls/d3dx9_25/d3dx9_25.spec |  2 +-
 dlls/d3dx9_26/d3dx9_26.spec |  2 +-
 dlls/d3dx9_27/d3dx9_27.spec |  2 +-
 dlls/d3dx9_28/d3dx9_28.spec |  2 +-
 dlls/d3dx9_29/d3dx9_29.spec |  2 +-
 dlls/d3dx9_30/d3dx9_30.spec |  2 +-
 dlls/d3dx9_31/d3dx9_31.spec |  2 +-
 dlls/d3dx9_32/d3dx9_32.spec |  2 +-
 dlls/d3dx9_33/d3dx9_33.spec |  2 +-
 dlls/d3dx9_34/d3dx9_34.spec |  2 +-
 dlls/d3dx9_35/d3dx9_35.spec |  2 +-
 dlls/d3dx9_36/d3dx9_36.spec |  2 +-
 dlls/d3dx9_36/mesh.c        | 78 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/d3dx9_36/tests/mesh.c  | 76 +++++++++++++++++++++++++++++++++++++++++++
 dlls/d3dx9_37/d3dx9_37.spec |  2 +-
 dlls/d3dx9_38/d3dx9_38.spec |  2 +-
 dlls/d3dx9_39/d3dx9_39.spec |  2 +-
 dlls/d3dx9_40/d3dx9_40.spec |  2 +-
 dlls/d3dx9_41/d3dx9_41.spec |  2 +-
 dlls/d3dx9_42/d3dx9_42.spec |  2 +-
 dlls/d3dx9_43/d3dx9_43.spec |  2 +-
 22 files changed, 174 insertions(+), 20 deletions(-)

diff --git a/dlls/d3dx9_24/d3dx9_24.spec b/dlls/d3dx9_24/d3dx9_24.spec
index b524fadf93..0ca8777efe 100644
--- a/dlls/d3dx9_24/d3dx9_24.spec
+++ b/dlls/d3dx9_24/d3dx9_24.spec
@@ -132,7 +132,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_25/d3dx9_25.spec b/dlls/d3dx9_25/d3dx9_25.spec
index 9344e44d68..a5449810a4 100644
--- a/dlls/d3dx9_25/d3dx9_25.spec
+++ b/dlls/d3dx9_25/d3dx9_25.spec
@@ -132,7 +132,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_26/d3dx9_26.spec b/dlls/d3dx9_26/d3dx9_26.spec
index 7a28ca6e7e..9e1200442f 100644
--- a/dlls/d3dx9_26/d3dx9_26.spec
+++ b/dlls/d3dx9_26/d3dx9_26.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_27/d3dx9_27.spec b/dlls/d3dx9_27/d3dx9_27.spec
index 7a28ca6e7e..9e1200442f 100644
--- a/dlls/d3dx9_27/d3dx9_27.spec
+++ b/dlls/d3dx9_27/d3dx9_27.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_28/d3dx9_28.spec b/dlls/d3dx9_28/d3dx9_28.spec
index da49c9e23b..b316a23baf 100644
--- a/dlls/d3dx9_28/d3dx9_28.spec
+++ b/dlls/d3dx9_28/d3dx9_28.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_29/d3dx9_29.spec b/dlls/d3dx9_29/d3dx9_29.spec
index da49c9e23b..b316a23baf 100644
--- a/dlls/d3dx9_29/d3dx9_29.spec
+++ b/dlls/d3dx9_29/d3dx9_29.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_30/d3dx9_30.spec b/dlls/d3dx9_30/d3dx9_30.spec
index c8648fb984..e00fa54786 100644
--- a/dlls/d3dx9_30/d3dx9_30.spec
+++ b/dlls/d3dx9_30/d3dx9_30.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_31/d3dx9_31.spec b/dlls/d3dx9_31/d3dx9_31.spec
index 7f881ddaf8..d308939ef6 100644
--- a/dlls/d3dx9_31/d3dx9_31.spec
+++ b/dlls/d3dx9_31/d3dx9_31.spec
@@ -135,7 +135,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_32/d3dx9_32.spec b/dlls/d3dx9_32/d3dx9_32.spec
index 2f51ece333..c2292dff39 100644
--- a/dlls/d3dx9_32/d3dx9_32.spec
+++ b/dlls/d3dx9_32/d3dx9_32.spec
@@ -135,7 +135,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_33/d3dx9_33.spec b/dlls/d3dx9_33/d3dx9_33.spec
index 2f51ece333..c2292dff39 100644
--- a/dlls/d3dx9_33/d3dx9_33.spec
+++ b/dlls/d3dx9_33/d3dx9_33.spec
@@ -135,7 +135,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_34/d3dx9_34.spec b/dlls/d3dx9_34/d3dx9_34.spec
index 2f51ece333..c2292dff39 100644
--- a/dlls/d3dx9_34/d3dx9_34.spec
+++ b/dlls/d3dx9_34/d3dx9_34.spec
@@ -135,7 +135,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_35/d3dx9_35.spec b/dlls/d3dx9_35/d3dx9_35.spec
index 2f51ece333..c2292dff39 100644
--- a/dlls/d3dx9_35/d3dx9_35.spec
+++ b/dlls/d3dx9_35/d3dx9_35.spec
@@ -135,7 +135,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 0408ff9ffd..0fdf4e135e 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index c26aa7271f..cf476f3553 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -7555,3 +7555,81 @@ HRESULT WINAPI D3DXConvertMeshSubsetToSingleStrip(struct ID3DXBaseMesh *mesh_in,
 
     return E_NOTIMPL;
 }
+
+struct frame_node
+{
+    struct list entry;
+    D3DXFRAME *frame;
+};
+
+static BOOL queue_frame_node(struct list *queue, D3DXFRAME *frame)
+{
+    if (!frame)
+        return TRUE;
+
+    while (frame)
+    {
+        struct frame_node *node = HeapAlloc(GetProcessHeap(), 0, sizeof(*node));
+        if (!node)
+            return FALSE;
+        node->frame = frame;
+        list_add_tail(queue, &node->entry);
+        frame = frame->pFrameSibling;
+    }
+
+    return TRUE;
+}
+
+static void empty_frame_queue(struct list *queue)
+{
+    struct frame_node *cur, *cur2;
+    LIST_FOR_EACH_ENTRY_SAFE(cur, cur2, queue, struct frame_node, entry)
+    {
+        list_remove(&cur->entry);
+        HeapFree(GetProcessHeap(), 0, cur);
+    }
+}
+
+D3DXFRAME * WINAPI D3DXFrameFind(const D3DXFRAME *root, const char *name)
+{
+    D3DXFRAME *found = NULL;
+    struct list queue;
+
+    TRACE("root frame %p, name %s.\n", root, debugstr_a(name));
+
+    if (!root)
+        return NULL;
+
+    list_init(&queue);
+    if (!queue_frame_node(&queue, (D3DXFRAME *)root))
+    {
+        empty_frame_queue(&queue);
+        return NULL;
+    }
+
+    while (!list_empty(&queue))
+    {
+        struct frame_node *node = LIST_ENTRY(list_head(&queue), struct frame_node, entry);
+        BOOL ret;
+
+        list_remove(&node->entry);
+
+        if ((name && node->frame->Name && !strcmp(node->frame->Name, name)) ||
+                (!name && !node->frame->Name))
+        {
+            found = node->frame;
+            HeapFree(GetProcessHeap(), 0, node);
+            break;
+        }
+
+        /* Enqueue children */
+        ret = queue_frame_node(&queue, node->frame->pFrameFirstChild);
+        HeapFree(GetProcessHeap(), 0, node);
+        if (!ret)
+            break;
+    }
+
+    empty_frame_queue(&queue);
+
+    return found;
+}
diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c
index 95dd06e466..d0b1adb00e 100644
--- a/dlls/d3dx9_36/tests/mesh.c
+++ b/dlls/d3dx9_36/tests/mesh.c
@@ -11188,6 +11188,81 @@ static void D3DXCreateAnimationControllerTest(void)
     animation->lpVtbl->Release(animation);
 }
 
+static void test_D3DXFrameFind(void)
+{
+    static char n1[] = "name1";
+    static char n2[] = "name2";
+    static char n3[] = "name3";
+    static char n4[] = "name4";
+    static char n5[] = "name5";
+    static char n6[] = "name6";
+    static char N1[] = "Name1";
+    D3DXFRAME root, sibling, sibling2, child, *ret;
+    D3DXFRAME child2, child3;
+
+    ret = D3DXFrameFind(NULL, NULL);
+    ok(ret == NULL, "Unexpected frame, %p.\n", ret);
+
+    ret = D3DXFrameFind(NULL, "test");
+    ok(ret == NULL, "Unexpected frame, %p.\n", ret);
+
+    memset(&root, 0, sizeof(root));
+
+    ret = D3DXFrameFind(&root, NULL);
+    ok(ret == &root, "Unexpected frame, %p.\n", ret);
+
+    root.Name = n1;
+    ret = D3DXFrameFind(&root, NULL);
+    ok(ret == NULL, "Unexpected frame, %p.\n", ret);
+
+    ret = D3DXFrameFind(&root, n1);
+    ok(ret == &root, "Unexpected frame, %p.\n", ret);
+
+    ret = D3DXFrameFind(&root, N1);
+    ok(ret == NULL, "Unexpected frame, %p.\n", ret);
+
+    /* Test siblings order traversal. */
+    memset(&sibling, 0, sizeof(sibling));
+    sibling.Name = n2;
+    root.pFrameSibling = &sibling;
+    ret = D3DXFrameFind(&root, n2);
+    ok(ret == &sibling, "Unexpected frame, %p.\n", ret);
+
+    memset(&sibling2, 0, sizeof(sibling2));
+    sibling2.Name = n2;
+    sibling.pFrameSibling = &sibling2;
+    ret = D3DXFrameFind(&root, n2);
+    ok(ret == &sibling, "Unexpected frame, %p.\n", ret);
+
+    sibling2.Name = n3;
+    ret = D3DXFrameFind(&root, n3);
+    ok(ret == &sibling2, "Unexpected frame, %p.\n", ret);
+
+    /* Siblings first. */
+    memset(&child, 0, sizeof(child));
+    child.Name = n2;
+    root.pFrameFirstChild = &child;
+    ret = D3DXFrameFind(&root, n2);
+    ok(ret == &sibling, "Unexpected frame, %p.\n", ret);
+
+    child.Name = n4;
+    ret = D3DXFrameFind(&root, n4);
+    ok(ret == &child, "Unexpected frame, %p.\n", ret);
+
+    /* Link a grandchild and another one for sibling. */
+    memset(&child2, 0, sizeof(child2));
+    memset(&child3, 0, sizeof(child3));
+    child2.Name = child3.Name = n5;
+    sibling.pFrameFirstChild = &child2;
+    child.pFrameFirstChild = &child3;
+    ret = D3DXFrameFind(&root, n5);
+    ok(ret == &child2, "Unexpected frame, %p.\n", ret);
+
+    child3.Name = n6;
+    ret = D3DXFrameFind(&root, n6);
+    ok(ret == &child3, "Unexpected frame, %p.\n", ret);
+}
+
 START_TEST(mesh)
 {
     D3DXBoundProbeTest();
@@ -11218,4 +11293,5 @@ START_TEST(mesh)
     test_valid_mesh();
     test_optimize_faces();
     test_compute_normals();
+    test_D3DXFrameFind();
 }
diff --git a/dlls/d3dx9_37/d3dx9_37.spec b/dlls/d3dx9_37/d3dx9_37.spec
index 0408ff9ffd..0fdf4e135e 100644
--- a/dlls/d3dx9_37/d3dx9_37.spec
+++ b/dlls/d3dx9_37/d3dx9_37.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_38/d3dx9_38.spec b/dlls/d3dx9_38/d3dx9_38.spec
index 0408ff9ffd..0fdf4e135e 100644
--- a/dlls/d3dx9_38/d3dx9_38.spec
+++ b/dlls/d3dx9_38/d3dx9_38.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_39/d3dx9_39.spec b/dlls/d3dx9_39/d3dx9_39.spec
index 0408ff9ffd..0fdf4e135e 100644
--- a/dlls/d3dx9_39/d3dx9_39.spec
+++ b/dlls/d3dx9_39/d3dx9_39.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_40/d3dx9_40.spec b/dlls/d3dx9_40/d3dx9_40.spec
index 0408ff9ffd..0fdf4e135e 100644
--- a/dlls/d3dx9_40/d3dx9_40.spec
+++ b/dlls/d3dx9_40/d3dx9_40.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_41/d3dx9_41.spec b/dlls/d3dx9_41/d3dx9_41.spec
index 0408ff9ffd..0fdf4e135e 100644
--- a/dlls/d3dx9_41/d3dx9_41.spec
+++ b/dlls/d3dx9_41/d3dx9_41.spec
@@ -136,7 +136,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_42/d3dx9_42.spec b/dlls/d3dx9_42/d3dx9_42.spec
index 23bb40d7b1..2f2ac5fd61 100644
--- a/dlls/d3dx9_42/d3dx9_42.spec
+++ b/dlls/d3dx9_42/d3dx9_42.spec
@@ -134,7 +134,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
diff --git a/dlls/d3dx9_43/d3dx9_43.spec b/dlls/d3dx9_43/d3dx9_43.spec
index 23bb40d7b1..2f2ac5fd61 100644
--- a/dlls/d3dx9_43/d3dx9_43.spec
+++ b/dlls/d3dx9_43/d3dx9_43.spec
@@ -134,7 +134,7 @@
 @ stub D3DXFrameAppendChild(ptr ptr)
 @ stub D3DXFrameCalculateBoundingSphere(ptr ptr ptr)
 @ stdcall D3DXFrameDestroy(ptr ptr)
-@ stub D3DXFrameFind(ptr str)
+@ stdcall D3DXFrameFind(ptr str)
 @ stub D3DXFrameNumNamedMatrices(ptr)
 @ stub D3DXFrameRegisterNamedMatrices(ptr ptr)
 @ stdcall D3DXFresnelTerm(float float)
-- 
2.14.2




More information about the wine-patches mailing list