[d3dx9 3/4] Implement ID3DXConstantTable::GetConstantByName

Matijn Woudt tijnema at gmail.com
Tue Jun 8 08:00:44 CDT 2010


Implement ID3DXConstantTable::GetConstantByName
-------------- next part --------------
From 57079be5c85a2b1dbe883faa8bd10a3c3cb0b575 Mon Sep 17 00:00:00 2001
From: Matijn Woudt <tijnema at gmail.com>
Date: Tue, 8 Jun 2010 14:48:40 +0200
Subject: [d3dx9 3/4] Implement ID3DXConstantTable::GetConstantByName

---
 dlls/d3dx9_36/shader.c       |   12 +++++++++++-
 dlls/d3dx9_36/tests/shader.c |    2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index 63732a6..6ac5f75 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -792,8 +792,18 @@ static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstant(ID3DXConstantTable*
 static D3DXHANDLE WINAPI ID3DXConstantTableImpl_GetConstantByName(ID3DXConstantTable* iface, D3DXHANDLE constant, LPCSTR name)
 {
     ID3DXConstantTableImpl *This = (ID3DXConstantTableImpl *)iface;
+    UINT i;
 
-    FIXME("(%p)->(%p, %s): stub\n", This, constant, name);
+    TRACE("(%p)->(%p, %s)\n", This, constant, name);
+
+    if(constant)
+        FIXME("Parent used\n");
+
+    for(i = 0; i < This->desc.Constants; i++) {
+        if(!lstrcmpA(name, (LPCSTR)This->ctab + This->ConstantInfo[i].Name)) {
+            return (D3DXHANDLE)&This->ConstantInfo[i];
+        }
+    }
 
     return NULL;
 }
diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c
index c2cc5f9..e7f63c5 100644
--- a/dlls/d3dx9_36/tests/shader.c
+++ b/dlls/d3dx9_36/tests/shader.c
@@ -199,7 +199,7 @@ static void test_get_shader_constant_table_ex(void)
         ok(constant == NULL, "Got result %p, expected NULL\n", constant);
 
         constant = ID3DXConstantTable_GetConstantByName(constant_table, NULL, "fTime");
-        todo_wine ok(constant != NULL, "GetConstantByName failed.\n");
+        ok(constant != NULL, "GetConstantByName failed.\n");
 
         constant = ID3DXConstantTable_GetConstantByName(constant_table, NULL, "fTIME");
         ok(constant == NULL, "Got result %p, expected NULL\n", constant);
-- 
1.7.0.4


More information about the wine-patches mailing list