Henri Verbeet : wined3d: Add some basic state table validation.
Module: wine Branch: master Commit: 19516bf69f905c6d63f49744117edc240d357f39 URL: http://source.winehq.org/git/wine.git/?a=commit;h=19516bf69f905c6d63f4974411... Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Jan 28 23:40:24 2010 +0100 wined3d: Add some basic state table validation. --- dlls/wined3d/state.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 35482ee..17a6704 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -5685,6 +5685,22 @@ static void multistate_apply_3(DWORD state, IWineD3DStateBlockImpl *stateblock, stateblock->device->multistate_funcs[state][2](state, stateblock, context); } +static void validate_state_table(struct StateEntry *state_table) +{ + unsigned int i; + + for (i = 0; i < STATE_HIGHEST + 1; ++i) + { + DWORD rep = state_table[i].representative; + if (rep && !state_table[rep].representative) + { + ERR("State %s (%#x) has invalid representative %s (%#x).\n", + debug_d3dstate(i), i, debug_d3dstate(rep), rep); + state_table[i].representative = 0; + } + } +} + HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_multistate_funcs, const struct wined3d_gl_info *gl_info, const struct StateEntryTemplate *vertex, const struct fragment_pipeline *fragment, const struct StateEntryTemplate *misc) @@ -5784,6 +5800,8 @@ HRESULT compile_state_table(struct StateEntry *StateTable, APPLYSTATEFUNC **dev_ } } + validate_state_table(StateTable); + return WINED3D_OK; out_of_mem:
participants (1)
-
Alexandre Julliard