Rico Schüller : d3dx9: Implement ID3DXBaseEffect:: GetParameterBySemantic().
Alexandre Julliard
julliard at winehq.org
Thu May 5 12:08:07 CDT 2011
Module: wine
Branch: master
Commit: f0da0f80663ab670c0d8abfb58073cd836dd2a43
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f0da0f80663ab670c0d8abfb58073cd836dd2a43
Author: Rico Schüller <kgbricola at web.de>
Date: Thu May 5 11:30:23 2011 +0200
d3dx9: Implement ID3DXBaseEffect::GetParameterBySemantic().
---
dlls/d3dx9_36/effect.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 55 insertions(+), 1 deletions(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index 5ad078e..27f22b2 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -809,8 +809,62 @@ static D3DXHANDLE WINAPI ID3DXBaseEffectImpl_GetParameterByName(ID3DXBaseEffect
static D3DXHANDLE WINAPI ID3DXBaseEffectImpl_GetParameterBySemantic(ID3DXBaseEffect *iface, D3DXHANDLE parameter, LPCSTR semantic)
{
struct ID3DXBaseEffectImpl *This = impl_from_ID3DXBaseEffect(iface);
+ struct d3dx_parameter *param = is_valid_parameter(This, parameter);
+ struct d3dx_parameter *temp_param;
+ UINT i;
+
+ TRACE("iface %p, parameter %p, semantic %s\n", This, parameter, debugstr_a(semantic));
+
+ if (!param) param = get_parameter_by_name(This, NULL, parameter);
+
+ if (!parameter)
+ {
+ for (i = 0; i < This->parameter_count; ++i)
+ {
+ temp_param = get_parameter_struct(This->parameter_handles[i]);
- FIXME("iface %p, parameter %p, semantic %s stub\n", This, parameter, debugstr_a(semantic));
+ if (!temp_param->semantic)
+ {
+ if (!semantic)
+ {
+ TRACE("Returning parameter %p\n", This->parameter_handles[i]);
+ return This->parameter_handles[i];
+ }
+ continue;
+ }
+
+ if (!strcasecmp(temp_param->semantic, semantic))
+ {
+ TRACE("Returning parameter %p\n", This->parameter_handles[i]);
+ return This->parameter_handles[i];
+ }
+ }
+ }
+ else if (param)
+ {
+ for (i = 0; i < param->member_count; ++i)
+ {
+ temp_param = get_parameter_struct(param->member_handles[i]);
+
+ if (!temp_param->semantic)
+ {
+ if (!semantic)
+ {
+ TRACE("Returning parameter %p\n", param->member_handles[i]);
+ return param->member_handles[i];
+ }
+ continue;
+ }
+
+ if (!strcasecmp(temp_param->semantic, semantic))
+ {
+ TRACE("Returning parameter %p\n", param->member_handles[i]);
+ return param->member_handles[i];
+ }
+ }
+ }
+
+ WARN("Invalid argument specified\n");
return NULL;
}
More information about the wine-cvs
mailing list