aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-07-16 04:08:41 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-07-16 04:08:41 +0800
commitfcca366ecce1ffddaf6a280e248456127def1b4d (patch)
treee37bb3f512f10f2084ef55bc9a55548676b4b643
parenta1d2eb47189ccc2109d3080505de4a0319d2f18c (diff)
downloadgsoc2013-evolution-fcca366ecce1ffddaf6a280e248456127def1b4d.tar.gz
gsoc2013-evolution-fcca366ecce1ffddaf6a280e248456127def1b4d.tar.zst
gsoc2013-evolution-fcca366ecce1ffddaf6a280e248456127def1b4d.zip
mail_session_add_service(): Make display-name binding one-way.
We're leaking CamelService references when we remove a CamelService from a CamelSession. I don't yet know where or how. If we remove a CamelService without finalizing the corresponding ESource, and then add a new CamelService with the same UID, the ESource will have a bidirectional "display-name" binding to multiple CamelService instances. This creates an endless cascade of "notify" signals as soon as any of the bound "display-name" properties change. Until I can fix the leaking CamelService references, make the binding one-way: ESource -> CamelService. This means the ESource's display name is authoritative, and camel_service_set_display_name() MUST NOT be called explicitly or else it will become out-of-sync with the ESource.
-rw-r--r--libemail-engine/e-mail-session.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/libemail-engine/e-mail-session.c b/libemail-engine/e-mail-session.c
index 305bf2de04..0b4ab58818 100644
--- a/libemail-engine/e-mail-session.c
+++ b/libemail-engine/e-mail-session.c
@@ -1158,7 +1158,6 @@ mail_session_add_service (CamelSession *session,
g_object_bind_property (
source, "display-name",
service, "display-name",
- G_BINDING_BIDIRECTIONAL |
G_BINDING_SYNC_CREATE);
/* Migrate files for this service from its old