mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-28 23:16:14 +01:00
Port internal GStaticRecMutex users to GRecMutex
This commit is contained in:
parent
ad187e3a9b
commit
b6140c2f89
@ -52,7 +52,7 @@ static void g_union_volume_monitor_remove_monitor (GUnionVolumeMonitor *union_mo
|
|||||||
#define g_union_volume_monitor_get_type _g_union_volume_monitor_get_type
|
#define g_union_volume_monitor_get_type _g_union_volume_monitor_get_type
|
||||||
G_DEFINE_TYPE (GUnionVolumeMonitor, g_union_volume_monitor, G_TYPE_VOLUME_MONITOR);
|
G_DEFINE_TYPE (GUnionVolumeMonitor, g_union_volume_monitor, G_TYPE_VOLUME_MONITOR);
|
||||||
|
|
||||||
static GStaticRecMutex the_volume_monitor_mutex = G_STATIC_REC_MUTEX_INIT;
|
static GRecMutex the_volume_monitor_mutex = G_REC_MUTEX_INIT;
|
||||||
|
|
||||||
static GUnionVolumeMonitor *the_volume_monitor = NULL;
|
static GUnionVolumeMonitor *the_volume_monitor = NULL;
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ g_union_volume_monitor_dispose (GObject *object)
|
|||||||
|
|
||||||
monitor = G_UNION_VOLUME_MONITOR (object);
|
monitor = G_UNION_VOLUME_MONITOR (object);
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
the_volume_monitor = NULL;
|
the_volume_monitor = NULL;
|
||||||
|
|
||||||
for (l = monitor->monitors; l != NULL; l = l->next)
|
for (l = monitor->monitors; l != NULL; l = l->next)
|
||||||
@ -93,7 +93,7 @@ g_union_volume_monitor_dispose (GObject *object)
|
|||||||
g_object_run_dispose (G_OBJECT (child_monitor));
|
g_object_run_dispose (G_OBJECT (child_monitor));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
G_OBJECT_CLASS (g_union_volume_monitor_parent_class)->dispose (object);
|
G_OBJECT_CLASS (g_union_volume_monitor_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ get_mounts (GVolumeMonitor *volume_monitor)
|
|||||||
|
|
||||||
res = NULL;
|
res = NULL;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
for (l = monitor->monitors; l != NULL; l = l->next)
|
for (l = monitor->monitors; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
@ -119,7 +119,7 @@ get_mounts (GVolumeMonitor *volume_monitor)
|
|||||||
res = g_list_concat (res, g_volume_monitor_get_mounts (child_monitor));
|
res = g_list_concat (res, g_volume_monitor_get_mounts (child_monitor));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ get_volumes (GVolumeMonitor *volume_monitor)
|
|||||||
|
|
||||||
res = NULL;
|
res = NULL;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
for (l = monitor->monitors; l != NULL; l = l->next)
|
for (l = monitor->monitors; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
@ -145,7 +145,7 @@ get_volumes (GVolumeMonitor *volume_monitor)
|
|||||||
res = g_list_concat (res, g_volume_monitor_get_volumes (child_monitor));
|
res = g_list_concat (res, g_volume_monitor_get_volumes (child_monitor));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -162,7 +162,7 @@ get_connected_drives (GVolumeMonitor *volume_monitor)
|
|||||||
|
|
||||||
res = NULL;
|
res = NULL;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
for (l = monitor->monitors; l != NULL; l = l->next)
|
for (l = monitor->monitors; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
@ -171,7 +171,7 @@ get_connected_drives (GVolumeMonitor *volume_monitor)
|
|||||||
res = g_list_concat (res, g_volume_monitor_get_connected_drives (child_monitor));
|
res = g_list_concat (res, g_volume_monitor_get_connected_drives (child_monitor));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -188,7 +188,7 @@ get_volume_for_uuid (GVolumeMonitor *volume_monitor, const char *uuid)
|
|||||||
|
|
||||||
volume = NULL;
|
volume = NULL;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
for (l = monitor->monitors; l != NULL; l = l->next)
|
for (l = monitor->monitors; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
@ -200,7 +200,7 @@ get_volume_for_uuid (GVolumeMonitor *volume_monitor, const char *uuid)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
return volume;
|
return volume;
|
||||||
}
|
}
|
||||||
@ -217,7 +217,7 @@ get_mount_for_uuid (GVolumeMonitor *volume_monitor, const char *uuid)
|
|||||||
|
|
||||||
mount = NULL;
|
mount = NULL;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
for (l = monitor->monitors; l != NULL; l = l->next)
|
for (l = monitor->monitors; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
@ -229,7 +229,7 @@ get_mount_for_uuid (GVolumeMonitor *volume_monitor, const char *uuid)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
return mount;
|
return mount;
|
||||||
}
|
}
|
||||||
@ -563,7 +563,7 @@ g_volume_monitor_get (void)
|
|||||||
{
|
{
|
||||||
GVolumeMonitor *vm;
|
GVolumeMonitor *vm;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
if (the_volume_monitor)
|
if (the_volume_monitor)
|
||||||
vm = G_VOLUME_MONITOR (g_object_ref (the_volume_monitor));
|
vm = G_VOLUME_MONITOR (g_object_ref (the_volume_monitor));
|
||||||
@ -574,7 +574,7 @@ g_volume_monitor_get (void)
|
|||||||
vm = G_VOLUME_MONITOR (the_volume_monitor);
|
vm = G_VOLUME_MONITOR (the_volume_monitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
return vm;
|
return vm;
|
||||||
}
|
}
|
||||||
@ -594,9 +594,9 @@ _g_mount_get_for_mount_path (const gchar *mount_path,
|
|||||||
|
|
||||||
if (klass->get_mount_for_mount_path)
|
if (klass->get_mount_for_mount_path)
|
||||||
{
|
{
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
mount = klass->get_mount_for_mount_path (mount_path, cancellable);
|
mount = klass->get_mount_for_mount_path (mount_path, cancellable);
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: How do we know this succeeded? Keep in mind that the native
|
/* TODO: How do we know this succeeded? Keep in mind that the native
|
||||||
@ -669,7 +669,7 @@ g_volume_monitor_adopt_orphan_mount (GMount *mount)
|
|||||||
|
|
||||||
volume = NULL;
|
volume = NULL;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&the_volume_monitor_mutex);
|
g_rec_mutex_lock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
for (l = the_volume_monitor->monitors; l != NULL; l = l->next)
|
for (l = the_volume_monitor->monitors; l != NULL; l = l->next)
|
||||||
{
|
{
|
||||||
@ -684,7 +684,7 @@ g_volume_monitor_adopt_orphan_mount (GMount *mount)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&the_volume_monitor_mutex);
|
g_rec_mutex_unlock (&the_volume_monitor_mutex);
|
||||||
|
|
||||||
return volume;
|
return volume;
|
||||||
}
|
}
|
||||||
|
@ -709,7 +709,7 @@ g_variant_type_info_member_info (GVariantTypeInfo *info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* == new/ref/unref == */
|
/* == new/ref/unref == */
|
||||||
static GStaticRecMutex g_variant_type_info_lock = G_STATIC_REC_MUTEX_INIT;
|
static GRecMutex g_variant_type_info_lock = G_REC_MUTEX_INIT;
|
||||||
static GHashTable *g_variant_type_info_table;
|
static GHashTable *g_variant_type_info_table;
|
||||||
|
|
||||||
/* < private >
|
/* < private >
|
||||||
@ -742,7 +742,7 @@ g_variant_type_info_get (const GVariantType *type)
|
|||||||
|
|
||||||
type_string = g_variant_type_dup_string (type);
|
type_string = g_variant_type_dup_string (type);
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&g_variant_type_info_lock);
|
g_rec_mutex_lock (&g_variant_type_info_lock);
|
||||||
|
|
||||||
if (g_variant_type_info_table == NULL)
|
if (g_variant_type_info_table == NULL)
|
||||||
g_variant_type_info_table = g_hash_table_new (g_str_hash,
|
g_variant_type_info_table = g_hash_table_new (g_str_hash,
|
||||||
@ -773,7 +773,7 @@ g_variant_type_info_get (const GVariantType *type)
|
|||||||
else
|
else
|
||||||
g_variant_type_info_ref (info);
|
g_variant_type_info_ref (info);
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&g_variant_type_info_lock);
|
g_rec_mutex_unlock (&g_variant_type_info_lock);
|
||||||
g_variant_type_info_check (info, 0);
|
g_variant_type_info_check (info, 0);
|
||||||
g_free (type_string);
|
g_free (type_string);
|
||||||
|
|
||||||
@ -834,7 +834,7 @@ g_variant_type_info_unref (GVariantTypeInfo *info)
|
|||||||
{
|
{
|
||||||
ContainerInfo *container = (ContainerInfo *) info;
|
ContainerInfo *container = (ContainerInfo *) info;
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&g_variant_type_info_lock);
|
g_rec_mutex_lock (&g_variant_type_info_lock);
|
||||||
if (g_atomic_int_dec_and_test (&container->ref_count))
|
if (g_atomic_int_dec_and_test (&container->ref_count))
|
||||||
{
|
{
|
||||||
g_hash_table_remove (g_variant_type_info_table,
|
g_hash_table_remove (g_variant_type_info_table,
|
||||||
@ -844,7 +844,7 @@ g_variant_type_info_unref (GVariantTypeInfo *info)
|
|||||||
g_hash_table_unref (g_variant_type_info_table);
|
g_hash_table_unref (g_variant_type_info_table);
|
||||||
g_variant_type_info_table = NULL;
|
g_variant_type_info_table = NULL;
|
||||||
}
|
}
|
||||||
g_static_rec_mutex_unlock (&g_variant_type_info_lock);
|
g_rec_mutex_unlock (&g_variant_type_info_lock);
|
||||||
|
|
||||||
g_free (container->type_string);
|
g_free (container->type_string);
|
||||||
|
|
||||||
@ -858,7 +858,7 @@ g_variant_type_info_unref (GVariantTypeInfo *info)
|
|||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_static_rec_mutex_unlock (&g_variant_type_info_lock);
|
g_rec_mutex_unlock (&g_variant_type_info_lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,7 +326,7 @@ _g_module_debug_init (void)
|
|||||||
module_debug_initialized = TRUE;
|
module_debug_initialized = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GStaticRecMutex g_module_global_lock = G_STATIC_REC_MUTEX_INIT;
|
static GRecMutex g_module_global_lock = G_REC_MUTEX_INIT;
|
||||||
|
|
||||||
GModule*
|
GModule*
|
||||||
g_module_open (const gchar *file_name,
|
g_module_open (const gchar *file_name,
|
||||||
@ -338,7 +338,7 @@ g_module_open (const gchar *file_name,
|
|||||||
|
|
||||||
SUPPORT_OR_RETURN (NULL);
|
SUPPORT_OR_RETURN (NULL);
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&g_module_global_lock);
|
g_rec_mutex_lock (&g_module_global_lock);
|
||||||
|
|
||||||
if (G_UNLIKELY (!module_debug_initialized))
|
if (G_UNLIKELY (!module_debug_initialized))
|
||||||
_g_module_debug_init ();
|
_g_module_debug_init ();
|
||||||
@ -368,7 +368,7 @@ g_module_open (const gchar *file_name,
|
|||||||
else
|
else
|
||||||
main_module->ref_count++;
|
main_module->ref_count++;
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&g_module_global_lock);
|
g_rec_mutex_unlock (&g_module_global_lock);
|
||||||
return main_module;
|
return main_module;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,7 +378,7 @@ g_module_open (const gchar *file_name,
|
|||||||
{
|
{
|
||||||
module->ref_count++;
|
module->ref_count++;
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&g_module_global_lock);
|
g_rec_mutex_unlock (&g_module_global_lock);
|
||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,7 +461,7 @@ g_module_open (const gchar *file_name,
|
|||||||
module->ref_count++;
|
module->ref_count++;
|
||||||
g_module_set_error (NULL);
|
g_module_set_error (NULL);
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&g_module_global_lock);
|
g_rec_mutex_unlock (&g_module_global_lock);
|
||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -511,7 +511,7 @@ g_module_open (const gchar *file_name,
|
|||||||
(module_debug_flags & G_MODULE_DEBUG_RESIDENT_MODULES))
|
(module_debug_flags & G_MODULE_DEBUG_RESIDENT_MODULES))
|
||||||
g_module_make_resident (module);
|
g_module_make_resident (module);
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&g_module_global_lock);
|
g_rec_mutex_unlock (&g_module_global_lock);
|
||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,7 +541,7 @@ g_module_close (GModule *module)
|
|||||||
g_return_val_if_fail (module != NULL, FALSE);
|
g_return_val_if_fail (module != NULL, FALSE);
|
||||||
g_return_val_if_fail (module->ref_count > 0, FALSE);
|
g_return_val_if_fail (module->ref_count > 0, FALSE);
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&g_module_global_lock);
|
g_rec_mutex_lock (&g_module_global_lock);
|
||||||
|
|
||||||
module->ref_count--;
|
module->ref_count--;
|
||||||
|
|
||||||
@ -585,7 +585,7 @@ g_module_close (GModule *module)
|
|||||||
g_free (module);
|
g_free (module);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&g_module_global_lock);
|
g_rec_mutex_unlock (&g_module_global_lock);
|
||||||
return g_module_error() == NULL;
|
return g_module_error() == NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -618,7 +618,7 @@ g_module_symbol (GModule *module,
|
|||||||
g_return_val_if_fail (symbol_name != NULL, FALSE);
|
g_return_val_if_fail (symbol_name != NULL, FALSE);
|
||||||
g_return_val_if_fail (symbol != NULL, FALSE);
|
g_return_val_if_fail (symbol != NULL, FALSE);
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&g_module_global_lock);
|
g_rec_mutex_lock (&g_module_global_lock);
|
||||||
|
|
||||||
#ifdef G_MODULE_NEED_USCORE
|
#ifdef G_MODULE_NEED_USCORE
|
||||||
{
|
{
|
||||||
@ -643,7 +643,7 @@ g_module_symbol (GModule *module,
|
|||||||
*symbol = NULL;
|
*symbol = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&g_module_global_lock);
|
g_rec_mutex_unlock (&g_module_global_lock);
|
||||||
return !module_error;
|
return !module_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,7 +369,7 @@ typedef struct {
|
|||||||
|
|
||||||
/* --- variables --- */
|
/* --- variables --- */
|
||||||
static GStaticRWLock type_rw_lock = G_STATIC_RW_LOCK_INIT;
|
static GStaticRWLock type_rw_lock = G_STATIC_RW_LOCK_INIT;
|
||||||
static GStaticRecMutex class_init_rec_mutex = G_STATIC_REC_MUTEX_INIT;
|
static GRecMutex class_init_rec_mutex = G_REC_MUTEX_INIT;
|
||||||
static guint static_n_class_cache_funcs = 0;
|
static guint static_n_class_cache_funcs = 0;
|
||||||
static ClassCacheFunc *static_class_cache_funcs = NULL;
|
static ClassCacheFunc *static_class_cache_funcs = NULL;
|
||||||
static guint static_n_iface_check_funcs = 0;
|
static guint static_n_iface_check_funcs = 0;
|
||||||
@ -2416,11 +2416,11 @@ type_data_unref_U (TypeNode *node,
|
|||||||
|
|
||||||
g_assert (current > 0);
|
g_assert (current > 0);
|
||||||
|
|
||||||
g_static_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
||||||
G_WRITE_LOCK (&type_rw_lock);
|
G_WRITE_LOCK (&type_rw_lock);
|
||||||
type_data_last_unref_Wm (node, uncached);
|
type_data_last_unref_Wm (node, uncached);
|
||||||
G_WRITE_UNLOCK (&type_rw_lock);
|
G_WRITE_UNLOCK (&type_rw_lock);
|
||||||
g_static_rec_mutex_unlock (&class_init_rec_mutex);
|
g_rec_mutex_unlock (&class_init_rec_mutex);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current - 1));
|
} while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current - 1));
|
||||||
@ -2804,7 +2804,7 @@ g_type_add_interface_static (GType instance_type,
|
|||||||
* class initialized, however this function is rarely enough called to take
|
* class initialized, however this function is rarely enough called to take
|
||||||
* the simple route and always acquire class_init_rec_mutex.
|
* the simple route and always acquire class_init_rec_mutex.
|
||||||
*/
|
*/
|
||||||
g_static_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
||||||
G_WRITE_LOCK (&type_rw_lock);
|
G_WRITE_LOCK (&type_rw_lock);
|
||||||
if (check_add_interface_L (instance_type, interface_type))
|
if (check_add_interface_L (instance_type, interface_type))
|
||||||
{
|
{
|
||||||
@ -2814,7 +2814,7 @@ g_type_add_interface_static (GType instance_type,
|
|||||||
type_add_interface_Wm (node, iface, info, NULL);
|
type_add_interface_Wm (node, iface, info, NULL);
|
||||||
}
|
}
|
||||||
G_WRITE_UNLOCK (&type_rw_lock);
|
G_WRITE_UNLOCK (&type_rw_lock);
|
||||||
g_static_rec_mutex_unlock (&class_init_rec_mutex);
|
g_rec_mutex_unlock (&class_init_rec_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2842,7 +2842,7 @@ g_type_add_interface_dynamic (GType instance_type,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* see comment in g_type_add_interface_static() about class_init_rec_mutex */
|
/* see comment in g_type_add_interface_static() about class_init_rec_mutex */
|
||||||
g_static_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
||||||
G_WRITE_LOCK (&type_rw_lock);
|
G_WRITE_LOCK (&type_rw_lock);
|
||||||
if (check_add_interface_L (instance_type, interface_type))
|
if (check_add_interface_L (instance_type, interface_type))
|
||||||
{
|
{
|
||||||
@ -2850,7 +2850,7 @@ g_type_add_interface_dynamic (GType instance_type,
|
|||||||
type_add_interface_Wm (node, iface, NULL, plugin);
|
type_add_interface_Wm (node, iface, NULL, plugin);
|
||||||
}
|
}
|
||||||
G_WRITE_UNLOCK (&type_rw_lock);
|
G_WRITE_UNLOCK (&type_rw_lock);
|
||||||
g_static_rec_mutex_unlock (&class_init_rec_mutex);
|
g_rec_mutex_unlock (&class_init_rec_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2897,7 +2897,7 @@ g_type_class_ref (GType type)
|
|||||||
* node->data->class.init_state == INITIALIZED, because any
|
* node->data->class.init_state == INITIALIZED, because any
|
||||||
* concurrently running initialization was guarded by class_init_rec_mutex.
|
* concurrently running initialization was guarded by class_init_rec_mutex.
|
||||||
*/
|
*/
|
||||||
g_static_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
||||||
|
|
||||||
/* we need an initialized parent class for initializing derived classes */
|
/* we need an initialized parent class for initializing derived classes */
|
||||||
ptype = NODE_PARENT_TYPE (node);
|
ptype = NODE_PARENT_TYPE (node);
|
||||||
@ -2916,7 +2916,7 @@ g_type_class_ref (GType type)
|
|||||||
if (pclass)
|
if (pclass)
|
||||||
g_type_class_unref (pclass);
|
g_type_class_unref (pclass);
|
||||||
|
|
||||||
g_static_rec_mutex_unlock (&class_init_rec_mutex);
|
g_rec_mutex_unlock (&class_init_rec_mutex);
|
||||||
|
|
||||||
return node->data->class.class;
|
return node->data->class.class;
|
||||||
}
|
}
|
||||||
@ -3188,12 +3188,12 @@ g_type_default_interface_ref (GType g_type)
|
|||||||
if (!node->data || !node->data->iface.dflt_vtable)
|
if (!node->data || !node->data->iface.dflt_vtable)
|
||||||
{
|
{
|
||||||
G_WRITE_UNLOCK (&type_rw_lock);
|
G_WRITE_UNLOCK (&type_rw_lock);
|
||||||
g_static_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
g_rec_mutex_lock (&class_init_rec_mutex); /* required locking order: 1) class_init_rec_mutex, 2) type_rw_lock */
|
||||||
G_WRITE_LOCK (&type_rw_lock);
|
G_WRITE_LOCK (&type_rw_lock);
|
||||||
node = lookup_type_node_I (g_type);
|
node = lookup_type_node_I (g_type);
|
||||||
type_data_ref_Wm (node);
|
type_data_ref_Wm (node);
|
||||||
type_iface_ensure_dflt_vtable_Wm (node);
|
type_iface_ensure_dflt_vtable_Wm (node);
|
||||||
g_static_rec_mutex_unlock (&class_init_rec_mutex);
|
g_rec_mutex_unlock (&class_init_rec_mutex);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
type_data_ref_Wm (node); /* ref_count >= 1 already */
|
type_data_ref_Wm (node); /* ref_count >= 1 already */
|
||||||
|
Loading…
Reference in New Issue
Block a user