diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index f11b755502f..fefb3b45310 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -605,8 +605,28 @@ static D3DXHANDLE WINAPI ID3DXBaseEffectImpl_GetTechnique(ID3DXBaseEffect *iface static D3DXHANDLE WINAPI ID3DXBaseEffectImpl_GetTechniqueByName(ID3DXBaseEffect *iface, LPCSTR name) { struct ID3DXBaseEffectImpl *This = impl_from_ID3DXBaseEffect(iface); + unsigned int i; - FIXME("iface %p, name %s stub\n", This, debugstr_a(name)); + TRACE("iface %p, name %s stub\n", This, debugstr_a(name)); + + if (!name) + { + WARN("Invalid argument specified.\n"); + return NULL; + } + + for (i = 0; i < This->technique_count; ++i) + { + struct d3dx_technique *tech = get_technique_struct(This->technique_handles[i]); + + if (!strcmp(tech->name, name)) + { + TRACE("Returning technique %p\n", This->technique_handles[i]); + return This->technique_handles[i]; + } + } + + WARN("Invalid argument specified.\n"); return NULL; }