[evolution-data-server] book/cal-meta-backend: Claim error on refresh call in Power Saver mode
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] book/cal-meta-backend: Claim error on refresh call in Power Saver mode
- Date: Thu, 2 Jun 2022 16:43:37 +0000 (UTC)
commit 0bed245eec73351818336a4afd86c9a96ef4cb96
Author: Milan Crha <mcrha redhat com>
Date: Thu Jun 2 18:41:22 2022 +0200
book/cal-meta-backend: Claim error on refresh call in Power Saver mode
Inform the caller that the refresh is disabled when it's invoked
in a Power Saver mode, thus it knows why the refresh is not done.
Related to https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/383
.../libedata-book/e-book-meta-backend.c | 34 +++++++++++++++-------
src/calendar/libedata-cal/e-cal-meta-backend.c | 34 +++++++++++++++-------
2 files changed, 48 insertions(+), 20 deletions(-)
---
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c
b/src/addressbook/libedata-book/e-book-meta-backend.c
index fee3aa92d..6c674abbd 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.c
+++ b/src/addressbook/libedata-book/e-book-meta-backend.c
@@ -128,6 +128,23 @@ static gboolean ebmb_save_contact_wrapper_sync (EBookMetaBackend *meta_backend,
GCancellable *cancellable,
GError **error);
+static gboolean
+ebmb_is_power_saver_enabled (void)
+{
+#ifdef HAVE_GPOWERPROFILEMONITOR
+ GPowerProfileMonitor *power_monitor;
+ gboolean enabled;
+
+ power_monitor = g_power_profile_monitor_dup_default ();
+ enabled = power_monitor && g_power_profile_monitor_get_power_saver_enabled (power_monitor);
+ g_clear_object (&power_monitor);
+
+ return enabled;
+#else
+ return FALSE;
+#endif
+}
+
/**
* e_book_meta_backend_info_new:
* @uid: a contact UID; cannot be %NULL
@@ -779,9 +796,6 @@ ebmb_refresh_internal_sync (EBookMetaBackend *meta_backend,
GCancellable *cancellable,
GError **error)
{
-#ifdef HAVE_GPOWERPROFILEMONITOR
- GPowerProfileMonitor *power_monitor;
-#endif
EBookCache *book_cache;
gboolean success = FALSE, repeat = TRUE, is_repeat = FALSE;
@@ -790,18 +804,12 @@ ebmb_refresh_internal_sync (EBookMetaBackend *meta_backend,
if (g_cancellable_set_error_if_cancelled (cancellable, error))
goto done;
-#ifdef HAVE_GPOWERPROFILEMONITOR
/* Silently ignore the refresh request when in the power-saver mode */
- power_monitor = g_power_profile_monitor_dup_default ();
- if (power_monitor && g_power_profile_monitor_get_power_saver_enabled (power_monitor)) {
- g_clear_object (&power_monitor);
+ if (ebmb_is_power_saver_enabled ()) {
success = TRUE;
goto done;
}
- g_clear_object (&power_monitor);
-#endif
-
e_book_backend_foreach_view_notify_progress (E_BOOK_BACKEND (meta_backend), TRUE, 0,
_("Refreshing…"));
if (!e_book_meta_backend_ensure_connected_sync (meta_backend, cancellable, with_connection_error ?
error : NULL) ||
@@ -1320,6 +1328,12 @@ ebmb_refresh_sync (EBookBackendSync *book_backend,
if (!e_backend_get_online (backend))
return TRUE;
+ if (ebmb_is_power_saver_enabled ()) {
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_OTHER_ERROR,
+ _("Refresh skipped due to enabled Power Saver mode. Disable Power Saver mode and
repeat the action."));
+ return FALSE;
+ }
+
success = e_book_meta_backend_ensure_connected_sync (meta_backend, cancellable, error);
if (success)
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index 9270929df..7e6c39067 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -142,6 +142,23 @@ static gboolean ecmb_save_component_wrapper_sync (ECalMetaBackend *meta_backend,
GCancellable *cancellable,
GError **error);
+static gboolean
+ecmb_is_power_saver_enabled (void)
+{
+#ifdef HAVE_GPOWERPROFILEMONITOR
+ GPowerProfileMonitor *power_monitor;
+ gboolean enabled;
+
+ power_monitor = g_power_profile_monitor_dup_default ();
+ enabled = power_monitor && g_power_profile_monitor_get_power_saver_enabled (power_monitor);
+ g_clear_object (&power_monitor);
+
+ return enabled;
+#else
+ return FALSE;
+#endif
+}
+
/**
* e_cal_meta_backend_info_new:
* @uid: a component UID; cannot be %NULL
@@ -680,9 +697,6 @@ ecmb_refresh_internal_sync (ECalMetaBackend *meta_backend,
GCancellable *cancellable,
GError **error)
{
-#ifdef HAVE_GPOWERPROFILEMONITOR
- GPowerProfileMonitor *power_monitor;
-#endif
ECalCache *cal_cache;
gboolean success = FALSE, repeat = TRUE, is_repeat = FALSE;
@@ -691,18 +705,12 @@ ecmb_refresh_internal_sync (ECalMetaBackend *meta_backend,
if (g_cancellable_set_error_if_cancelled (cancellable, error))
goto done;
-#ifdef HAVE_GPOWERPROFILEMONITOR
/* Silently ignore the refresh request when in the power-saver mode */
- power_monitor = g_power_profile_monitor_dup_default ();
- if (power_monitor && g_power_profile_monitor_get_power_saver_enabled (power_monitor)) {
- g_clear_object (&power_monitor);
+ if (ecmb_is_power_saver_enabled ()) {
success = TRUE;
goto done;
}
- g_clear_object (&power_monitor);
-#endif
-
e_cal_backend_foreach_view_notify_progress (E_CAL_BACKEND (meta_backend), TRUE, 0, _("Refreshing…"));
if (!e_cal_meta_backend_ensure_connected_sync (meta_backend, cancellable, with_connection_error ?
error : NULL) ||
@@ -1345,6 +1353,12 @@ ecmb_refresh_sync (ECalBackendSync *sync_backend,
if (!e_backend_get_online (backend))
return;
+ if (ecmb_is_power_saver_enabled ()) {
+ g_set_error_literal (error, E_CLIENT_ERROR, E_CLIENT_ERROR_OTHER_ERROR,
+ _("Refresh skipped due to enabled Power Saver mode. Disable Power Saver mode and
repeat the action."));
+ return;
+ }
+
if (e_cal_meta_backend_ensure_connected_sync (meta_backend, cancellable, error))
e_cal_meta_backend_schedule_refresh (meta_backend);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]