[evolution-data-server/openismus-work-master: 87/137] Changes for Review: ECollator to use atomic integer operations for ref counting
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/openismus-work-master: 87/137] Changes for Review: ECollator to use atomic integer operations for ref counting
- Date: Mon, 21 Oct 2013 22:53:52 +0000 (UTC)
commit 32fa683f2b9940cd9ae2443de84fa4cd38fb1036
Author: Tristan Van Berkom <tristanvb openismus com>
Date: Sat Oct 5 02:01:02 2013 +0200
Changes for Review: ECollator to use atomic integer operations for ref counting
libedataserver/e-collator.c | 12 +++---------
1 files changed, 3 insertions(+), 9 deletions(-)
---
diff --git a/libedataserver/e-collator.c b/libedataserver/e-collator.c
index 022efcd..099abb6 100644
--- a/libedataserver/e-collator.c
+++ b/libedataserver/e-collator.c
@@ -63,6 +63,7 @@ G_DEFINE_BOXED_TYPE (ECollator,
struct _ECollator
{
UCollator *coll;
+ volatile gint ref_count;
EAlphabetIndex *alpha_index;
gchar **labels;
@@ -72,8 +73,6 @@ struct _ECollator
gint overflow;
ETransliterator *transliterator;
-
- gint ref_count;
};
/*****************************************************
@@ -355,7 +354,7 @@ e_collator_ref (ECollator *collator)
{
g_return_val_if_fail (collator != NULL, NULL);
- collator->ref_count++;
+ g_atomic_int_inc (&collator->ref_count);
return collator;
}
@@ -374,12 +373,7 @@ e_collator_unref (ECollator *collator)
{
g_return_if_fail (collator != NULL);
- collator->ref_count--;
-
- if (collator->ref_count < 0)
- g_warning ("Unbalanced reference count in ECollator");
-
- if (collator->ref_count == 0) {
+ if (g_atomic_int_dec_and_test (&collator->ref_count)) {
if (collator->coll)
ucol_close (collator->coll);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]