summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2015-07-30 14:24:07 -0700
committerMatt Turner <mattst88@gmail.com>2016-05-20 10:05:09 -0700
commitaded1160e5e722610dd474583d78e745291cbd75 (patch)
tree5cdcbd31664de9b4e4b3979852c681f66cd24bac
parentfb5dcb81cc121e4355b7eef014474a5c42a2f6db (diff)
hash: Add _mesa_HashRemoveLocked() function.
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au> Reviewed-by: Brian Paul <brianp@vmware.com>
-rw-r--r--src/mesa/main/hash.c19
-rw-r--r--src/mesa/main/hash.h2
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),