[evolution-data-server] Do not call g_object_notify() when property didn't change



commit 500789b222c8bd39099391f1c6486bd8a52b3dad
Author: Milan Crha <mcrha redhat com>
Date:   Mon Jun 18 17:51:12 2012 +0200

    Do not call g_object_notify() when property didn't change

 addressbook/backends/ldap/e-source-ldap.c      |   35 ++++++++++-
 addressbook/backends/vcf/e-source-vcf.c        |    5 ++
 addressbook/libedata-book/e-book-backend.c     |    3 +
 calendar/backends/contacts/e-source-contacts.c |    3 +
 calendar/backends/weather/e-source-weather.c   |    8 +++
 calendar/libedata-cal/e-cal-backend.c          |    3 +
 camel/camel-data-cache.c                       |    3 +
 camel/camel-disco-folder.c                     |    3 +
 camel/camel-folder.c                           |    9 +++
 camel/camel-gpg-context.c                      |    3 +
 camel/camel-imapx-settings.c                   |   52 ++++++++++++++++
 camel/camel-local-settings.c                   |   11 +++-
 camel/camel-medium.c                           |    3 +
 camel/camel-object.c                           |    3 +
 camel/camel-offline-folder.c                   |    3 +
 camel/camel-offline-settings.c                 |    3 +
 camel/camel-sasl.c                             |    3 +
 camel/camel-service.c                          |    9 +++
 camel/camel-store-settings.c                   |    3 +
 camel/providers/imap/camel-imap-folder.c       |    3 +
 camel/providers/imap/camel-imap-settings.c     |   77 ++++++++++++++++++++++++
 camel/providers/local/camel-local-folder.c     |    3 +
 camel/providers/local/camel-local-store.c      |    3 +
 camel/providers/local/camel-mh-settings.c      |    3 +
 camel/providers/local/camel-spool-settings.c   |    3 +
 camel/providers/nntp/camel-nntp-settings.c     |    9 +++
 camel/providers/pop3/camel-pop3-settings.c     |   21 +++++++
 libebackend/e-authentication-session.c         |   15 +++++
 libebackend/e-backend.c                        |    2 +-
 libebackend/e-server-side-source.c             |    6 ++
 libedataserver/e-source-alarms.c               |    8 +++
 libedataserver/e-source-authentication.c       |   18 ++++++
 libedataserver/e-source-autocomplete.c         |    3 +
 libedataserver/e-source-backend.c              |    5 ++
 libedataserver/e-source-collection.c           |   14 ++++
 libedataserver/e-source-goa.c                  |    5 ++
 libedataserver/e-source-mail-account.c         |    5 ++
 libedataserver/e-source-mail-composition.c     |   40 ++++++++++++
 libedataserver/e-source-mail-identity.c        |   26 ++++++++
 libedataserver/e-source-mail-signature.c       |    5 ++
 libedataserver/e-source-mail-submission.c      |   10 +++
 libedataserver/e-source-mdn.c                  |    3 +
 libedataserver/e-source-offline.c              |    3 +
 libedataserver/e-source-openpgp.c              |   19 ++++++
 libedataserver/e-source-refresh.c              |    2 +-
 libedataserver/e-source-security.c             |    6 ++
 libedataserver/e-source-selectable.c           |    8 +++
 libedataserver/e-source-smime.c                |   24 +++++++
 libedataserver/e-source-webdav.c               |   29 +++++++++
 libedataserver/e-source.c                      |   12 ++++-
 libedataserverui/e-categories-editor.c         |    4 +
 libedataserverui/e-categories-selector.c       |    3 +
 libedataserverui/e-name-selector-entry.c       |    3 +
 libedataserverui/e-source-combo-box.c          |    8 ++-
 libedataserverui/e-source-selector.c           |    4 +-
 55 files changed, 567 insertions(+), 10 deletions(-)
---
diff --git a/addressbook/backends/ldap/e-source-ldap.c b/addressbook/backends/ldap/e-source-ldap.c
index 29b61af..ccc2f68 100644
--- a/addressbook/backends/ldap/e-source-ldap.c
+++ b/addressbook/backends/ldap/e-source-ldap.c
@@ -461,6 +461,9 @@ e_source_ldap_set_authentication (ESourceLDAP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_LDAP (extension));
 
+	if (extension->priv->authentication == authentication)
+		return;
+
 	extension->priv->authentication = authentication;
 
 	g_object_notify (G_OBJECT (extension), "authentication");
@@ -480,6 +483,9 @@ e_source_ldap_set_can_browse (ESourceLDAP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_LDAP (extension));
 
+	if ((extension->priv->can_browse ? 1 : 0) == (can_browse ? 1 : 0))
+		return;
+
 	extension->priv->can_browse = can_browse;
 
 	g_object_notify (G_OBJECT (extension), "can-browse");
@@ -516,6 +522,7 @@ e_source_ldap_set_filter (ESourceLDAP *extension,
                           const gchar *filter)
 {
 	gboolean needs_parens;
+	gchar *new_filter;
 
 	g_return_if_fail (E_IS_SOURCE_LDAP (extension));
 
@@ -526,11 +533,19 @@ e_source_ldap_set_filter (ESourceLDAP *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
-	g_free (extension->priv->filter);
 	if (needs_parens)
-		extension->priv->filter = g_strdup_printf ("(%s)", filter);
+		new_filter = g_strdup_printf ("(%s)", filter);
 	else
-		extension->priv->filter = g_strdup (filter);
+		new_filter = g_strdup (filter);
+
+	if (g_strcmp0 (extension->priv->filter, new_filter) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		g_free (new_filter);
+		return;
+	}
+
+	g_free (extension->priv->filter);
+	extension->priv->filter = new_filter;
 
 	g_mutex_unlock (extension->priv->property_lock);
 
@@ -551,6 +566,9 @@ e_source_ldap_set_limit (ESourceLDAP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_LDAP (extension));
 
+	if (extension->priv->limit == limit)
+		return;
+
 	extension->priv->limit = limit;
 
 	g_object_notify (G_OBJECT (extension), "limit");
@@ -590,6 +608,11 @@ e_source_ldap_set_root_dn (ESourceLDAP *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->root_dn, root_dn) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->root_dn);
 	extension->priv->root_dn = e_util_strdup_strip (root_dn);
 
@@ -612,6 +635,9 @@ e_source_ldap_set_scope (ESourceLDAP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_LDAP (extension));
 
+	if (extension->priv->scope == scope)
+		return;
+
 	extension->priv->scope = scope;
 
 	g_object_notify (G_OBJECT (extension), "scope");
@@ -631,6 +657,9 @@ e_source_ldap_set_security (ESourceLDAP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_LDAP (extension));
 
+	if (extension->priv->security == security)
+		return;
+
 	extension->priv->security = security;
 
 	g_object_notify (G_OBJECT (extension), "security");
diff --git a/addressbook/backends/vcf/e-source-vcf.c b/addressbook/backends/vcf/e-source-vcf.c
index 973a4ce..cba2b23 100644
--- a/addressbook/backends/vcf/e-source-vcf.c
+++ b/addressbook/backends/vcf/e-source-vcf.c
@@ -171,6 +171,11 @@ e_source_vcf_set_path (ESourceVCF *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->path, path) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->path);
 	extension->priv->path = e_util_strdup_strip (path);
 
diff --git a/addressbook/libedata-book/e-book-backend.c b/addressbook/libedata-book/e-book-backend.c
index 2be447d..ebe55b5 100644
--- a/addressbook/libedata-book/e-book-backend.c
+++ b/addressbook/libedata-book/e-book-backend.c
@@ -309,6 +309,9 @@ e_book_backend_set_cache_dir (EBookBackend *backend,
 	g_return_if_fail (E_IS_BOOK_BACKEND (backend));
 	g_return_if_fail (cache_dir != NULL);
 
+	if (g_strcmp0 (backend->priv->cache_dir, cache_dir) == 0)
+		return;
+
 	g_free (backend->priv->cache_dir);
 	backend->priv->cache_dir = g_strdup (cache_dir);
 
diff --git a/calendar/backends/contacts/e-source-contacts.c b/calendar/backends/contacts/e-source-contacts.c
index 32ba589..1d2040c 100644
--- a/calendar/backends/contacts/e-source-contacts.c
+++ b/calendar/backends/contacts/e-source-contacts.c
@@ -133,6 +133,9 @@ e_source_contacts_set_include_me (ESourceContacts *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_CONTACTS (extension));
 
+	if ((extension->priv->include_me ? 1 : 0) == (include_me ? 1 : 0))
+		return;
+
 	extension->priv->include_me = include_me;
 
 	g_object_notify (G_OBJECT (extension), "include-me");
diff --git a/calendar/backends/weather/e-source-weather.c b/calendar/backends/weather/e-source-weather.c
index 63db1bc..93975d5 100644
--- a/calendar/backends/weather/e-source-weather.c
+++ b/calendar/backends/weather/e-source-weather.c
@@ -216,6 +216,11 @@ e_source_weather_set_location (ESourceWeather *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->location, location) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->location);
 	extension->priv->location = e_util_strdup_strip (location);
 
@@ -238,6 +243,9 @@ e_source_weather_set_units (ESourceWeather *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_WEATHER (extension));
 
+	if (extension->priv->units == units)
+		return;
+
 	extension->priv->units = units;
 
 	g_object_notify (G_OBJECT (extension), "units");
diff --git a/calendar/libedata-cal/e-cal-backend.c b/calendar/libedata-cal/e-cal-backend.c
index 87e9631..8491f7d 100644
--- a/calendar/libedata-cal/e-cal-backend.c
+++ b/calendar/libedata-cal/e-cal-backend.c
@@ -513,6 +513,9 @@ e_cal_backend_set_cache_dir (ECalBackend *backend,
 	g_return_if_fail (E_IS_CAL_BACKEND (backend));
 	g_return_if_fail (cache_dir != NULL);
 
+	if (g_strcmp0 (backend->priv->cache_dir, cache_dir) == 0)
+		return;
+
 	g_free (backend->priv->cache_dir);
 	backend->priv->cache_dir = g_strdup (cache_dir);
 
diff --git a/camel/camel-data-cache.c b/camel/camel-data-cache.c
index e8395c7..5132cde 100644
--- a/camel/camel-data-cache.c
+++ b/camel/camel-data-cache.c
@@ -219,6 +219,9 @@ camel_data_cache_set_path (CamelDataCache *cdc,
 	g_return_if_fail (CAMEL_IS_DATA_CACHE (cdc));
 	g_return_if_fail (path != NULL);
 
+	if (g_strcmp0 (cdc->priv->path, path) == 0)
+		return;
+
 	g_free (cdc->priv->path);
 	cdc->priv->path = g_strdup (path);
 
diff --git a/camel/camel-disco-folder.c b/camel/camel-disco-folder.c
index 86afde5..11798d7 100644
--- a/camel/camel-disco-folder.c
+++ b/camel/camel-disco-folder.c
@@ -522,6 +522,9 @@ camel_disco_folder_set_offline_sync (CamelDiscoFolder *disco_folder,
 {
 	g_return_if_fail (CAMEL_IS_DISCO_FOLDER (disco_folder));
 
+	if ((disco_folder->priv->offline_sync ? 1 : 0) == (offline_sync ? 1 : 0))
+		return;
+
 	disco_folder->priv->offline_sync = offline_sync;
 
 	g_object_notify (G_OBJECT (disco_folder), "offline-sync");
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
index f5893d2..aa1fa40 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -2003,6 +2003,9 @@ camel_folder_set_full_name (CamelFolder *folder,
 {
 	g_return_if_fail (CAMEL_IS_FOLDER (folder));
 
+	if (g_strcmp0 (folder->priv->full_name, full_name) == 0)
+		return;
+
 	g_free (folder->priv->full_name);
 	folder->priv->full_name = g_strdup (full_name);
 
@@ -2043,6 +2046,9 @@ camel_folder_set_display_name (CamelFolder *folder,
 {
 	g_return_if_fail (CAMEL_IS_FOLDER (folder));
 
+	if (g_strcmp0 (folder->priv->display_name, display_name) == 0)
+		return;
+
 	g_free (folder->priv->display_name);
 	folder->priv->display_name = g_strdup (display_name);
 
@@ -2086,6 +2092,9 @@ camel_folder_set_description (CamelFolder *folder,
 {
 	g_return_if_fail (CAMEL_IS_FOLDER (folder));
 
+	if (g_strcmp0 (folder->priv->description, description) == 0)
+		return;
+
 	g_free (folder->priv->description);
 	folder->priv->description = g_strdup (description);
 
diff --git a/camel/camel-gpg-context.c b/camel/camel-gpg-context.c
index 72582cd..1763c02 100644
--- a/camel/camel-gpg-context.c
+++ b/camel/camel-gpg-context.c
@@ -2346,6 +2346,9 @@ camel_gpg_context_set_always_trust (CamelGpgContext *context,
 {
 	g_return_if_fail (CAMEL_IS_GPG_CONTEXT (context));
 
+	if ((context->priv->always_trust ? 1 : 0) == (always_trust ? 1 : 0))
+		return;
+
 	context->priv->always_trust = always_trust;
 
 	g_object_notify (G_OBJECT (context), "always-trust");
diff --git a/camel/camel-imapx-settings.c b/camel/camel-imapx-settings.c
index 2ad119a..faf3f63 100644
--- a/camel/camel-imapx-settings.c
+++ b/camel/camel-imapx-settings.c
@@ -678,6 +678,9 @@ camel_imapx_settings_set_batch_fetch_count (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if (settings->priv->batch_fetch_count == batch_fetch_count)
+		return;
+
 	settings->priv->batch_fetch_count = batch_fetch_count;
 
 	g_object_notify (G_OBJECT (settings), "batch-fetch-count");
@@ -716,6 +719,9 @@ camel_imapx_settings_set_check_all (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->check_all ? 1 : 0) == (check_all ? 1 : 0))
+		return;
+
 	settings->priv->check_all = check_all;
 
 	g_object_notify (G_OBJECT (settings), "check-all");
@@ -756,6 +762,9 @@ camel_imapx_settings_set_check_subscribed (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->check_subscribed ? 1 : 0) == (check_subscribed ? 1 : 0))
+		return;
+
 	settings->priv->check_subscribed = check_subscribed;
 
 	g_object_notify (G_OBJECT (settings), "check-subscribed");
@@ -805,6 +814,9 @@ camel_imapx_settings_set_concurrent_connections (CamelIMAPXSettings *settings,
 		MIN_CONCURRENT_CONNECTIONS,
 		MAX_CONCURRENT_CONNECTIONS);
 
+	if (settings->priv->concurrent_connections == concurrent_connections)
+		return;
+
 	settings->priv->concurrent_connections = concurrent_connections;
 
 	g_object_notify (G_OBJECT (settings), "concurrent-connections");
@@ -845,6 +857,9 @@ camel_imapx_settings_set_fetch_order (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if (settings->priv->fetch_order == fetch_order)
+		return;
+
 	settings->priv->fetch_order = fetch_order;
 
 	g_object_notify (G_OBJECT (settings), "fetch-order");
@@ -883,6 +898,9 @@ camel_imapx_settings_set_filter_all (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->filter_all ? 1 : 0) == (filter_all ? 1 : 0))
+		return;
+
 	settings->priv->filter_all = filter_all;
 
 	g_object_notify (G_OBJECT (settings), "filter-all");
@@ -923,6 +941,9 @@ camel_imapx_settings_set_filter_junk (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->filter_junk ? 1 : 0) == (filter_junk ? 1 : 0))
+		return;
+
 	settings->priv->filter_junk = filter_junk;
 
 	g_object_notify (G_OBJECT (settings), "filter-junk");
@@ -963,6 +984,9 @@ camel_imapx_settings_set_filter_junk_inbox (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->filter_junk_inbox ? 1 : 0) == (filter_junk_inbox ? 1 : 0))
+		return;
+
 	settings->priv->filter_junk_inbox = filter_junk_inbox;
 
 	g_object_notify (G_OBJECT (settings), "filter-junk-inbox");
@@ -1001,6 +1025,9 @@ camel_imapx_settings_set_mobile_mode (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->use_mobile_mode ? 1 : 0) == (mobile_mode ? 1 : 0))
+		return;
+
 	settings->priv->use_mobile_mode = mobile_mode;
 
 	g_object_notify (G_OBJECT (settings), "mobile-mode");
@@ -1077,6 +1104,11 @@ camel_imapx_settings_set_namespace (CamelIMAPXSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	if (g_strcmp0 (settings->priv->namespace, namespace_) == 0) {
+		g_mutex_unlock (settings->priv->property_lock);
+		return;
+	}
+
 	g_free (settings->priv->namespace);
 	settings->priv->namespace = g_strdup (namespace_);
 
@@ -1169,6 +1201,11 @@ camel_imapx_settings_set_shell_command (CamelIMAPXSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	if (g_strcmp0 (settings->priv->shell_command, shell_command) == 0) {
+		g_mutex_unlock (settings->priv->property_lock);
+		return;
+	}
+
 	g_free (settings->priv->shell_command);
 	settings->priv->shell_command = g_strdup (shell_command);
 
@@ -1212,6 +1249,9 @@ camel_imapx_settings_set_use_idle (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->use_idle ? 1 : 0) == (use_idle ? 1 : 0))
+		return;
+
 	settings->priv->use_idle = use_idle;
 
 	g_object_notify (G_OBJECT (settings), "use-idle");
@@ -1252,6 +1292,9 @@ camel_imapx_settings_set_use_namespace (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->use_namespace ? 1 : 0) == (use_namespace ? 1 : 0))
+		return;
+
 	settings->priv->use_namespace = use_namespace;
 
 	g_object_notify (G_OBJECT (settings), "use-namespace");
@@ -1294,6 +1337,9 @@ camel_imapx_settings_set_use_qresync (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->use_qresync ? 1 : 0) == (use_qresync ? 1 : 0))
+		return;
+
 	settings->priv->use_qresync = use_qresync;
 
 	g_object_notify (G_OBJECT (settings), "use-qresync");
@@ -1349,6 +1395,9 @@ camel_imapx_settings_set_use_shell_command (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->use_shell_command ? 1 : 0) == (use_shell_command ? 1 : 0))
+		return;
+
 	settings->priv->use_shell_command = use_shell_command;
 
 	g_object_notify (G_OBJECT (settings), "use-shell-command");
@@ -1389,6 +1438,9 @@ camel_imapx_settings_set_use_subscriptions (CamelIMAPXSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
 
+	if ((settings->priv->use_subscriptions ? 1 : 0) == (use_subscriptions ? 1 : 0))
+		return;
+
 	settings->priv->use_subscriptions = use_subscriptions;
 
 	g_object_notify (G_OBJECT (settings), "use-subscriptions");
diff --git a/camel/camel-local-settings.c b/camel/camel-local-settings.c
index dabe963..34f6ddf 100644
--- a/camel/camel-local-settings.c
+++ b/camel/camel-local-settings.c
@@ -186,6 +186,7 @@ camel_local_settings_set_path (CamelLocalSettings *settings,
                                const gchar *path)
 {
 	gsize length = 0;
+	gchar *new_path;
 
 	g_return_if_fail (CAMEL_IS_LOCAL_SETTINGS (settings));
 
@@ -202,8 +203,16 @@ camel_local_settings_set_path (CamelLocalSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	new_path = g_strndup (path, length);
+
+	if (g_strcmp0 (settings->priv->path, new_path) == 0) {
+		g_mutex_unlock (settings->priv->property_lock);
+		g_free (new_path);
+		return;
+	}
+
 	g_free (settings->priv->path);
-	settings->priv->path = g_strndup (path, length);
+	settings->priv->path = new_path;
 
 	g_mutex_unlock (settings->priv->property_lock);
 
diff --git a/camel/camel-medium.c b/camel/camel-medium.c
index 9d726a0..633ced8 100644
--- a/camel/camel-medium.c
+++ b/camel/camel-medium.c
@@ -116,6 +116,9 @@ static void
 medium_set_content (CamelMedium *medium,
                     CamelDataWrapper *content)
 {
+	if (medium->priv->content == content)
+		return;
+
 	if (content != NULL)
 		g_object_ref (content);
 
diff --git a/camel/camel-object.c b/camel/camel-object.c
index d3a00c1..0a791fa 100644
--- a/camel/camel-object.c
+++ b/camel/camel-object.c
@@ -502,6 +502,9 @@ camel_object_set_state_filename (CamelObject *object,
 {
 	g_return_if_fail (CAMEL_IS_OBJECT (object));
 
+	if (g_strcmp0 (object->priv->state_filename, state_filename) == 0)
+		return;
+
 	g_free (object->priv->state_filename);
 	object->priv->state_filename = g_strdup (state_filename);
 
diff --git a/camel/camel-offline-folder.c b/camel/camel-offline-folder.c
index bb61b13..178616d 100644
--- a/camel/camel-offline-folder.c
+++ b/camel/camel-offline-folder.c
@@ -369,6 +369,9 @@ camel_offline_folder_set_offline_sync (CamelOfflineFolder *folder,
 {
 	g_return_if_fail (CAMEL_IS_OFFLINE_FOLDER (folder));
 
+	if ((folder->priv->offline_sync ? 1 : 0) == (offline_sync ? 1 : 0))
+		return;
+
 	folder->priv->offline_sync = offline_sync;
 
 	g_object_notify (G_OBJECT (folder), "offline-sync");
diff --git a/camel/camel-offline-settings.c b/camel/camel-offline-settings.c
index 7411fee..cf9b222 100644
--- a/camel/camel-offline-settings.c
+++ b/camel/camel-offline-settings.c
@@ -140,6 +140,9 @@ camel_offline_settings_set_stay_synchronized (CamelOfflineSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_OFFLINE_SETTINGS (settings));
 
+	if ((settings->priv->stay_synchronized ? 1 : 0) == (stay_synchronized ? 1 : 0))
+		return;
+
 	settings->priv->stay_synchronized = stay_synchronized;
 
 	g_object_notify (G_OBJECT (settings), "stay-synchronized");
diff --git a/camel/camel-sasl.c b/camel/camel-sasl.c
index 9b21c56..f57f013 100644
--- a/camel/camel-sasl.c
+++ b/camel/camel-sasl.c
@@ -645,6 +645,9 @@ camel_sasl_set_authenticated (CamelSasl *sasl,
 {
 	g_return_if_fail (CAMEL_IS_SASL (sasl));
 
+	if ((sasl->priv->authenticated ? 1 : 0) == (authenticated ? 1 : 0))
+		return;
+
 	sasl->priv->authenticated = authenticated;
 
 	g_object_notify (G_OBJECT (sasl), "authenticated");
diff --git a/camel/camel-service.c b/camel/camel-service.c
index e8fd330..d3a321a 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -1303,6 +1303,9 @@ camel_service_set_display_name (CamelService *service,
 {
 	g_return_if_fail (CAMEL_IS_SERVICE (service));
 
+	if (g_strcmp0 (service->priv->display_name, display_name) == 0)
+		return;
+
 	if (display_name != NULL)
 		g_return_if_fail (g_utf8_validate (display_name, -1, NULL));
 
@@ -1348,6 +1351,9 @@ camel_service_set_password (CamelService *service,
 {
 	g_return_if_fail (CAMEL_IS_SERVICE (service));
 
+	if (g_strcmp0 (service->priv->password, password) == 0)
+		return;
+
 	g_free (service->priv->password);
 	service->priv->password = g_strdup (password);
 
@@ -1496,6 +1502,9 @@ camel_service_set_settings (CamelService *service,
 
 	g_return_if_fail (CAMEL_IS_SERVICE (service));
 
+	if (service->priv->settings == settings)
+		return;
+
 	class = CAMEL_SERVICE_GET_CLASS (service);
 
 	if (settings != NULL) {
diff --git a/camel/camel-store-settings.c b/camel/camel-store-settings.c
index 69f2f9f..36783a0 100644
--- a/camel/camel-store-settings.c
+++ b/camel/camel-store-settings.c
@@ -136,6 +136,9 @@ camel_store_settings_set_filter_inbox (CamelStoreSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_STORE_SETTINGS (settings));
 
+	if ((settings->priv->filter_inbox ? 1 : 0) == (filter_inbox ? 1 : 0))
+		return;
+
 	settings->priv->filter_inbox = filter_inbox;
 
 	g_object_notify (G_OBJECT (settings), "filter-inbox");
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
index 1319ace..cfbb03e 100644
--- a/camel/providers/imap/camel-imap-folder.c
+++ b/camel/providers/imap/camel-imap-folder.c
@@ -566,6 +566,9 @@ camel_imap_folder_set_check_folder (CamelImapFolder *imap_folder,
 
 	g_return_if_fail (CAMEL_IS_IMAP_FOLDER (imap_folder));
 
+	if ((imap_folder->priv->check_folder ? 1 : 0) == (check_folder ? 1 : 0))
+		return;
+
 	imap_folder->priv->check_folder = check_folder;
 
 	folder = CAMEL_FOLDER (imap_folder);
diff --git a/camel/providers/imap/camel-imap-settings.c b/camel/providers/imap/camel-imap-settings.c
index ea65f71..0f78dc2 100644
--- a/camel/providers/imap/camel-imap-settings.c
+++ b/camel/providers/imap/camel-imap-settings.c
@@ -667,6 +667,9 @@ camel_imap_settings_set_check_all (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->check_all ? 1 : 0) == (check_all ? 1 : 0))
+		return;
+
 	settings->priv->check_all = check_all;
 
 	g_object_notify (G_OBJECT (settings), "check-all");
@@ -707,6 +710,9 @@ camel_imap_settings_set_check_subscribed (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->check_subscribed ? 1 : 0) == (check_subscribed ? 1 : 0))
+		return;
+
 	settings->priv->check_subscribed = check_subscribed;
 
 	g_object_notify (G_OBJECT (settings), "check-subscribed");
@@ -751,6 +757,9 @@ camel_imap_settings_set_fetch_headers (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if (settings->priv->fetch_headers == fetch_headers)
+		return;
+
 	settings->priv->fetch_headers = fetch_headers;
 
 	g_object_notify (G_OBJECT (settings), "fetch-headers");
@@ -809,6 +818,23 @@ camel_imap_settings_dup_fetch_headers_extra (CamelImapSettings *settings)
 	return duplicate;
 }
 
+static gboolean
+fetch_headers_equal (const gchar * const *h1,
+		     const gchar * const *h2)
+{
+	gint ii;
+
+	if (!h1 || !h2)
+		return h1 == h2;
+
+	for (ii = 0; h1[ii] && h2[ii]; ii++) {
+		if (g_strcmp0 (h1[ii], h2[ii]) != 0)
+			return FALSE;
+	}
+
+	return !h1[ii] && h1[ii] == h2[ii];
+}
+
 /**
  * camel_imap_settings_set_fetch_headers_extra:
  * @settings: a #CamelImapSettings
@@ -830,6 +856,13 @@ camel_imap_settings_set_fetch_headers_extra (CamelImapSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	if (fetch_headers_equal (
+		(const gchar * const *) settings->priv->fetch_headers_extra,
+		fetch_headers_extra)) {
+		g_mutex_unlock (settings->priv->property_lock);
+		return;
+	}
+
 	g_strfreev (settings->priv->fetch_headers_extra);
 	settings->priv->fetch_headers_extra =
 		g_strdupv ((gchar **) fetch_headers_extra);
@@ -874,6 +907,9 @@ camel_imap_settings_set_filter_junk (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->filter_junk ? 1 : 0) == (filter_junk ? 1 : 0))
+		return;
+
 	settings->priv->filter_junk = filter_junk;
 
 	g_object_notify (G_OBJECT (settings), "filter-junk");
@@ -912,6 +948,9 @@ camel_imap_settings_set_filter_all (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->filter_all ? 1 : 0) == (filter_all ? 1 : 0))
+		return;
+
 	settings->priv->filter_all = filter_all;
 
 	g_object_notify (G_OBJECT (settings), "filter-all");
@@ -952,6 +991,9 @@ camel_imap_settings_set_filter_junk_inbox (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->filter_junk_inbox ? 1 : 0) == (filter_junk_inbox ? 1 : 0))
+		return;
+
 	settings->priv->filter_junk_inbox = filter_junk_inbox;
 
 	g_object_notify (G_OBJECT (settings), "filter-junk-inbox");
@@ -1028,6 +1070,11 @@ camel_imap_settings_set_namespace (CamelImapSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	if (g_strcmp0 (settings->priv->namespace, namespace) == 0) {
+		g_mutex_unlock (settings->priv->property_lock);
+		return;
+	}
+
 	g_free (settings->priv->namespace);
 	settings->priv->namespace = g_strdup (namespace);
 
@@ -1108,6 +1155,11 @@ camel_imap_settings_set_real_junk_path (CamelImapSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	if (g_strcmp0 (settings->priv->real_junk_path, real_junk_path) == 0) {
+		g_mutex_unlock (settings->priv->property_lock);
+		return;
+	}
+
 	g_free (settings->priv->real_junk_path);
 	settings->priv->real_junk_path = g_strdup (real_junk_path);
 
@@ -1188,6 +1240,11 @@ camel_imap_settings_set_real_trash_path (CamelImapSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	if (g_strcmp0 (settings->priv->real_trash_path, real_trash_path) == 0) {
+		g_mutex_unlock (settings->priv->property_lock);
+		return;
+	}
+
 	g_free (settings->priv->real_trash_path);
 	settings->priv->real_trash_path = g_strdup (real_trash_path);
 
@@ -1280,6 +1337,11 @@ camel_imap_settings_set_shell_command (CamelImapSettings *settings,
 
 	g_mutex_lock (settings->priv->property_lock);
 
+	if (g_strcmp0 (settings->priv->shell_command, shell_command) == 0) {
+		g_mutex_unlock (settings->priv->property_lock);
+		return;
+	}
+
 	g_free (settings->priv->shell_command);
 	settings->priv->shell_command = g_strdup (shell_command);
 
@@ -1323,6 +1385,9 @@ camel_imap_settings_set_use_namespace (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->use_namespace ? 1 : 0) == (use_namespace ? 1 : 0))
+		return;
+
 	settings->priv->use_namespace = use_namespace;
 
 	g_object_notify (G_OBJECT (settings), "use-namespace");
@@ -1363,6 +1428,9 @@ camel_imap_settings_set_use_real_junk_path (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->use_real_junk_path ? 1 : 0) == (use_real_junk_path ? 1 : 0))
+		return;
+
 	settings->priv->use_real_junk_path = use_real_junk_path;
 
 	g_object_notify (G_OBJECT (settings), "use-real-junk-path");
@@ -1403,6 +1471,9 @@ camel_imap_settings_set_use_real_trash_path (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->use_real_trash_path ? 1 : 0) == (use_real_trash_path ? 1 : 0))
+		return;
+
 	settings->priv->use_real_trash_path = use_real_trash_path;
 
 	g_object_notify (G_OBJECT (settings), "use-real-trash-path");
@@ -1458,6 +1529,9 @@ camel_imap_settings_set_use_shell_command (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->use_shell_command ? 1 : 0) == (use_shell_command ? 1 : 0))
+		return;
+
 	settings->priv->use_shell_command = use_shell_command;
 
 	g_object_notify (G_OBJECT (settings), "use-shell-command");
@@ -1498,6 +1572,9 @@ camel_imap_settings_set_use_subscriptions (CamelImapSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_IMAP_SETTINGS (settings));
 
+	if ((settings->priv->use_subscriptions ? 1 : 0) == (use_subscriptions ? 1 : 0))
+		return;
+
 	settings->priv->use_subscriptions = use_subscriptions;
 
 	g_object_notify (G_OBJECT (settings), "use-subscriptions");
diff --git a/camel/providers/local/camel-local-folder.c b/camel/providers/local/camel-local-folder.c
index 71f957a..a90edd7 100644
--- a/camel/providers/local/camel-local-folder.c
+++ b/camel/providers/local/camel-local-folder.c
@@ -667,6 +667,9 @@ camel_local_folder_set_index_body (CamelLocalFolder *local_folder,
 {
 	g_return_if_fail (CAMEL_IS_LOCAL_FOLDER (local_folder));
 
+	if (((local_folder->flags & CAMEL_STORE_FOLDER_BODY_INDEX) ? 1 : 0) == (index_body ? 1 : 0))
+		return;
+
 	if (index_body)
 		local_folder->flags |= CAMEL_STORE_FOLDER_BODY_INDEX;
 	else
diff --git a/camel/providers/local/camel-local-store.c b/camel/providers/local/camel-local-store.c
index 5c8a2e1..48421a8 100644
--- a/camel/providers/local/camel-local-store.c
+++ b/camel/providers/local/camel-local-store.c
@@ -797,6 +797,9 @@ camel_local_store_set_need_summary_check (CamelLocalStore *store,
 {
 	g_return_if_fail (CAMEL_IS_LOCAL_STORE (store));
 
+	if ((store->priv->need_summary_check ? 1 : 0) == (need_summary_check ? 1 : 0))
+		return;
+
 	store->priv->need_summary_check = need_summary_check;
 
 	g_object_notify (G_OBJECT (store), "need-summary-check");
diff --git a/camel/providers/local/camel-mh-settings.c b/camel/providers/local/camel-mh-settings.c
index fc5c936..12a68a0 100644
--- a/camel/providers/local/camel-mh-settings.c
+++ b/camel/providers/local/camel-mh-settings.c
@@ -138,6 +138,9 @@ camel_mh_settings_set_use_dot_folders (CamelMhSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_MH_SETTINGS (settings));
 
+	if ((settings->priv->use_dot_folders ? 1 : 0) == (use_dot_folders ? 1 : 0))
+		return;
+
 	settings->priv->use_dot_folders = use_dot_folders;
 
 	g_object_notify (G_OBJECT (settings), "use-dot-folders");
diff --git a/camel/providers/local/camel-spool-settings.c b/camel/providers/local/camel-spool-settings.c
index 0fb60c1..117d511 100644
--- a/camel/providers/local/camel-spool-settings.c
+++ b/camel/providers/local/camel-spool-settings.c
@@ -136,6 +136,9 @@ camel_spool_settings_set_use_xstatus_headers (CamelSpoolSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_SPOOL_SETTINGS (settings));
 
+	if ((settings->priv->use_xstatus_headers ? 1 : 0) == (use_xstatus_headers ? 1 : 0))
+		return;
+
 	settings->priv->use_xstatus_headers = use_xstatus_headers;
 
 	g_object_notify (G_OBJECT (settings), "use-xstatus-headers");
diff --git a/camel/providers/nntp/camel-nntp-settings.c b/camel/providers/nntp/camel-nntp-settings.c
index 7c66449..b775d5c 100644
--- a/camel/providers/nntp/camel-nntp-settings.c
+++ b/camel/providers/nntp/camel-nntp-settings.c
@@ -290,6 +290,9 @@ camel_nntp_settings_set_filter_all (CamelNNTPSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_NNTP_SETTINGS (settings));
 
+	if ((settings->priv->filter_all ? 1 : 0) == (filter_all ? 1 : 0))
+		return;
+
 	settings->priv->filter_all = filter_all;
 
 	g_object_notify (G_OBJECT (settings), "filter-all");
@@ -336,6 +339,9 @@ camel_nntp_settings_set_folder_hierarchy_relative (CamelNNTPSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_NNTP_SETTINGS (settings));
 
+	if ((settings->priv->folder_hierarchy_relative ? 1 : 0) == (folder_hierarchy_relative ? 1 : 0))
+		return;
+
 	settings->priv->folder_hierarchy_relative = folder_hierarchy_relative;
 
 	g_object_notify (G_OBJECT (settings), "folder-hierarchy-relative");
@@ -376,6 +382,9 @@ camel_nntp_settings_set_short_folder_names (CamelNNTPSettings *settings,
 {
 	g_return_if_fail (CAMEL_IS_NNTP_SETTINGS (settings));
 
+	if ((settings->priv->short_folder_names ? 1 : 0) == (short_folder_names ? 1 : 0))
+		return;
+
 	settings->priv->short_folder_names = short_folder_names;
 
 	g_object_notify (G_OBJECT (settings), "short-folder-names");
diff --git a/camel/providers/pop3/camel-pop3-settings.c b/camel/providers/pop3/camel-pop3-settings.c
index 2289ef6..f906c01 100644
--- a/camel/providers/pop3/camel-pop3-settings.c
+++ b/camel/providers/pop3/camel-pop3-settings.c
@@ -407,6 +407,9 @@ camel_pop3_settings_set_delete_after_days (CamelPOP3Settings *settings,
 {
 	g_return_if_fail (CAMEL_IS_POP3_SETTINGS (settings));
 
+	if (settings->priv->delete_after_days == delete_after_days)
+		return;
+
 	settings->priv->delete_after_days = delete_after_days;
 
 	g_object_notify (G_OBJECT (settings), "delete-after-days");
@@ -453,6 +456,9 @@ camel_pop3_settings_set_delete_expunged (CamelPOP3Settings *settings,
 {
 	g_return_if_fail (CAMEL_IS_POP3_SETTINGS (settings));
 
+	if ((settings->priv->delete_expunged ? 1 : 0) == (delete_expunged ? 1 : 0))
+		return;
+
 	settings->priv->delete_expunged = delete_expunged;
 
 	g_object_notify (G_OBJECT (settings), "delete-expunged");
@@ -495,6 +501,9 @@ camel_pop3_settings_set_disable_extensions (CamelPOP3Settings *settings,
 {
 	g_return_if_fail (CAMEL_IS_POP3_SETTINGS (settings));
 
+	if ((settings->priv->disable_extensions ? 1 : 0) == (disable_extensions ? 1 : 0))
+		return;
+
 	settings->priv->disable_extensions = disable_extensions;
 
 	g_object_notify (G_OBJECT (settings), "disable-extensions");
@@ -535,6 +544,9 @@ camel_pop3_settings_set_keep_on_server (CamelPOP3Settings *settings,
 {
 	g_return_if_fail (CAMEL_IS_POP3_SETTINGS (settings));
 
+	if ((settings->priv->keep_on_server ? 1 : 0) == (keep_on_server ? 1 : 0))
+		return;
+
 	settings->priv->keep_on_server = keep_on_server;
 
 	g_object_notify (G_OBJECT (settings), "keep-on-server");
@@ -573,6 +585,9 @@ camel_pop3_settings_set_auto_fetch (CamelPOP3Settings *settings,
 {
 	g_return_if_fail (CAMEL_IS_POP3_SETTINGS (settings));
 
+	if ((settings->priv->auto_fetch ? 1 : 0) == (auto_fetch ? 1 : 0))
+		return;
+
 	settings->priv->auto_fetch = auto_fetch;
 
 	g_object_notify (G_OBJECT (settings), "auto-fetch");
@@ -611,6 +626,9 @@ camel_pop3_settings_set_mobile_mode (CamelPOP3Settings *settings,
 {
 	g_return_if_fail (CAMEL_IS_POP3_SETTINGS (settings));
 
+	if ((settings->priv->mobile_mode ? 1 : 0) == (mobile_mode ? 1 : 0))
+		return;
+
 	settings->priv->mobile_mode = mobile_mode;
 
 	g_object_notify (G_OBJECT (settings), "mobile-mode");
@@ -649,6 +667,9 @@ camel_pop3_settings_set_batch_fetch_count (CamelPOP3Settings *settings,
 {
 	g_return_if_fail (CAMEL_IS_POP3_SETTINGS (settings));
 
+	if ((settings->priv->batch_fetch_count ? 1 : 0) == (batch_fetch_count ? 1 : 0))
+		return;
+
 	settings->priv->batch_fetch_count = batch_fetch_count;
 
 	g_object_notify (G_OBJECT (settings), "batch-fetch-count");
diff --git a/libebackend/e-authentication-session.c b/libebackend/e-authentication-session.c
index 34b35f4..138b024 100644
--- a/libebackend/e-authentication-session.c
+++ b/libebackend/e-authentication-session.c
@@ -953,6 +953,11 @@ e_authentication_session_set_prompt_title (EAuthenticationSession *session,
 
 	g_mutex_lock (session->priv->property_lock);
 
+	if (g_strcmp0 (session->priv->prompt_title, prompt_title) == 0) {
+		g_mutex_unlock (session->priv->property_lock);
+		return;
+	}
+
 	g_free (session->priv->prompt_title);
 	session->priv->prompt_title = g_strdup (prompt_title);
 
@@ -1029,6 +1034,11 @@ e_authentication_session_set_prompt_message (EAuthenticationSession *session,
 
 	g_mutex_lock (session->priv->property_lock);
 
+	if (g_strcmp0 (session->priv->prompt_message, prompt_message) == 0) {
+		g_mutex_unlock (session->priv->property_lock);
+		return;
+	}
+
 	g_free (session->priv->prompt_message);
 	session->priv->prompt_message = g_strdup (prompt_message);
 
@@ -1106,6 +1116,11 @@ e_authentication_session_set_prompt_description (EAuthenticationSession *session
 
 	g_mutex_lock (session->priv->property_lock);
 
+	if (g_strcmp0 (session->priv->prompt_description, prompt_description) == 0) {
+		g_mutex_unlock (session->priv->property_lock);
+		return;
+	}
+
 	g_free (session->priv->prompt_description);
 	session->priv->prompt_description = g_strdup (prompt_description);
 
diff --git a/libebackend/e-backend.c b/libebackend/e-backend.c
index a2e79f1..00ab0f6 100644
--- a/libebackend/e-backend.c
+++ b/libebackend/e-backend.c
@@ -225,7 +225,7 @@ e_backend_set_online (EBackend *backend,
 	g_return_if_fail (E_IS_BACKEND (backend));
 
 	/* Avoid unnecessary "notify" signals. */
-	if (online == backend->priv->online)
+	if ((online ? 1 : 0) == (backend->priv->online ? 1 : 0))
 		return;
 
 	backend->priv->online = online;
diff --git a/libebackend/e-server-side-source.c b/libebackend/e-server-side-source.c
index ace5f7a..0c586aa 100644
--- a/libebackend/e-server-side-source.c
+++ b/libebackend/e-server-side-source.c
@@ -1333,6 +1333,9 @@ e_server_side_source_set_allow_auth_prompt (EServerSideSource *source,
 {
 	g_return_if_fail (E_IS_SERVER_SIDE_SOURCE (source));
 
+	if ((source->priv->allow_auth_prompt ? 1 : 0) == (allow_auth_prompt ? 1 : 0))
+		return;
+
 	source->priv->allow_auth_prompt = allow_auth_prompt;
 
 	g_object_notify (G_OBJECT (source), "allow-auth-prompt");
@@ -1382,6 +1385,9 @@ e_server_side_source_set_write_directory (EServerSideSource *source,
 	g_return_if_fail (E_IS_SERVER_SIDE_SOURCE (source));
 	g_return_if_fail (write_directory != NULL);
 
+	if (g_strcmp0 (source->priv->write_directory, write_directory) == 0)
+		return;
+
 	g_free (source->priv->write_directory);
 	source->priv->write_directory = g_strdup (write_directory);
 
diff --git a/libedataserver/e-source-alarms.c b/libedataserver/e-source-alarms.c
index 8238a07..f738c9a 100644
--- a/libedataserver/e-source-alarms.c
+++ b/libedataserver/e-source-alarms.c
@@ -211,6 +211,9 @@ e_source_alarms_set_include_me (ESourceAlarms *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_ALARMS (extension));
 
+	if ((extension->priv->include_me ? 1 : 0) == (include_me ? 1 : 0))
+		return;
+
 	extension->priv->include_me = include_me;
 
 	g_object_notify (G_OBJECT (extension), "include-me");
@@ -303,6 +306,11 @@ e_source_alarms_set_last_notified (ESourceAlarms *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->last_notified, last_notified) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->last_notified);
 	extension->priv->last_notified = g_strdup (last_notified);
 
diff --git a/libedataserver/e-source-authentication.c b/libedataserver/e-source-authentication.c
index 7122734..914e8a9 100644
--- a/libedataserver/e-source-authentication.c
+++ b/libedataserver/e-source-authentication.c
@@ -327,6 +327,11 @@ e_source_authentication_set_host (ESourceAuthentication *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->host, host) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->host);
 	extension->priv->host = e_util_strdup_strip (host);
 
@@ -409,6 +414,11 @@ e_source_authentication_set_method (ESourceAuthentication *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->method, method) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->method);
 	extension->priv->method = e_util_strdup_strip (method);
 
@@ -453,6 +463,9 @@ e_source_authentication_set_port (ESourceAuthentication *extension,
 {
 	g_return_if_fail (E_SOURCE_AUTHENTICATION (extension));
 
+	if (extension->priv->port == port)
+		return;
+
 	extension->priv->port = port;
 
 	g_object_notify (G_OBJECT (extension), "port");
@@ -528,6 +541,11 @@ e_source_authentication_set_user (ESourceAuthentication *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->user, user) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->user);
 	extension->priv->user = e_util_strdup_strip (user);
 
diff --git a/libedataserver/e-source-autocomplete.c b/libedataserver/e-source-autocomplete.c
index 93148e2..22d7a0f 100644
--- a/libedataserver/e-source-autocomplete.c
+++ b/libedataserver/e-source-autocomplete.c
@@ -162,6 +162,9 @@ e_source_autocomplete_set_include_me (ESourceAutocomplete *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_AUTOCOMPLETE (extension));
 
+	if ((extension->priv->include_me ? 1 : 0) == (include_me ? 1 : 0))
+		return;
+
 	extension->priv->include_me = include_me;
 
 	g_object_notify (G_OBJECT (extension), "include-me");
diff --git a/libedataserver/e-source-backend.c b/libedataserver/e-source-backend.c
index 301ceb2..1820724 100644
--- a/libedataserver/e-source-backend.c
+++ b/libedataserver/e-source-backend.c
@@ -205,6 +205,11 @@ e_source_backend_set_backend_name (ESourceBackend *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->backend_name, backend_name) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->backend_name);
 	extension->priv->backend_name = e_util_strdup_strip (backend_name);
 
diff --git a/libedataserver/e-source-collection.c b/libedataserver/e-source-collection.c
index ce89226..ea41270 100644
--- a/libedataserver/e-source-collection.c
+++ b/libedataserver/e-source-collection.c
@@ -302,6 +302,11 @@ e_source_collection_set_identity (ESourceCollection *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->identity, identity) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->identity);
 	extension->priv->identity = e_util_strdup_strip (identity);
 
@@ -356,6 +361,9 @@ e_source_collection_set_calendar_enabled (ESourceCollection *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_COLLECTION (extension));
 
+	if ((extension->priv->calendar_enabled ? 1 : 0) == (calendar_enabled ? 1 : 0))
+		return;
+
 	extension->priv->calendar_enabled = calendar_enabled;
 
 	g_object_notify (G_OBJECT (extension), "calendar-enabled");
@@ -407,6 +415,9 @@ e_source_collection_set_contacts_enabled (ESourceCollection *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_COLLECTION (extension));
 
+	if ((extension->priv->contacts_enabled ? 1 : 0) == (contacts_enabled ? 1 : 0))
+		return;
+
 	extension->priv->contacts_enabled = contacts_enabled;
 
 	g_object_notify (G_OBJECT (extension), "contacts-enabled");
@@ -457,6 +468,9 @@ e_source_collection_set_mail_enabled (ESourceCollection *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_COLLECTION (extension));
 
+	if ((extension->priv->mail_enabled ? 1 : 0) == (mail_enabled ? 1 : 0))
+		return;
+
 	extension->priv->mail_enabled = mail_enabled;
 
 	g_object_notify (G_OBJECT (extension), "mail-enabled");
diff --git a/libedataserver/e-source-goa.c b/libedataserver/e-source-goa.c
index 9efd009..49496e2 100644
--- a/libedataserver/e-source-goa.c
+++ b/libedataserver/e-source-goa.c
@@ -218,6 +218,11 @@ e_source_goa_set_account_id (ESourceGoa *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->account_id, account_id) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->account_id);
 	extension->priv->account_id = e_util_strdup_strip (account_id);
 
diff --git a/libedataserver/e-source-mail-account.c b/libedataserver/e-source-mail-account.c
index 8331a87..1315e8c 100644
--- a/libedataserver/e-source-mail-account.c
+++ b/libedataserver/e-source-mail-account.c
@@ -215,6 +215,11 @@ e_source_mail_account_set_identity_uid (ESourceMailAccount *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->identity_uid, identity_uid) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->identity_uid);
 	extension->priv->identity_uid = g_strdup (identity_uid);
 
diff --git a/libedataserver/e-source-mail-composition.c b/libedataserver/e-source-mail-composition.c
index b2b71db..0d764a0 100644
--- a/libedataserver/e-source-mail-composition.c
+++ b/libedataserver/e-source-mail-composition.c
@@ -317,6 +317,23 @@ e_source_mail_composition_dup_bcc (ESourceMailComposition *extension)
 	return duplicate;
 }
 
+static gboolean
+strv_equal (const gchar * const *strv1,
+	    const gchar * const *strv2)
+{
+	gint ii;
+
+	if (!strv1 || !strv2)
+		return strv1 == strv2;
+
+	for (ii = 0; strv1[ii] && strv2[ii]; ii++) {
+		if (g_strcmp0 (strv1[ii], strv2[ii]) != 0)
+			return FALSE;
+	}
+
+	return !strv1[ii] && strv1[ii] == strv2[ii];
+}
+
 /**
  * e_source_mail_composition_set_bcc:
  * @extension: an #ESource
@@ -336,6 +353,11 @@ e_source_mail_composition_set_bcc (ESourceMailComposition *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (strv_equal ((const gchar * const *) extension->priv->bcc, bcc)) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_strfreev (extension->priv->bcc);
 	extension->priv->bcc = g_strdupv ((gchar **) bcc);
 
@@ -418,6 +440,11 @@ e_source_mail_composition_set_cc (ESourceMailComposition *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (strv_equal ((const gchar * const *) extension->priv->cc, cc)) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_strfreev (extension->priv->cc);
 	extension->priv->cc = g_strdupv ((gchar **) cc);
 
@@ -499,6 +526,11 @@ e_source_mail_composition_set_drafts_folder (ESourceMailComposition *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->drafts_folder, drafts_folder) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->drafts_folder);
 	extension->priv->drafts_folder = e_util_strdup_strip (drafts_folder);
 
@@ -544,6 +576,9 @@ e_source_mail_composition_set_sign_imip (ESourceMailComposition *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_MAIL_COMPOSITION (extension));
 
+	if ((extension->priv->sign_imip ? 1 : 0) == (sign_imip ? 1 : 0))
+		return;
+
 	extension->priv->sign_imip = sign_imip;
 
 	g_object_notify (G_OBJECT (extension), "sign-imip");
@@ -622,6 +657,11 @@ e_source_mail_composition_set_templates_folder (ESourceMailComposition *extensio
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->templates_folder, templates_folder) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->templates_folder);
 	extension->priv->templates_folder = e_util_strdup_strip (templates_folder);
 
diff --git a/libedataserver/e-source-mail-identity.c b/libedataserver/e-source-mail-identity.c
index 7e7a330..ab43cca 100644
--- a/libedataserver/e-source-mail-identity.c
+++ b/libedataserver/e-source-mail-identity.c
@@ -333,6 +333,11 @@ e_source_mail_identity_set_address (ESourceMailIdentity *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->address, address) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->address);
 	extension->priv->address = e_util_strdup_strip (address);
 
@@ -411,6 +416,12 @@ e_source_mail_identity_set_name (ESourceMailIdentity *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (extension->priv->name != NULL &&
+	    g_strcmp0 (extension->priv->name, name) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->name);
 	extension->priv->name = e_util_strdup_strip (name);
 
@@ -492,6 +503,11 @@ e_source_mail_identity_set_organization (ESourceMailIdentity *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->organization, organization) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->organization);
 	extension->priv->organization = e_util_strdup_strip (organization);
 
@@ -572,6 +588,11 @@ e_source_mail_identity_set_reply_to (ESourceMailIdentity *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->reply_to, reply_to) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->reply_to);
 	extension->priv->reply_to = e_util_strdup_strip (reply_to);
 
@@ -659,6 +680,11 @@ e_source_mail_identity_set_signature_uid (ESourceMailIdentity *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->signature_uid, signature_uid) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->signature_uid);
 	extension->priv->signature_uid = g_strdup (signature_uid);
 
diff --git a/libedataserver/e-source-mail-signature.c b/libedataserver/e-source-mail-signature.c
index b63aefb..68de9db 100644
--- a/libedataserver/e-source-mail-signature.c
+++ b/libedataserver/e-source-mail-signature.c
@@ -337,6 +337,11 @@ e_source_mail_signature_set_mime_type (ESourceMailSignature *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->mime_type, mime_type) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->mime_type);
 	extension->priv->mime_type = e_util_strdup_strip (mime_type);
 
diff --git a/libedataserver/e-source-mail-submission.c b/libedataserver/e-source-mail-submission.c
index 448939f..49b3948 100644
--- a/libedataserver/e-source-mail-submission.c
+++ b/libedataserver/e-source-mail-submission.c
@@ -249,6 +249,11 @@ e_source_mail_submission_set_sent_folder (ESourceMailSubmission *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->sent_folder, sent_folder) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->sent_folder);
 	extension->priv->sent_folder = e_util_strdup_strip (sent_folder);
 
@@ -325,6 +330,11 @@ e_source_mail_submission_set_transport_uid (ESourceMailSubmission *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->transport_uid, transport_uid) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->transport_uid);
 	extension->priv->transport_uid = g_strdup (transport_uid);
 
diff --git a/libedataserver/e-source-mdn.c b/libedataserver/e-source-mdn.c
index 6776e88..7d7a32f 100644
--- a/libedataserver/e-source-mdn.c
+++ b/libedataserver/e-source-mdn.c
@@ -166,6 +166,9 @@ e_source_mdn_set_response_policy (ESourceMDN *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_MDN (extension));
 
+	if (extension->priv->response_policy == response_policy)
+		return;
+
 	extension->priv->response_policy = response_policy;
 
 	g_object_notify (G_OBJECT (extension), "response-policy");
diff --git a/libedataserver/e-source-offline.c b/libedataserver/e-source-offline.c
index 2a34cb9..94d61b1 100644
--- a/libedataserver/e-source-offline.c
+++ b/libedataserver/e-source-offline.c
@@ -162,6 +162,9 @@ e_source_offline_set_stay_synchronized (ESourceOffline *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_OFFLINE (extension));
 
+	if ((extension->priv->stay_synchronized ? 1 : 0) == (stay_synchronized ? 1 : 0))
+		return;
+
 	extension->priv->stay_synchronized = stay_synchronized;
 
 	g_object_notify (G_OBJECT (extension), "stay-synchronized");
diff --git a/libedataserver/e-source-openpgp.c b/libedataserver/e-source-openpgp.c
index ebdfbaf..8178667 100644
--- a/libedataserver/e-source-openpgp.c
+++ b/libedataserver/e-source-openpgp.c
@@ -294,6 +294,9 @@ e_source_openpgp_set_always_trust (ESourceOpenPGP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_OPENPGP (extension));
 
+	if ((extension->priv->always_trust ? 1 : 0) == (always_trust ? 1 : 0))
+		return;
+
 	extension->priv->always_trust = always_trust;
 
 	g_object_notify (G_OBJECT (extension), "always-trust");
@@ -332,6 +335,9 @@ e_source_openpgp_set_encrypt_to_self (ESourceOpenPGP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_OPENPGP (extension));
 
+	if ((extension->priv->encrypt_to_self ? 1 : 0) == (encrypt_to_self ? 1 : 0))
+		return;
+
 	extension->priv->encrypt_to_self = encrypt_to_self;
 
 	g_object_notify (G_OBJECT (extension), "encrypt-to-self");
@@ -407,6 +413,11 @@ e_source_openpgp_set_key_id (ESourceOpenPGP *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->key_id, key_id) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->key_id);
 	extension->priv->key_id = e_util_strdup_strip (key_id);
 
@@ -487,6 +498,11 @@ e_source_openpgp_set_signing_algorithm (ESourceOpenPGP *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->signing_algorithm, signing_algorithm) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->signing_algorithm);
 	extension->priv->signing_algorithm =
 		e_util_strdup_strip (signing_algorithm);
@@ -531,6 +547,9 @@ e_source_openpgp_set_sign_by_default (ESourceOpenPGP *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_OPENPGP (extension));
 
+	if ((extension->priv->sign_by_default ? 1 : 0) == (sign_by_default ? 1 : 0))
+		return;
+
 	extension->priv->sign_by_default = sign_by_default;
 
 	g_object_notify (G_OBJECT (extension), "sign-by-default");
diff --git a/libedataserver/e-source-refresh.c b/libedataserver/e-source-refresh.c
index 8ed2576..8200ba6 100644
--- a/libedataserver/e-source-refresh.c
+++ b/libedataserver/e-source-refresh.c
@@ -420,7 +420,7 @@ e_source_refresh_set_enabled (ESourceRefresh *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_REFRESH (extension));
 
-	if (enabled == extension->priv->enabled)
+	if ((enabled ? 1 : 0) == (extension->priv->enabled ? 1 : 0))
 		return;
 
 	extension->priv->enabled = enabled;
diff --git a/libedataserver/e-source-security.c b/libedataserver/e-source-security.c
index b2d945b..069396c 100644
--- a/libedataserver/e-source-security.c
+++ b/libedataserver/e-source-security.c
@@ -248,6 +248,12 @@ e_source_security_set_method (ESourceSecurity *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (extension->priv->method &&
+	    g_strcmp0 (extension->priv->method, method) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->method);
 	extension->priv->method = e_util_strdup_strip (method);
 
diff --git a/libedataserver/e-source-selectable.c b/libedataserver/e-source-selectable.c
index 1e9aede..80969f7 100644
--- a/libedataserver/e-source-selectable.c
+++ b/libedataserver/e-source-selectable.c
@@ -237,6 +237,11 @@ e_source_selectable_set_color (ESourceSelectable *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->color, color) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->color);
 	extension->priv->color = e_util_strdup_strip (color);
 
@@ -282,6 +287,9 @@ e_source_selectable_set_selected (ESourceSelectable *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_SELECTABLE (extension));
 
+	if ((extension->priv->selected ? 1 : 0) == (selected ? 1 : 0))
+		return;
+
 	extension->priv->selected = selected;
 
 	g_object_notify (G_OBJECT (extension), "selected");
diff --git a/libedataserver/e-source-smime.c b/libedataserver/e-source-smime.c
index 4e631fb..3189f80 100644
--- a/libedataserver/e-source-smime.c
+++ b/libedataserver/e-source-smime.c
@@ -359,6 +359,11 @@ e_source_smime_set_encryption_certificate (ESourceSMIME *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->encryption_certificate, encryption_certificate) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->encryption_certificate);
 	extension->priv->encryption_certificate =
 		e_util_strdup_strip (encryption_certificate);
@@ -403,6 +408,9 @@ e_source_smime_set_encrypt_by_default (ESourceSMIME *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_SMIME (extension));
 
+	if ((extension->priv->encrypt_by_default ? 1 : 0) == (encrypt_by_default ? 1 : 0))
+		return;
+
 	extension->priv->encrypt_by_default = encrypt_by_default;
 
 	g_object_notify (G_OBJECT (extension), "encrypt-by-default");
@@ -441,6 +449,9 @@ e_source_smime_set_encrypt_to_self (ESourceSMIME *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_SMIME (extension));
 
+	if ((extension->priv->encrypt_to_self ? 1 : 0) == (encrypt_to_self ? 1 : 0))
+		return;
+
 	extension->priv->encrypt_to_self = encrypt_to_self;
 
 	g_object_notify (G_OBJECT (extension), "encrypt-to-self");
@@ -519,6 +530,11 @@ e_source_smime_set_signing_algorithm (ESourceSMIME *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->signing_algorithm, signing_algorithm) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->signing_algorithm);
 	extension->priv->signing_algorithm =
 		e_util_strdup_strip (signing_algorithm);
@@ -599,6 +615,11 @@ e_source_smime_set_signing_certificate (ESourceSMIME *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->signing_certificate, signing_certificate) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->signing_certificate);
 	extension->priv->signing_certificate =
 		e_util_strdup_strip (signing_certificate);
@@ -643,6 +664,9 @@ e_source_smime_set_sign_by_default (ESourceSMIME *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_SMIME (extension));
 
+	if ((extension->priv->sign_by_default ? 1 : 0) == (sign_by_default ? 1 : 0))
+		return;
+
 	extension->priv->sign_by_default = sign_by_default;
 
 	g_object_notify (G_OBJECT (extension), "sign-by-default");
diff --git a/libedataserver/e-source-webdav.c b/libedataserver/e-source-webdav.c
index e09f1e3..5cf9cee 100644
--- a/libedataserver/e-source-webdav.c
+++ b/libedataserver/e-source-webdav.c
@@ -661,6 +661,9 @@ e_source_webdav_set_avoid_ifmatch (ESourceWebdav *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_WEBDAV (extension));
 
+	if ((extension->priv->avoid_ifmatch ? 1 : 0) == (avoid_ifmatch ? 1 : 0))
+		return;
+
 	extension->priv->avoid_ifmatch = avoid_ifmatch;
 
 	g_object_notify (G_OBJECT (extension), "avoid-ifmatch");
@@ -698,6 +701,9 @@ e_source_webdav_set_calendar_auto_schedule (ESourceWebdav *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_WEBDAV (extension));
 
+	if ((extension->priv->calendar_auto_schedule ? 1 : 0) == (calendar_auto_schedule ? 1 : 0))
+		return;
+
 	extension->priv->calendar_auto_schedule = calendar_auto_schedule;
 
 	g_object_notify (G_OBJECT (extension), "calendar-auto-schedule");
@@ -778,6 +784,11 @@ e_source_webdav_set_display_name (ESourceWebdav *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->display_name, display_name) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->display_name);
 	extension->priv->display_name = e_util_strdup_strip (display_name);
 
@@ -858,6 +869,11 @@ e_source_webdav_set_email_address (ESourceWebdav *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->email_address, email_address) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->email_address);
 	extension->priv->email_address = e_util_strdup_strip (email_address);
 
@@ -905,6 +921,9 @@ e_source_webdav_set_ignore_invalid_cert (ESourceWebdav *extension,
 {
 	g_return_if_fail (E_IS_SOURCE_WEBDAV (extension));
 
+	if ((extension->priv->ignore_invalid_cert ? 1 : 0) == (ignore_invalid_cert ? 1 : 0))
+		return;
+
 	extension->priv->ignore_invalid_cert = ignore_invalid_cert;
 
 	g_object_notify (G_OBJECT (extension), "ignore-invalid-cert");
@@ -981,6 +1000,11 @@ e_source_webdav_set_resource_path (ESourceWebdav *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (g_strcmp0 (extension->priv->resource_path, resource_path) == 0) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	g_free (extension->priv->resource_path);
 	extension->priv->resource_path = e_util_strdup_strip (resource_path);
 
@@ -1039,6 +1063,11 @@ e_source_webdav_set_soup_uri (ESourceWebdav *extension,
 
 	g_mutex_lock (extension->priv->property_lock);
 
+	if (extension->priv->uri && soup_uri_equal (extension->priv->uri, uri)) {
+		g_mutex_unlock (extension->priv->property_lock);
+		return;
+	}
+
 	soup_uri_free (extension->priv->uri);
 	extension->priv->uri = soup_uri_copy (uri);
 
diff --git a/libedataserver/e-source.c b/libedataserver/e-source.c
index 747a6a8..4a0d04e 100644
--- a/libedataserver/e-source.c
+++ b/libedataserver/e-source.c
@@ -1476,6 +1476,11 @@ e_source_set_parent (ESource *source,
 
 	g_mutex_lock (source->priv->property_lock);
 
+	if (g_strcmp0 (source->priv->parent, parent) == 0) {
+		g_mutex_unlock (source->priv->property_lock);
+		return;
+	}
+
 	g_free (source->priv->parent);
 	source->priv->parent = e_util_strdup_strip (parent);
 
@@ -1525,7 +1530,7 @@ e_source_set_enabled (ESource *source,
 {
 	g_return_if_fail (E_IS_SOURCE (source));
 
-	if (enabled == source->priv->enabled)
+	if ((enabled ? 1 : 0) == (source->priv->enabled ? 1 : 0))
 		return;
 
 	source->priv->enabled = enabled;
@@ -1825,6 +1830,11 @@ e_source_set_display_name (ESource *source,
 
 	g_mutex_lock (source->priv->property_lock);
 
+	if (g_strcmp0 (source->priv->display_name, display_name) == 0) {
+		g_mutex_unlock (source->priv->property_lock);
+		return;
+	}
+
 	g_free (source->priv->display_name);
 	source->priv->display_name = g_strdup (display_name);
 
diff --git a/libedataserverui/e-categories-editor.c b/libedataserverui/e-categories-editor.c
index 9080322..a2fc427 100644
--- a/libedataserverui/e-categories-editor.c
+++ b/libedataserverui/e-categories-editor.c
@@ -424,6 +424,10 @@ e_categories_editor_set_entry_visible (ECategoriesEditor *editor,
 {
 	g_return_if_fail (E_IS_CATEGORIES_EDITOR (editor));
 
+	if ((gtk_widget_get_visible (editor->priv->categories_entry) ? 1 : 0) ==
+	    (entry_visible ? 1 : 0))
+		return;
+
 	gtk_widget_set_visible (
 		editor->priv->categories_entry, entry_visible);
 	gtk_widget_set_visible (
diff --git a/libedataserverui/e-categories-selector.c b/libedataserverui/e-categories-selector.c
index 9ebb00e..7cbcce8 100644
--- a/libedataserverui/e-categories-selector.c
+++ b/libedataserverui/e-categories-selector.c
@@ -383,6 +383,9 @@ e_categories_selector_set_items_checkable (ECategoriesSelector *selector,
 
 	g_return_if_fail (E_IS_CATEGORIES_SELECTOR (selector));
 
+	if ((selector->priv->checkable ? 1 : 0) == (checkable ? 1 : 0))
+		return;
+
 	selector->priv->checkable = checkable;
 
 	column = gtk_tree_view_get_column (
diff --git a/libedataserverui/e-name-selector-entry.c b/libedataserverui/e-name-selector-entry.c
index bb3f6b9..ea1081b 100644
--- a/libedataserverui/e-name-selector-entry.c
+++ b/libedataserverui/e-name-selector-entry.c
@@ -3272,6 +3272,9 @@ e_name_selector_entry_set_registry (ENameSelectorEntry *name_selector_entry,
 {
 	g_return_if_fail (E_IS_NAME_SELECTOR_ENTRY (name_selector_entry));
 
+	if (name_selector_entry->priv->registry == registry)
+		return;
+
 	if (registry != NULL) {
 		g_return_if_fail (E_IS_SOURCE_REGISTRY (registry));
 		g_object_ref (registry);
diff --git a/libedataserverui/e-source-combo-box.c b/libedataserverui/e-source-combo-box.c
index 078143d..d8d2273 100644
--- a/libedataserverui/e-source-combo-box.c
+++ b/libedataserverui/e-source-combo-box.c
@@ -487,6 +487,9 @@ e_source_combo_box_set_registry (ESourceComboBox *combo_box,
 {
 	g_return_if_fail (E_IS_SOURCE_COMBO_BOX (combo_box));
 
+	if (combo_box->priv->registry == registry)
+		return;
+
 	if (registry != NULL) {
 		g_return_if_fail (E_IS_SOURCE_REGISTRY (registry));
 		g_object_ref (registry);
@@ -583,6 +586,9 @@ e_source_combo_box_set_extension_name (ESourceComboBox *combo_box,
 {
 	g_return_if_fail (E_IS_SOURCE_COMBO_BOX (combo_box));
 
+	if (g_strcmp0 (combo_box->priv->extension_name, extension_name) == 0)
+		return;
+
 	g_free (combo_box->priv->extension_name);
 	combo_box->priv->extension_name = g_strdup (extension_name);
 
@@ -624,7 +630,7 @@ e_source_combo_box_set_show_colors (ESourceComboBox *combo_box,
 {
 	g_return_if_fail (E_IS_SOURCE_COMBO_BOX (combo_box));
 
-	if (show_colors == combo_box->priv->show_colors)
+	if ((show_colors ? 1 : 0) == (combo_box->priv->show_colors ? 1 : 0))
 		return;
 
 	combo_box->priv->show_colors = show_colors;
diff --git a/libedataserverui/e-source-selector.c b/libedataserverui/e-source-selector.c
index 1cb50d6..5ef4084 100644
--- a/libedataserverui/e-source-selector.c
+++ b/libedataserverui/e-source-selector.c
@@ -1531,7 +1531,7 @@ e_source_selector_set_show_colors (ESourceSelector *selector,
 {
 	g_return_if_fail (E_IS_SOURCE_SELECTOR (selector));
 
-	if (show_colors == selector->priv->show_colors)
+	if ((show_colors ? 1 : 0) == (selector->priv->show_colors ? 1 : 0))
 		return;
 
 	selector->priv->show_colors = show_colors;
@@ -1574,7 +1574,7 @@ e_source_selector_set_show_toggles (ESourceSelector *selector,
 {
 	g_return_if_fail (E_IS_SOURCE_SELECTOR (selector));
 
-	if (show_toggles == selector->priv->show_toggles)
+	if ((show_toggles ? 1 : 0) == (selector->priv->show_toggles ? 1 : 0))
 		return;
 
 	selector->priv->show_toggles = show_toggles;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]