Module: Mesa
Branch: master
Commit: 107a2ec9eef53dee038c1bcc0d956c5667e0b68f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=107a2ec9eef53dee038c1bcc0d956c5667e0b68f

Author: Brian Paul <[email protected]>
Date:   Tue Feb 16 08:21:38 2010 -0700

mesa: Lock mutex around _mesa_HashLookup linked list chase.

Remove const qualifier from _mesa_HashLookup() table parameter to
avoid LOCK/UNLOCK warnings in the function body.

Signed-off-by: Brian Paul <[email protected]>

(cherry picked from commit 3094adb3caeb90124359db2356df3bf8ee94800a)

---

 src/mesa/main/hash.c |    7 +++++--
 src/mesa/main/hash.h |    2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/hash.c b/src/mesa/main/hash.c
index 7c3c7a6..fdfbe6b 100644
--- a/src/mesa/main/hash.c
+++ b/src/mesa/main/hash.c
@@ -128,7 +128,7 @@ _mesa_DeleteHashTable(struct _mesa_HashTable *table)
  * \return pointer to user's data or NULL if key not in table
  */
 void *
-_mesa_HashLookup(const struct _mesa_HashTable *table, GLuint key)
+_mesa_HashLookup(struct _mesa_HashTable *table, GLuint key)
 {
    GLuint pos;
    const struct HashEntry *entry;
@@ -137,13 +137,16 @@ _mesa_HashLookup(const struct _mesa_HashTable *table, 
GLuint key)
    assert(key);
 
    pos = HASH_FUNC(key);
+   _glthread_LOCK_MUTEX(table->Mutex);
    entry = table->Table[pos];
    while (entry) {
       if (entry->Key == key) {
-        return entry->Data;
+         _glthread_UNLOCK_MUTEX(table->Mutex);
+         return entry->Data;
       }
       entry = entry->Next;
    }
+   _glthread_UNLOCK_MUTEX(table->Mutex);
    return NULL;
 }
 
diff --git a/src/mesa/main/hash.h b/src/mesa/main/hash.h
index d18db76..4f916f9 100644
--- a/src/mesa/main/hash.h
+++ b/src/mesa/main/hash.h
@@ -39,7 +39,7 @@ extern struct _mesa_HashTable *_mesa_NewHashTable(void);
 
 extern void _mesa_DeleteHashTable(struct _mesa_HashTable *table);
 
-extern void *_mesa_HashLookup(const struct _mesa_HashTable *table, GLuint key);
+extern void *_mesa_HashLookup(struct _mesa_HashTable *table, GLuint key);
 
 extern void _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void 
*data);
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to