summaryrefslogtreecommitdiff
path: root/src/arch/sharing
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/sharing')
-rw-r--r--src/arch/sharing/instance.c10
-rw-r--r--src/arch/sharing/manager.c75
-rw-r--r--src/arch/sharing/manager.h6
3 files changed, 11 insertions, 80 deletions
diff --git a/src/arch/sharing/instance.c b/src/arch/sharing/instance.c
index c0038aa..39dacec 100644
--- a/src/arch/sharing/instance.c
+++ b/src/arch/sharing/instance.c
@@ -78,6 +78,11 @@ bool g_shared_instance_init(GSharedInstance *instance, const GSharedInstance *te
iface = G_SHARED_INSTANCE_GET_IFACE(instance);
+ /**
+ * Le compteur de références des objets GLib doit être incrémenté ici,
+ * à la différence d'une opération de copie minimaliste.
+ */
+
result = iface->init(instance, template);
return result;
@@ -104,6 +109,11 @@ void g_shared_instance_quickly_copy(const GSharedInstance *instance, GSharedInst
iface = G_SHARED_INSTANCE_GET_IFACE(instance);
+ /**
+ * Le compteur de références des objets GLib ne doit pas être incrémenté ici.
+ * Ce genre de traitement est réservé à la phase d'initialisation.
+ */
+
iface->qck_copy(instance, template);
}
diff --git a/src/arch/sharing/manager.c b/src/arch/sharing/manager.c
index 952fc33..3b7cd01 100644
--- a/src/arch/sharing/manager.c
+++ b/src/arch/sharing/manager.c
@@ -283,7 +283,7 @@ GSharedInstance *g_share_manager_update(GShareManager *manager, GSharedInstance
if (container != NULL)
replaced = g_share_container_replace(container, old, result);
else
- replaced = false;
+ replaced = true;
if (replaced)
g_share_manager_put(manager, old);
@@ -301,79 +301,6 @@ GSharedInstance *g_share_manager_update(GShareManager *manager, GSharedInstance
/******************************************************************************
* *
-* Paramètres : manager = gestionnaire d'instance à consulter. *
-* instance = instance partagée vouée à évoluer. *
-* *
-* Description : Prépare une modification légère et locale d'un élément. *
-* *
-* Retour : Indice de l'élément prêt à être modifié. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-size_t g_share_manager_prepare_light_update(GShareManager *manager, GSharedInstance *instance)
-{
- size_t result; /* Indice courant à retourner */
-#ifndef NDEBUG
- bool found; /* Validation de présence */
-#endif
-
- g_mutex_lock(&manager->access);
-
-#ifndef NDEBUG
-
- found = bsearch_index(&instance, manager->instances, manager->count,sizeof(GSharedInstance *),
- (__compar_fn_t)g_shared_instance_quickly_compare, &result);
-
- assert(found);
-
-#else
-
- bsearch_index(&instance, manager->instances, manager->count,sizeof(GSharedInstance *),
- (__compar_fn_t)g_shared_instance_quickly_compare, &result);
-
-#endif
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : manager = gestionnaire d'instance à consulter. *
-* instance = instance partagée vouée à évoluer. *
-* index = indice de la place de l'élément avant modifcation.*
-* *
-* Description : Conclut une modification légère et locale d'un élément. *
-* *
-* Retour : Indice de l'élément prêt à être modifié. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GSharedInstance *g_share_manager_complete_light_update(GShareManager *manager, GSharedInstance *instance, size_t index)
-{
- GSharedInstance *result; /* Nouvelle instance à renvoyer*/
-
- manager->instances = _qdelete(manager->instances, &manager->count,
- sizeof(GSharedInstance *), index);
-
- g_mutex_unlock(&manager->access);
-
- result = g_share_manager_get(manager, instance);
-
- g_object_unref(G_OBJECT(instance));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : manager = gestionnaire d'instance à consulter. *
* shared = instance partagée à libérer. *
* *
diff --git a/src/arch/sharing/manager.h b/src/arch/sharing/manager.h
index f2fcea6..959087d 100644
--- a/src/arch/sharing/manager.h
+++ b/src/arch/sharing/manager.h
@@ -65,12 +65,6 @@ GSharedInstance *g_share_manager_get(GShareManager *, GSharedInstance *);
/* Met à jour une instance partagée. */
GSharedInstance *g_share_manager_update(GShareManager *, GSharedInstance *, GSharedInstance *, GShareContainer *);
-/* Prépare une modification légère et locale d'un élément. */
-size_t g_share_manager_prepare_light_update(GShareManager *, GSharedInstance *);
-
-/* Conclut une modification légère et locale d'un élément. */
-GSharedInstance *g_share_manager_complete_light_update(GShareManager *, GSharedInstance *, size_t);
-
/* Abandonne un usage d'une instance partagée. */
void g_share_manager_put(GShareManager *, GSharedInstance *);