[evolution-data-server/gnome-3-34] I#156 - EBook/CalMetaBackend: Automatic refresh not always setup
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-34] I#156 - EBook/CalMetaBackend: Automatic refresh not always setup
- Date: Fri, 20 Sep 2019 10:37:13 +0000 (UTC)
commit 0044d3cde43b1853eccb46425125613b7c41ad5c
Author: Milan Crha <mcrha redhat com>
Date: Fri Sep 20 12:34:14 2019 +0200
I#156 - EBook/CalMetaBackend: Automatic refresh not always setup
Closes https://gitlab.gnome.org/GNOME/evolution-data-server/issues/156
.../libedata-book/e-book-meta-backend.c | 27 +++++++++++++++-------
src/calendar/libedata-cal/e-cal-meta-backend.c | 27 +++++++++++++++-------
2 files changed, 38 insertions(+), 16 deletions(-)
---
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c
b/src/addressbook/libedata-book/e-book-meta-backend.c
index 3307d6a5f..060ddf73b 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.c
+++ b/src/addressbook/libedata-book/e-book-meta-backend.c
@@ -762,6 +762,8 @@ ebmb_maybe_remove_from_cache (EBookMetaBackend *meta_backend,
return TRUE;
}
+static void ebmb_ensure_refresh_timeout_set_locked (EBookMetaBackend *meta_backend);
+
static gboolean
ebmb_refresh_internal_sync (EBookMetaBackend *meta_backend,
gboolean with_connection_error,
@@ -865,6 +867,8 @@ ebmb_refresh_internal_sync (EBookMetaBackend *meta_backend,
if (meta_backend->priv->refresh_cancellable == cancellable)
g_clear_object (&meta_backend->priv->refresh_cancellable);
+ ebmb_ensure_refresh_timeout_set_locked (meta_backend);
+
g_mutex_unlock (&meta_backend->priv->property_lock);
e_book_backend_foreach_view_notify_progress (E_BOOK_BACKEND (meta_backend), TRUE, 0, NULL);
@@ -905,6 +909,20 @@ ebmb_source_refresh_timeout_cb (ESource *source,
}
}
+/* Should hold the property_lock when calling this */
+static void
+ebmb_ensure_refresh_timeout_set_locked (EBookMetaBackend *meta_backend)
+{
+ if (!meta_backend->priv->refresh_timeout_id) {
+ ESource *source = e_backend_get_source (E_BACKEND (meta_backend));
+
+ if (e_source_has_extension (source, E_SOURCE_EXTENSION_REFRESH)) {
+ meta_backend->priv->refresh_timeout_id = e_source_refresh_add_timeout (source, NULL,
+ ebmb_source_refresh_timeout_cb, e_weak_ref_new (meta_backend),
(GDestroyNotify) e_weak_ref_free);
+ }
+ }
+}
+
static void
ebmb_source_changed_thread_func (EBookBackend *book_backend,
gpointer user_data,
@@ -921,14 +939,7 @@ ebmb_source_changed_thread_func (EBookBackend *book_backend,
meta_backend = E_BOOK_META_BACKEND (book_backend);
g_mutex_lock (&meta_backend->priv->property_lock);
- if (!meta_backend->priv->refresh_timeout_id) {
- ESource *source = e_backend_get_source (E_BACKEND (meta_backend));
-
- if (e_source_has_extension (source, E_SOURCE_EXTENSION_REFRESH)) {
- meta_backend->priv->refresh_timeout_id = e_source_refresh_add_timeout (source, NULL,
- ebmb_source_refresh_timeout_cb, e_weak_ref_new (meta_backend),
(GDestroyNotify) e_weak_ref_free);
- }
- }
+ ebmb_ensure_refresh_timeout_set_locked (meta_backend);
g_mutex_unlock (&meta_backend->priv->property_lock);
g_signal_emit (meta_backend, signals[SOURCE_CHANGED], 0, NULL);
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index 68c57ecaa..25cd0652e 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -664,6 +664,8 @@ ecmb_maybe_remove_from_cache (ECalMetaBackend *meta_backend,
return TRUE;
}
+static void ecmb_ensure_refresh_timeout_set_locked (ECalMetaBackend *meta_backend);
+
static gboolean
ecmb_refresh_internal_sync (ECalMetaBackend *meta_backend,
gboolean with_connection_error,
@@ -766,6 +768,8 @@ ecmb_refresh_internal_sync (ECalMetaBackend *meta_backend,
if (meta_backend->priv->refresh_cancellable == cancellable)
g_clear_object (&meta_backend->priv->refresh_cancellable);
+ ecmb_ensure_refresh_timeout_set_locked (meta_backend);
+
g_mutex_unlock (&meta_backend->priv->property_lock);
e_cal_backend_foreach_view_notify_progress (E_CAL_BACKEND (meta_backend), TRUE, 0, NULL);
@@ -806,6 +810,20 @@ ecmb_source_refresh_timeout_cb (ESource *source,
}
}
+/* Should hold the property_lock when calling this */
+static void
+ecmb_ensure_refresh_timeout_set_locked (ECalMetaBackend *meta_backend)
+{
+ if (!meta_backend->priv->refresh_timeout_id) {
+ ESource *source = e_backend_get_source (E_BACKEND (meta_backend));
+
+ if (e_source_has_extension (source, E_SOURCE_EXTENSION_REFRESH)) {
+ meta_backend->priv->refresh_timeout_id = e_source_refresh_add_timeout (source, NULL,
+ ecmb_source_refresh_timeout_cb, e_weak_ref_new (meta_backend),
(GDestroyNotify) e_weak_ref_free);
+ }
+ }
+}
+
static void
ecmb_source_changed_thread_func (ECalBackend *cal_backend,
gpointer user_data,
@@ -822,14 +840,7 @@ ecmb_source_changed_thread_func (ECalBackend *cal_backend,
meta_backend = E_CAL_META_BACKEND (cal_backend);
g_mutex_lock (&meta_backend->priv->property_lock);
- if (!meta_backend->priv->refresh_timeout_id) {
- ESource *source = e_backend_get_source (E_BACKEND (meta_backend));
-
- if (e_source_has_extension (source, E_SOURCE_EXTENSION_REFRESH)) {
- meta_backend->priv->refresh_timeout_id = e_source_refresh_add_timeout (source, NULL,
- ecmb_source_refresh_timeout_cb, e_weak_ref_new (meta_backend),
(GDestroyNotify) e_weak_ref_free);
- }
- }
+ ecmb_ensure_refresh_timeout_set_locked (meta_backend);
g_mutex_unlock (&meta_backend->priv->property_lock);
g_signal_emit (meta_backend, signals[SOURCE_CHANGED], 0, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]