GSettings: port from GStaticMutex to GMutex

This commit is contained in:
Ryan Lortie 2011-09-17 19:26:41 -04:00
parent 646de11ae7
commit 806de91cd5
2 changed files with 32 additions and 32 deletions

View File

@ -30,7 +30,7 @@
struct _GDelayedSettingsBackendPrivate struct _GDelayedSettingsBackendPrivate
{ {
GSettingsBackend *backend; GSettingsBackend *backend;
GStaticMutex lock; GMutex lock;
GTree *delayed; GTree *delayed;
GMainContext *owner_context; GMainContext *owner_context;
@ -56,7 +56,7 @@ g_delayed_settings_backend_notify_unapplied (GDelayedSettingsBackend *delayed)
GMainContext *target_context; GMainContext *target_context;
GObject *target; GObject *target;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
if (delayed->priv->owner) if (delayed->priv->owner)
{ {
target_context = delayed->priv->owner_context; target_context = delayed->priv->owner_context;
@ -67,7 +67,7 @@ g_delayed_settings_backend_notify_unapplied (GDelayedSettingsBackend *delayed)
target_context = NULL; target_context = NULL;
target = NULL; target = NULL;
} }
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
if (target != NULL) if (target != NULL)
g_main_context_invoke (target_context, invoke_notify_unapplied, target); g_main_context_invoke (target_context, invoke_notify_unapplied, target);
@ -85,7 +85,7 @@ g_delayed_settings_backend_read (GSettingsBackend *backend,
if (!default_value) if (!default_value)
{ {
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
if (g_tree_lookup_extended (delayed->priv->delayed, key, NULL, &result)) if (g_tree_lookup_extended (delayed->priv->delayed, key, NULL, &result))
{ {
/* NULL in the tree means we should consult the default value */ /* NULL in the tree means we should consult the default value */
@ -94,7 +94,7 @@ g_delayed_settings_backend_read (GSettingsBackend *backend,
else else
default_value = TRUE; default_value = TRUE;
} }
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
} }
if (result == NULL) if (result == NULL)
@ -113,11 +113,11 @@ g_delayed_settings_backend_write (GSettingsBackend *backend,
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend); GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend);
gboolean was_empty; gboolean was_empty;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
was_empty = g_tree_nnodes (delayed->priv->delayed) == 0; was_empty = g_tree_nnodes (delayed->priv->delayed) == 0;
g_tree_insert (delayed->priv->delayed, g_strdup (key), g_tree_insert (delayed->priv->delayed, g_strdup (key),
g_variant_ref_sink (value)); g_variant_ref_sink (value));
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
g_settings_backend_changed (backend, key, origin_tag); g_settings_backend_changed (backend, key, origin_tag);
@ -144,11 +144,11 @@ g_delayed_settings_backend_write_tree (GSettingsBackend *backend,
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend); GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend);
gboolean was_empty; gboolean was_empty;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
was_empty = g_tree_nnodes (delayed->priv->delayed) == 0; was_empty = g_tree_nnodes (delayed->priv->delayed) == 0;
g_tree_foreach (tree, add_to_tree, delayed->priv->delayed); g_tree_foreach (tree, add_to_tree, delayed->priv->delayed);
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
g_settings_backend_changed_tree (backend, tree, origin_tag); g_settings_backend_changed_tree (backend, tree, origin_tag);
@ -175,10 +175,10 @@ g_delayed_settings_backend_reset (GSettingsBackend *backend,
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend); GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend);
gboolean was_empty; gboolean was_empty;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
was_empty = g_tree_nnodes (delayed->priv->delayed) == 0; was_empty = g_tree_nnodes (delayed->priv->delayed) == 0;
g_tree_insert (delayed->priv->delayed, g_strdup (key), NULL); g_tree_insert (delayed->priv->delayed, g_strdup (key), NULL);
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
if (was_empty) if (was_empty)
g_delayed_settings_backend_notify_unapplied (delayed); g_delayed_settings_backend_notify_unapplied (delayed);
@ -229,12 +229,12 @@ g_delayed_settings_backend_apply (GDelayedSettingsBackend *delayed)
gboolean success; gboolean success;
GTree *tmp; GTree *tmp;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
tmp = delayed->priv->delayed; tmp = delayed->priv->delayed;
delayed->priv->delayed = g_settings_backend_create_tree (); delayed->priv->delayed = g_settings_backend_create_tree ();
success = g_settings_backend_write_tree (delayed->priv->backend, success = g_settings_backend_write_tree (delayed->priv->backend,
tmp, delayed->priv); tmp, delayed->priv);
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
if (!success) if (!success)
g_settings_backend_changed_tree (G_SETTINGS_BACKEND (delayed), g_settings_backend_changed_tree (G_SETTINGS_BACKEND (delayed),
@ -253,10 +253,10 @@ g_delayed_settings_backend_revert (GDelayedSettingsBackend *delayed)
{ {
GTree *tmp; GTree *tmp;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
tmp = delayed->priv->delayed; tmp = delayed->priv->delayed;
delayed->priv->delayed = g_settings_backend_create_tree (); delayed->priv->delayed = g_settings_backend_create_tree ();
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
g_settings_backend_changed_tree (G_SETTINGS_BACKEND (delayed), tmp, NULL); g_settings_backend_changed_tree (G_SETTINGS_BACKEND (delayed), tmp, NULL);
g_tree_unref (tmp); g_tree_unref (tmp);
@ -313,7 +313,7 @@ delayed_backend_writable_changed (GObject *target,
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (target); GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (target);
gboolean last_one = FALSE; gboolean last_one = FALSE;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
if (g_tree_lookup (delayed->priv->delayed, key) != NULL && if (g_tree_lookup (delayed->priv->delayed, key) != NULL &&
!g_settings_backend_get_writable (delayed->priv->backend, key)) !g_settings_backend_get_writable (delayed->priv->backend, key))
@ -332,7 +332,7 @@ delayed_backend_writable_changed (GObject *target,
last_one = g_tree_nnodes (delayed->priv->delayed) == 0; last_one = g_tree_nnodes (delayed->priv->delayed) == 0;
} }
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
if (last_one) if (last_one)
g_delayed_settings_backend_notify_unapplied (delayed); g_delayed_settings_backend_notify_unapplied (delayed);
@ -371,7 +371,7 @@ delayed_backend_path_writable_changed (GObject *target,
gboolean last_one = FALSE; gboolean last_one = FALSE;
gsize n_keys; gsize n_keys;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
n_keys = g_tree_nnodes (delayed->priv->delayed); n_keys = g_tree_nnodes (delayed->priv->delayed);
@ -397,7 +397,7 @@ delayed_backend_path_writable_changed (GObject *target,
last_one = g_tree_nnodes (delayed->priv->delayed) == 0; last_one = g_tree_nnodes (delayed->priv->delayed) == 0;
} }
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
if (last_one) if (last_one)
g_delayed_settings_backend_notify_unapplied (delayed); g_delayed_settings_backend_notify_unapplied (delayed);
@ -411,7 +411,7 @@ g_delayed_settings_backend_finalize (GObject *object)
{ {
GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (object); GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (object);
g_static_mutex_free (&delayed->priv->lock); g_mutex_clear (&delayed->priv->lock);
g_object_unref (delayed->priv->backend); g_object_unref (delayed->priv->backend);
g_tree_unref (delayed->priv->delayed); g_tree_unref (delayed->priv->delayed);
@ -450,7 +450,7 @@ g_delayed_settings_backend_init (GDelayedSettingsBackend *delayed)
GDelayedSettingsBackendPrivate); GDelayedSettingsBackendPrivate);
delayed->priv->delayed = g_settings_backend_create_tree (); delayed->priv->delayed = g_settings_backend_create_tree ();
g_static_mutex_init (&delayed->priv->lock); g_mutex_init (&delayed->priv->lock);
} }
static void static void
@ -459,10 +459,10 @@ g_delayed_settings_backend_disown (gpointer data,
{ {
GDelayedSettingsBackend *delayed = data; GDelayedSettingsBackend *delayed = data;
g_static_mutex_lock (&delayed->priv->lock); g_mutex_lock (&delayed->priv->lock);
delayed->priv->owner_context = NULL; delayed->priv->owner_context = NULL;
delayed->priv->owner = NULL; delayed->priv->owner = NULL;
g_static_mutex_unlock (&delayed->priv->lock); g_mutex_unlock (&delayed->priv->lock);
} }
GDelayedSettingsBackend * GDelayedSettingsBackend *

View File

@ -41,7 +41,7 @@ typedef struct _GSettingsBackendWatch GSettingsBackendWatch;
struct _GSettingsBackendPrivate struct _GSettingsBackendPrivate
{ {
GSettingsBackendWatch *watches; GSettingsBackendWatch *watches;
GStaticMutex lock; GMutex lock;
}; };
/* For g_settings_backend_sync_default(), we only want to actually do /* For g_settings_backend_sync_default(), we only want to actually do
@ -156,7 +156,7 @@ g_settings_backend_watch_weak_notify (gpointer data,
GSettingsBackendWatch **ptr; GSettingsBackendWatch **ptr;
/* search and remove */ /* search and remove */
g_static_mutex_lock (&backend->priv->lock); g_mutex_lock (&backend->priv->lock);
for (ptr = &backend->priv->watches; *ptr; ptr = &(*ptr)->next) for (ptr = &backend->priv->watches; *ptr; ptr = &(*ptr)->next)
if ((*ptr)->target == where_the_object_was) if ((*ptr)->target == where_the_object_was)
{ {
@ -165,7 +165,7 @@ g_settings_backend_watch_weak_notify (gpointer data,
*ptr = tmp->next; *ptr = tmp->next;
g_slice_free (GSettingsBackendWatch, tmp); g_slice_free (GSettingsBackendWatch, tmp);
g_static_mutex_unlock (&backend->priv->lock); g_mutex_unlock (&backend->priv->lock);
return; return;
} }
@ -246,10 +246,10 @@ g_settings_backend_watch (GSettingsBackend *backend,
g_object_weak_ref (target, g_settings_backend_watch_weak_notify, backend); g_object_weak_ref (target, g_settings_backend_watch_weak_notify, backend);
/* linked list prepend */ /* linked list prepend */
g_static_mutex_lock (&backend->priv->lock); g_mutex_lock (&backend->priv->lock);
watch->next = backend->priv->watches; watch->next = backend->priv->watches;
backend->priv->watches = watch; backend->priv->watches = watch;
g_static_mutex_unlock (&backend->priv->lock); g_mutex_unlock (&backend->priv->lock);
} }
void void
@ -323,11 +323,11 @@ g_settings_backend_dispatch_signal (GSettingsBackend *backend,
* count dropping -- so just add a reference to everything in the * count dropping -- so just add a reference to everything in the
* suffix. * suffix.
*/ */
g_static_mutex_lock (&backend->priv->lock); g_mutex_lock (&backend->priv->lock);
suffix = backend->priv->watches; suffix = backend->priv->watches;
for (watch = suffix; watch; watch = watch->next) for (watch = suffix; watch; watch = watch->next)
g_object_ref (watch->target); g_object_ref (watch->target);
g_static_mutex_unlock (&backend->priv->lock); g_mutex_unlock (&backend->priv->lock);
/* The suffix is now immutable, so this is safe. */ /* The suffix is now immutable, so this is safe. */
for (watch = suffix; watch; watch = next) for (watch = suffix; watch; watch = next)
@ -879,7 +879,7 @@ g_settings_backend_finalize (GObject *object)
{ {
GSettingsBackend *backend = G_SETTINGS_BACKEND (object); GSettingsBackend *backend = G_SETTINGS_BACKEND (object);
g_static_mutex_unlock (&backend->priv->lock); g_mutex_clear (&backend->priv->lock);
G_OBJECT_CLASS (g_settings_backend_parent_class) G_OBJECT_CLASS (g_settings_backend_parent_class)
->finalize (object); ->finalize (object);
@ -897,7 +897,7 @@ g_settings_backend_init (GSettingsBackend *backend)
backend->priv = G_TYPE_INSTANCE_GET_PRIVATE (backend, backend->priv = G_TYPE_INSTANCE_GET_PRIVATE (backend,
G_TYPE_SETTINGS_BACKEND, G_TYPE_SETTINGS_BACKEND,
GSettingsBackendPrivate); GSettingsBackendPrivate);
g_static_mutex_init (&backend->priv->lock); g_mutex_init (&backend->priv->lock);
} }
static void static void