[Mesa-dev] [PATCH 03/15] mesa: Add a clone function to mesa hash
Brian Paul
brianp at vmware.com
Mon Aug 26 07:51:32 PDT 2013
On 08/26/2013 04:43 AM, Timothy Arceri wrote:
>
> Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
> ---
> src/mesa/main/hash.c | 26 ++++++++++++++++++++++++++
> src/mesa/main/hash.h | 3 +++
> 2 files changed, 29 insertions(+)
>
> diff --git a/src/mesa/main/hash.c b/src/mesa/main/hash.c
> index 6591af9..8dde8b1 100644
> --- a/src/mesa/main/hash.c
> +++ b/src/mesa/main/hash.c
> @@ -302,6 +302,32 @@ _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(struct _mesa_HashTable *table)
Can that be const qualified?
> +{
> + struct hash_entry *entry;
> + struct _mesa_HashTable *clonetable;
> +
> + ASSERT(table);
> + _glthread_LOCK_MUTEX(table->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(table->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
> * locking deadlock (in case the callback calls _mesa_HashRemove()) and to
> diff --git a/src/mesa/main/hash.h b/src/mesa/main/hash.h
> index 142d284..9208701 100644
> --- a/src/mesa/main/hash.h
> +++ b/src/mesa/main/hash.h
> @@ -50,6 +50,9 @@ _mesa_HashDeleteAll(struct _mesa_HashTable *table,
> void (*callback)(GLuint key, void *data, void *userData),
> void *userData);
>
> +extern struct _mesa_HashTable *
> +_mesa_HashClone(struct _mesa_HashTable *table);
> +
> extern void
> _mesa_HashWalk(const struct _mesa_HashTable *table,
> void (*callback)(GLuint key, void *data, void *userData),
>
More information about the mesa-dev
mailing list