[gnome-settings-daemon] power: check environment for reducing action delay



commit ab6f1596ae698e333bdf0559d0295013c4c2d3f4
Author: Martin Pitt <martinpitt gnome org>
Date:   Sun Dec 2 19:14:59 2012 +0100

    power: check environment for reducing action delay
    
    When testing the power plugin, it is unnerving having to wait the extra 20
    seconds between announcing the critical action and executing it. Check
    $GSD_ACTION_DELAY environment variable and wait for the specified number of
    seconds instead.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=685951

 plugins/power/gsd-power-manager.c |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index f19f912..a9c2d86 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -230,6 +230,10 @@ G_DEFINE_TYPE (GsdPowerManager, gsd_power_manager, G_TYPE_OBJECT)
 
 static gpointer manager_object = NULL;
 
+/* Time between notifying the user about a critical action and executing it.
+ * This can be changed with the $GSD_ACTION_DELAY environment variable. */
+static guint critical_action_delay = 20;
+
 GQuark
 gsd_power_manager_error_quark (void)
 {
@@ -1743,7 +1747,9 @@ engine_charge_action (GsdPowerManager *manager, UpDevice *device)
                 }
 
                 /* wait 20 seconds for user-panic */
-                timer_id = g_timeout_add_seconds (20, (GSourceFunc) manager_critical_action_do_cb, manager);
+                timer_id = g_timeout_add_seconds (critical_action_delay,
+                                                  (GSourceFunc) manager_critical_action_do_cb,
+                                                  manager);
                 g_source_set_name_by_id (timer_id, "[GsdPowerManager] battery critical-action");
 
         } else if (kind == UP_DEVICE_KIND_UPS) {
@@ -1772,7 +1778,9 @@ engine_charge_action (GsdPowerManager *manager, UpDevice *device)
                 }
 
                 /* wait 20 seconds for user-panic */
-                timer_id = g_timeout_add_seconds (20, (GSourceFunc) manager_critical_ups_action_do_cb, manager);
+                timer_id = g_timeout_add_seconds (critical_action_delay,
+                                                  (GSourceFunc) manager_critical_action_do_cb,
+                                                  manager);
                 g_source_set_name_by_id (timer_id, "[GsdPowerManager] ups critical-action");
         }
 
@@ -3283,7 +3291,19 @@ refresh_idle_dim_settings (GsdPowerManager *manager)
 static void
 gsd_power_manager_class_init (GsdPowerManagerClass *klass)
 {
+        const char* env_action_delay;
+
         g_type_class_add_private (klass, sizeof (GsdPowerManagerPrivate));
+
+        env_action_delay = g_getenv ("GSD_ACTION_DELAY");
+        if (env_action_delay != NULL) {
+                critical_action_delay = atoi (env_action_delay);
+                /* use the default for invalid values */
+                if (critical_action_delay < 0) {
+                        g_warning ("Invalid value '%s' of $GSD_ACTION_DELAY, ignoring", env_action_delay);
+                        critical_action_delay = 20;
+                }
+        }
 }
 
 static void



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