From b828531d8b6da75a258d12f97df0f4e49f75ab98 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 4 Sep 2013 16:27:02 +0200 Subject: fontconfig xkeyboard-config git update 4 Sep 2013 xkeyboard-config commit 8f49c92c54c53eab6d40d8be90ce06773d20d196 fontconfig commit 6720892e97f11fbe8d69ae5b3875d928c68ff90e mesa commit 51a279254fecc05691524dab1bf291c7dfefccd5 --- mesalib/src/mesa/main/hash.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'mesalib/src/mesa/main/hash.c') diff --git a/mesalib/src/mesa/main/hash.c b/mesalib/src/mesa/main/hash.c index 6591af9a6..b31fd4839 100644 --- a/mesalib/src/mesa/main/hash.c +++ b/mesalib/src/mesa/main/hash.c @@ -301,6 +301,34 @@ _mesa_HashDeleteAll(struct _mesa_HashTable *table, } +/** + * Clone all entries in a hash table, into a new table. + * + * \param table the hash table to clone + */ +struct _mesa_HashTable * +_mesa_HashClone(const struct _mesa_HashTable *table) +{ + /* cast-away const */ + struct _mesa_HashTable *table2 = (struct _mesa_HashTable *) table; + struct hash_entry *entry; + struct _mesa_HashTable *clonetable; + + ASSERT(table); + _glthread_LOCK_MUTEX(table2->Mutex); + + clonetable = _mesa_NewHashTable(); + assert(clonetable); + hash_table_foreach(table->ht, entry) { + _mesa_HashInsert(clonetable, (GLint)(uintptr_t)entry->key, entry->data); + } + + _glthread_UNLOCK_MUTEX(table2->Mutex); + + return clonetable; +} + + /** * Walk over all entries in a hash table, calling callback function for each. * Note: we use a separate mutex in this function to avoid a recursive -- cgit v1.2.3