[evolution-data-server/gnome-3-4] Use locks in factory's weak object notify callback on data-book/cal
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-4] Use locks in factory's weak object notify callback on data-book/cal
- Date: Thu, 17 May 2012 12:38:07 +0000 (UTC)
commit 057cc27efec4f7e719ee8e1cc1e20481548bd8ff
Author: Milan Crha <mcrha redhat com>
Date: Thu May 17 14:37:46 2012 +0200
Use locks in factory's weak object notify callback on data-book/cal
addressbook/libedata-book/e-data-book-factory.c | 6 ++++++
calendar/libedata-cal/e-data-cal-factory.c | 6 ++++++
2 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/addressbook/libedata-book/e-data-book-factory.c b/addressbook/libedata-book/e-data-book-factory.c
index 96ee3c8..32d2cae 100644
--- a/addressbook/libedata-book/e-data-book-factory.c
+++ b/addressbook/libedata-book/e-data-book-factory.c
@@ -134,6 +134,9 @@ book_freed_cb (EDataBookFactory *factory,
d (g_debug ("in factory %p (%p) is dead", factory, dead));
+ g_mutex_lock (priv->books_lock);
+ g_mutex_lock (priv->connections_lock);
+
g_hash_table_foreach_remove (
priv->books, remove_dead_pointer_cb, dead);
@@ -154,6 +157,9 @@ book_freed_cb (EDataBookFactory *factory,
}
}
+ g_mutex_unlock (priv->connections_lock);
+ g_mutex_unlock (priv->books_lock);
+
e_dbus_server_release (E_DBUS_SERVER (factory));
}
diff --git a/calendar/libedata-cal/e-data-cal-factory.c b/calendar/libedata-cal/e-data-cal-factory.c
index 484c97c..6422766 100644
--- a/calendar/libedata-cal/e-data-cal-factory.c
+++ b/calendar/libedata-cal/e-data-cal-factory.c
@@ -149,6 +149,9 @@ calendar_freed_cb (EDataCalFactory *factory,
d (g_debug ("in factory %p (%p) is dead", factory, dead));
+ g_mutex_lock (priv->calendars_lock);
+ g_mutex_lock (priv->connections_lock);
+
g_hash_table_foreach_remove (
priv->calendars, remove_dead_calendar_cb, dead);
@@ -169,6 +172,9 @@ calendar_freed_cb (EDataCalFactory *factory,
}
}
+ g_mutex_unlock (priv->connections_lock);
+ g_mutex_unlock (priv->calendars_lock);
+
e_dbus_server_release (E_DBUS_SERVER (factory));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]