[evolution-data-server] I#383 - Add option to respect Power Saver mode



commit a1c75888d975b0ee7a96d313a85d2d0980fc5f33
Author: Milan Crha <mcrha redhat com>
Date:   Fri Jun 3 07:58:45 2022 +0200

    I#383 - Add option to respect Power Saver mode
    
    Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/383

 data/org.gnome.evolution-data-server.gschema.xml.in |  5 +++++
 src/addressbook/libedata-book/e-book-meta-backend.c | 18 +++++++++++++-----
 src/calendar/libedata-cal/e-cal-meta-backend.c      | 18 +++++++++++++-----
 src/camel/providers/imapx/camel-imapx-server.c      | 16 ++++++++++++----
 4 files changed, 43 insertions(+), 14 deletions(-)
---
diff --git a/data/org.gnome.evolution-data-server.gschema.xml.in 
b/data/org.gnome.evolution-data-server.gschema.xml.in
index bc630332a..b66c019d5 100644
--- a/data/org.gnome.evolution-data-server.gschema.xml.in
+++ b/data/org.gnome.evolution-data-server.gschema.xml.in
@@ -86,5 +86,10 @@
       <summary>An OAuth2 client secret to use to connect to Yahoo! servers, instead of the one provided 
during build time</summary>
       <description>User-specified OAuth2 client secret for Yahoo! servers. Empty string means to use the one 
provided during build time. Change of this requires restart.</description>
     </key>
+    <key name="limit-operations-in-power-saver-mode" type="b">
+      <default>false</default>
+      <summary>Whether to limit operations in Power Saver mode</summary>
+      <description>When set to “true”, possibly expensive operations required to refresh 
books/calendars/mail accounts/... are skipped when the machine is in the Power Saver mode.</description>
+    </key>
   </schema>
 </schemalist>
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c 
b/src/addressbook/libedata-book/e-book-meta-backend.c
index 6c674abbd..350d4cfd7 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.c
+++ b/src/addressbook/libedata-book/e-book-meta-backend.c
@@ -132,12 +132,20 @@ static gboolean
 ebmb_is_power_saver_enabled (void)
 {
 #ifdef HAVE_GPOWERPROFILEMONITOR
-       GPowerProfileMonitor *power_monitor;
-       gboolean enabled;
+       GSettings *settings;
+       gboolean enabled = FALSE;
 
-       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);
+       settings = g_settings_new ("org.gnome.evolution-data-server");
+
+       if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) {
+               GPowerProfileMonitor *power_monitor;
+
+               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);
+       }
+
+       g_clear_object (&settings);
 
        return enabled;
 #else
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index 7e6c39067..4f595eae9 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -146,12 +146,20 @@ static gboolean
 ecmb_is_power_saver_enabled (void)
 {
 #ifdef HAVE_GPOWERPROFILEMONITOR
-       GPowerProfileMonitor *power_monitor;
-       gboolean enabled;
+       GSettings *settings;
+       gboolean enabled = FALSE;
 
-       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);
+       settings = g_settings_new ("org.gnome.evolution-data-server");
+
+       if (g_settings_get_boolean (settings, "limit-operations-in-power-saver-mode")) {
+               GPowerProfileMonitor *power_monitor;
+
+               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);
+       }
+
+       g_clear_object (&settings);
 
        return enabled;
 #else
diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c
index 74f947fec..1eeff8ddb 100644
--- a/src/camel/providers/imapx/camel-imapx-server.c
+++ b/src/camel/providers/imapx/camel-imapx-server.c
@@ -5571,11 +5571,19 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store)
 
 #ifdef HAVE_GPOWERPROFILEMONITOR
        if (!skip_old_flags_update) {
-               GPowerProfileMonitor *power_monitor;
+               GSettings *eds_settings;
 
-               power_monitor = g_power_profile_monitor_dup_default ();
-               skip_old_flags_update = power_monitor && g_power_profile_monitor_get_power_saver_enabled 
(power_monitor);
-               g_clear_object (&power_monitor);
+               eds_settings = g_settings_new ("org.gnome.evolution-data-server");
+
+               if (g_settings_get_boolean (eds_settings, "limit-operations-in-power-saver-mode")) {
+                       GPowerProfileMonitor *power_monitor;
+
+                       power_monitor = g_power_profile_monitor_dup_default ();
+                       skip_old_flags_update = power_monitor && 
g_power_profile_monitor_get_power_saver_enabled (power_monitor);
+                       g_clear_object (&power_monitor);
+               }
+
+               g_clear_object (&eds_settings);
        }
 #endif
        g_clear_object (&network_monitor);


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