Module: wine Branch: master Commit: 823d1fbc3887ab4b52b88555a8ef954f617b6194 URL: http://source.winehq.org/git/wine.git/?a=commit;h=823d1fbc3887ab4b52b88555a8...
Author: Rico Schüller kgbricola@web.de Date: Wed Sep 5 22:51:42 2012 +0200
d3dx9: Move bool cropping into helper function.
---
dlls/d3dx9_36/effect.c | 5 ++--- dlls/d3dx9_36/util.c | 20 +++++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index f3a5549..a6dcd98 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -1649,8 +1649,6 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetBool(ID3DXBaseEffect *iface, D3DXHA
if (param && !param->element_count && param->rows == 1 && param->columns == 1) { - /* crop input */ - b = b != 0; set_number(param->data, param->type, &b, D3DXPT_BOOL); return D3D_OK; } @@ -1699,7 +1697,8 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetBoolArray(ID3DXBaseEffect *iface, D case D3DXPC_MATRIX_ROWS: for (i = 0; i < size; ++i) { - set_number((DWORD *)param->data + i, param->type, &b[i], D3DXPT_BOOL); + /* don't crop the input, use D3DXPT_INT instead of D3DXPT_BOOL */ + set_number((DWORD *)param->data + i, param->type, &b[i], D3DXPT_INT); } return D3D_OK;
diff --git a/dlls/d3dx9_36/util.c b/dlls/d3dx9_36/util.c index 6daddd7..c5160fa 100644 --- a/dlls/d3dx9_36/util.c +++ b/dlls/d3dx9_36/util.c @@ -271,6 +271,11 @@ const char *debug_d3dxparameter_registerset(D3DXREGISTER_SET r) #undef WINE_D3DX_TO_STR
/* parameter type conversion helpers */ +BOOL get_bool(LPCVOID data) +{ + return (*(DWORD *)data) != 0; +} + INT get_int(D3DXPARAMETER_TYPE type, LPCVOID data) { INT i; @@ -286,7 +291,7 @@ INT get_int(D3DXPARAMETER_TYPE type, LPCVOID data) break;
case D3DXPT_BOOL: - i = *(BOOL *)data; + i = get_bool(data); break;
default: @@ -313,7 +318,7 @@ FLOAT get_float(D3DXPARAMETER_TYPE type, LPCVOID data) break;
case D3DXPT_BOOL: - f = *(BOOL *)data; + f = get_bool(data); break;
default: @@ -325,15 +330,16 @@ FLOAT get_float(D3DXPARAMETER_TYPE type, LPCVOID data) return f; }
-BOOL get_bool(LPCVOID data) -{ - return (*(DWORD *)data) != 0; -} - void set_number(LPVOID outdata, D3DXPARAMETER_TYPE outtype, LPCVOID indata, D3DXPARAMETER_TYPE intype) { TRACE("Changing from type %s to type %s\n", debug_d3dxparameter_type(intype), debug_d3dxparameter_type(outtype));
+ if (outtype == intype) + { + *(DWORD *)outdata = *(DWORD *)indata; + return; + } + switch (outtype) { case D3DXPT_FLOAT: