diff options
-rw-r--r-- | src/mesa/main/hash.c | 19 | ||||
-rw-r--r-- | 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 ab1b9e907ae..85c29cd1c7d 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 da3b9973d24..52a6c5d9ddc 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), |