Module: wine Branch: master Commit: 918abfef6a7a7e0d14fec9000205146af804b9e5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=918abfef6a7a7e0d14fec90002...
Author: Rico Schüller kgbricola@web.de Date: Mon Jul 22 14:35:34 2013 +0200
d3dx9: Merge get/is_valid_constant().
---
dlls/d3dx9_36/shader.c | 47 ++++++++++++++++------------------------------- 1 files changed, 16 insertions(+), 31 deletions(-)
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c index 8b089d2..6ad5f92 100644 --- a/dlls/d3dx9_36/shader.c +++ b/dlls/d3dx9_36/shader.c @@ -610,11 +610,6 @@ static inline BOOL is_vertex_shader(DWORD version) return (version & 0xffff0000) == 0xfffe0000; }
-static inline struct ctab_constant *constant_from_handle(D3DXHANDLE handle) -{ - return (struct ctab_constant *)handle; -} - static inline D3DXHANDLE handle_from_constant(struct ctab_constant *constant) { return (D3DXHANDLE)constant; @@ -708,54 +703,44 @@ static struct ctab_constant *get_constant_by_name(struct ID3DXConstantTableImpl return NULL; }
-static struct ctab_constant *is_valid_sub_constant(struct ctab_constant *parent, struct ctab_constant *constant) +static struct ctab_constant *is_valid_sub_constant(struct ctab_constant *parent, D3DXHANDLE handle) { + struct ctab_constant *c; UINT i, count;
- /* all variable have at least elements = 1, but no elements */ + /* all variable have at least elements = 1, but not always elements */ if (!parent->constants) return NULL;
- if (parent->desc.Elements > 1) count = parent->desc.Elements; - else count = parent->desc.StructMembers; - + count = parent->desc.Elements > 1 ? parent->desc.Elements : parent->desc.StructMembers; for (i = 0; i < count; ++i) { - if (&parent->constants[i] == constant) - return constant; + if (handle_from_constant(&parent->constants[i]) == handle) + return &parent->constants[i];
- if (is_valid_sub_constant(&parent->constants[i], constant)) - return constant; + c = is_valid_sub_constant(&parent->constants[i], handle); + if (c) return c; }
return NULL; }
-static inline struct ctab_constant *is_valid_constant(struct ID3DXConstantTableImpl *table, D3DXHANDLE handle) +static inline struct ctab_constant *get_valid_constant(struct ID3DXConstantTableImpl *table, D3DXHANDLE handle) { - struct ctab_constant *c = constant_from_handle(handle); + struct ctab_constant *c; UINT i;
- if (!c) return NULL; + if (!handle) return NULL;
for (i = 0; i < table->desc.Constants; ++i) { - if (&table->constants[i] == c) - return c; + if (handle_from_constant(&table->constants[i]) == handle) + return &table->constants[i];
- if (is_valid_sub_constant(&table->constants[i], c)) - return c; + c = is_valid_sub_constant(&table->constants[i], handle); + if (c) return c; }
- return NULL; -} - -static inline struct ctab_constant *get_valid_constant(struct ID3DXConstantTableImpl *table, D3DXHANDLE handle) -{ - struct ctab_constant *constant = is_valid_constant(table, handle); - - if (!constant) constant = get_constant_by_name(table, NULL, handle); - - return constant; + return get_constant_by_name(table, NULL, handle); }
static inline void set_float_shader_constant(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device,