summaryrefslogtreecommitdiff
path: root/gobject
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2011-09-17 19:32:57 -0400
committerRyan Lortie <desrt@desrt.ca>2011-09-21 16:06:53 -0400
commit1da913a7a3f120d7097a7474f7cccbeeb1a8383c (patch)
tree4e07c5e333512e759633af8b6041bfe4d1637f9b /gobject
parent806de91cd55c7ba2599a637346dbecd3bb3a5562 (diff)
GParamSpecPool: port from GStaticMutex to GMutex
Diffstat (limited to 'gobject')
-rw-r--r--gobject/gparam.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/gobject/gparam.c b/gobject/gparam.c
index b3d44da14..ec4cb89e0 100644
--- a/gobject/gparam.c
+++ b/gobject/gparam.c
@@ -55,9 +55,6 @@
#define PARAM_FLOATING_FLAG 0x2
#define G_PARAM_USER_MASK (~0 << G_PARAM_USER_SHIFT)
#define PSPEC_APPLIES_TO_VALUE(pspec, value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_PARAM_SPEC_VALUE_TYPE (pspec)))
-#define G_SLOCK(mutex) g_static_mutex_lock (mutex)
-#define G_SUNLOCK(mutex) g_static_mutex_unlock (mutex)
-
/* --- prototypes --- */
static void g_param_spec_class_base_init (GParamSpecClass *class);
@@ -849,7 +846,7 @@ value_param_lcopy_value (const GValue *value,
*/
struct _GParamSpecPool
{
- GStaticMutex smutex;
+ GMutex mutex;
gboolean type_prefixing;
GHashTable *hash_table;
};
@@ -894,10 +891,10 @@ param_spec_pool_equals (gconstpointer key_spec_1,
GParamSpecPool*
g_param_spec_pool_new (gboolean type_prefixing)
{
- static GStaticMutex init_smutex = G_STATIC_MUTEX_INIT;
+ static GMutex init_mutex = G_MUTEX_INIT;
GParamSpecPool *pool = g_new (GParamSpecPool, 1);
- memcpy (&pool->smutex, &init_smutex, sizeof (init_smutex));
+ memcpy (&pool->mutex, &init_mutex, sizeof (init_mutex));
pool->type_prefixing = type_prefixing != FALSE;
pool->hash_table = g_hash_table_new (param_spec_pool_hash, param_spec_pool_equals);
@@ -929,11 +926,11 @@ g_param_spec_pool_insert (GParamSpecPool *pool,
return;
}
}
- G_SLOCK (&pool->smutex);
+ g_mutex_lock (&pool->mutex);
pspec->owner_type = owner_type;
g_param_spec_ref (pspec);
g_hash_table_insert (pool->hash_table, pspec, pspec);
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
}
else
{
@@ -957,12 +954,12 @@ g_param_spec_pool_remove (GParamSpecPool *pool,
{
if (pool && pspec)
{
- G_SLOCK (&pool->smutex);
+ g_mutex_lock (&pool->mutex);
if (g_hash_table_remove (pool->hash_table, pspec))
g_param_spec_unref (pspec);
else
g_warning (G_STRLOC ": attempt to remove unknown pspec `%s' from pool", pspec->name);
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
}
else
{
@@ -1053,7 +1050,7 @@ g_param_spec_pool_lookup (GParamSpecPool *pool,
g_return_val_if_fail (param_name != NULL, NULL);
}
- G_SLOCK (&pool->smutex);
+ g_mutex_lock (&pool->mutex);
delim = pool->type_prefixing ? strchr (param_name, ':') : NULL;
@@ -1061,7 +1058,7 @@ g_param_spec_pool_lookup (GParamSpecPool *pool,
if (!delim)
{
pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
return pspec;
}
@@ -1083,21 +1080,21 @@ g_param_spec_pool_lookup (GParamSpecPool *pool,
/* sanity check, these cases don't make a whole lot of sense */
if ((!walk_ancestors && type != owner_type) || !g_type_is_a (owner_type, type))
{
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
return NULL;
}
owner_type = type;
param_name += l + 2;
pspec = param_spec_ht_lookup (pool->hash_table, param_name, owner_type, walk_ancestors);
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
return pspec;
}
}
/* malformed param_name */
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
return NULL;
}
@@ -1136,11 +1133,11 @@ g_param_spec_pool_list_owned (GParamSpecPool *pool,
g_return_val_if_fail (pool != NULL, NULL);
g_return_val_if_fail (owner_type > 0, NULL);
- G_SLOCK (&pool->smutex);
+ g_mutex_lock (&pool->mutex);
data[0] = NULL;
data[1] = (gpointer) owner_type;
g_hash_table_foreach (pool->hash_table, pool_list, &data);
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
return data[0];
}
@@ -1283,7 +1280,7 @@ g_param_spec_pool_list (GParamSpecPool *pool,
g_return_val_if_fail (owner_type > 0, NULL);
g_return_val_if_fail (n_pspecs_p != NULL, NULL);
- G_SLOCK (&pool->smutex);
+ g_mutex_lock (&pool->mutex);
*n_pspecs_p = 0;
d = g_type_depth (owner_type);
slists = g_new0 (GSList*, d);
@@ -1309,7 +1306,7 @@ g_param_spec_pool_list (GParamSpecPool *pool,
}
*p++ = NULL;
g_free (slists);
- G_SUNLOCK (&pool->smutex);
+ g_mutex_unlock (&pool->mutex);
return pspecs;
}