Henri Verbeet : wined3d: Add some basic state table validation.

Alexandre Julliard julliard at winehq.org
Fri Jan 29 10:56:32 CST 2010


Module: wine
Branch: master
Commit: 19516bf69f905c6d63f49744117edc240d357f39
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=19516bf69f905c6d63f49744117edc240d357f39

Author: Henri Verbeet <hverbeet at 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:




More information about the wine-cvs mailing list