Commit a6ee6be9 authored by Max Kellermann's avatar Max Kellermann

TagPool: use the Mutex class instead of GStaticMutex

parent 47911f95
...@@ -145,9 +145,9 @@ static void tag_delete_item(struct tag *tag, unsigned idx) ...@@ -145,9 +145,9 @@ static void tag_delete_item(struct tag *tag, unsigned idx)
assert(idx < tag->num_items); assert(idx < tag->num_items);
tag->num_items--; tag->num_items--;
g_static_mutex_lock(&tag_pool_lock); tag_pool_lock.lock();
tag_pool_put_item(tag->items[idx]); tag_pool_put_item(tag->items[idx]);
g_static_mutex_unlock(&tag_pool_lock); tag_pool_lock.unlock();
if (tag->num_items - idx > 0) { if (tag->num_items - idx > 0) {
memmove(tag->items + idx, tag->items + idx + 1, memmove(tag->items + idx, tag->items + idx + 1,
...@@ -180,10 +180,10 @@ void tag_free(struct tag *tag) ...@@ -180,10 +180,10 @@ void tag_free(struct tag *tag)
assert(tag != nullptr); assert(tag != nullptr);
g_static_mutex_lock(&tag_pool_lock); tag_pool_lock.lock();
for (i = tag->num_items; --i >= 0; ) for (i = tag->num_items; --i >= 0; )
tag_pool_put_item(tag->items[i]); tag_pool_put_item(tag->items[i]);
g_static_mutex_unlock(&tag_pool_lock); tag_pool_lock.unlock();
if (tag->items == bulk.items) { if (tag->items == bulk.items) {
#ifndef NDEBUG #ifndef NDEBUG
...@@ -211,10 +211,10 @@ struct tag *tag_dup(const struct tag *tag) ...@@ -211,10 +211,10 @@ struct tag *tag_dup(const struct tag *tag)
? (struct tag_item **)g_malloc(items_size(tag)) ? (struct tag_item **)g_malloc(items_size(tag))
: nullptr; : nullptr;
g_static_mutex_lock(&tag_pool_lock); tag_pool_lock.lock();
for (unsigned i = 0; i < tag->num_items; i++) for (unsigned i = 0; i < tag->num_items; i++)
ret->items[i] = tag_pool_dup_item(tag->items[i]); ret->items[i] = tag_pool_dup_item(tag->items[i]);
g_static_mutex_unlock(&tag_pool_lock); tag_pool_lock.unlock();
return ret; return ret;
} }
...@@ -237,7 +237,7 @@ tag_merge(const struct tag *base, const struct tag *add) ...@@ -237,7 +237,7 @@ tag_merge(const struct tag *base, const struct tag *add)
? (struct tag_item **)g_malloc(items_size(ret)) ? (struct tag_item **)g_malloc(items_size(ret))
: nullptr; : nullptr;
g_static_mutex_lock(&tag_pool_lock); tag_pool_lock.lock();
/* copy all items from "add" */ /* copy all items from "add" */
...@@ -252,7 +252,7 @@ tag_merge(const struct tag *base, const struct tag *add) ...@@ -252,7 +252,7 @@ tag_merge(const struct tag *base, const struct tag *add)
if (!tag_has_type(add, base->items[i]->type)) if (!tag_has_type(add, base->items[i]->type))
ret->items[n++] = tag_pool_dup_item(base->items[i]); ret->items[n++] = tag_pool_dup_item(base->items[i]);
g_static_mutex_unlock(&tag_pool_lock); tag_pool_lock.unlock();
assert(n <= ret->num_items); assert(n <= ret->num_items);
...@@ -487,9 +487,9 @@ tag_add_item_internal(struct tag *tag, enum tag_type type, ...@@ -487,9 +487,9 @@ tag_add_item_internal(struct tag *tag, enum tag_type type,
items_size(tag) - sizeof(struct tag_item *)); items_size(tag) - sizeof(struct tag_item *));
} }
g_static_mutex_lock(&tag_pool_lock); tag_pool_lock.lock();
tag->items[i] = tag_pool_get_item(type, value, len); tag->items[i] = tag_pool_get_item(type, value, len);
g_static_mutex_unlock(&tag_pool_lock); tag_pool_lock.unlock();
g_free(p); g_free(p);
} }
......
...@@ -22,17 +22,7 @@ ...@@ -22,17 +22,7 @@
#include <assert.h> #include <assert.h>
#if GCC_CHECK_VERSION(4, 2) Mutex tag_pool_lock;
/* workaround for a warning caused by G_STATIC_MUTEX_INIT */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
#endif
GStaticMutex tag_pool_lock = G_STATIC_MUTEX_INIT;
#if GCC_CHECK_VERSION(4, 2)
#pragma GCC diagnostic pop
#endif
#define NUM_SLOTS 4096 #define NUM_SLOTS 4096
......
...@@ -21,10 +21,11 @@ ...@@ -21,10 +21,11 @@
#define MPD_TAG_POOL_HXX #define MPD_TAG_POOL_HXX
#include "tag.h" #include "tag.h"
#include "thread/Mutex.hxx"
#include <glib.h> #include <glib.h>
extern GStaticMutex tag_pool_lock; extern Mutex tag_pool_lock;
struct tag_item; struct tag_item;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment