wined3d: Use a hashmap to store the ffp shaders.
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 66e5a32..5b19acc 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -68,7 +68,7 @@
} hash_table_t;
hash_table_t *hash_table_create(hash_function_t *hash_function, compare_function_t *compare_function);
-void hash_table_destroy(hash_table_t *table);
+void hash_table_destroy(hash_table_t *table, void (*free_value)(void *value, void *cb), void *cb);
void *hash_table_get(hash_table_t *table, void *key);
void hash_table_put(hash_table_t *table, void *key, void *value);
void hash_table_remove(hash_table_t *table, void *key);
@@ -761,12 +761,13 @@
struct ffp_desc
{
struct ffp_settings settings;
- struct list entry;
};
void gen_ffp_op(IWineD3DStateBlockImpl *stateblock, struct ffp_settings *settings, BOOL ignore_textype);
-struct ffp_desc *find_ffp_shader(struct list *shaders, struct ffp_settings *settings);
-void add_ffp_shader(struct list *shaders, struct ffp_desc *desc);
+struct ffp_desc *find_ffp_shader(hash_table_t *fragment_shaders, struct ffp_settings *settings);
+void add_ffp_shader(hash_table_t *shaders, struct ffp_desc *desc);
+BOOL ffp_program_key_compare(void *keya, void *keyb);
+unsigned int ffp_program_key_hash(void *key);
/*****************************************************************************
* IWineD3D implementation structure