Reviewed-by: Timothy Arceri <t_arc...@yahoo.com.au> Reviewed-by: Brian Paul <bri...@vmware.com> --- I sent these last summer as part of a larger (13) patch series. The middle of that series was rejected, and I committed the first 4 patches last year. These two, from the end of the series should still be useful and valid.
src/mesa/main/hash.c | 19 +++++++++++++++---- src/mesa/main/hash.h | 2 ++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/hash.c b/src/mesa/main/hash.c index ab1b9e9..85c29cd 100644 --- a/src/mesa/main/hash.c +++ b/src/mesa/main/hash.c @@ -328,8 +328,8 @@ _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data) * While holding the hash table's lock, searches the entry with the matching * key and unlinks it. */ -void -_mesa_HashRemove(struct _mesa_HashTable *table, GLuint key) +static inline void +_mesa_HashRemove_unlocked(struct _mesa_HashTable *table, GLuint key) { struct hash_entry *entry; @@ -343,17 +343,28 @@ _mesa_HashRemove(struct _mesa_HashTable *table, GLuint key) return; } - mtx_lock(&table->Mutex); if (key == DELETED_KEY_VALUE) { table->deleted_key_data = NULL; } else { entry = _mesa_hash_table_search(table->ht, uint_key(key)); _mesa_hash_table_remove(table->ht, entry); } - mtx_unlock(&table->Mutex); } +void +_mesa_HashRemoveLocked(struct _mesa_HashTable *table, GLuint key) +{ + _mesa_HashRemove_unlocked(table, key); +} + +void +_mesa_HashRemove(struct _mesa_HashTable *table, GLuint key) +{ + mtx_lock(&table->Mutex); + _mesa_HashRemove_unlocked(table, key); + mtx_unlock(&table->Mutex); +} /** * Delete all entries in a hash table, but don't delete the table itself. diff --git a/src/mesa/main/hash.h b/src/mesa/main/hash.h index da3b997..52a6c5d 100644 --- a/src/mesa/main/hash.h +++ b/src/mesa/main/hash.h @@ -54,6 +54,8 @@ extern void *_mesa_HashLookupLocked(struct _mesa_HashTable *table, GLuint key); extern void _mesa_HashInsertLocked(struct _mesa_HashTable *table, GLuint key, void *data); +extern void _mesa_HashRemoveLocked(struct _mesa_HashTable *table, GLuint key); + extern void _mesa_HashDeleteAll(struct _mesa_HashTable *table, void (*callback)(GLuint key, void *data, void *userData), -- 2.7.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev