mirror of
https://gitlab.freedesktop.org/upower/upower.git
synced 2025-12-20 05:30:03 +01:00
Support fractional battery percent.
Make upower supports fractional battery percent (e.g., 0.5% instead of 1%). Signed-off-by: Rogerio Alves Cardoso <rogerio.cardoso@collabora.com>
This commit is contained in:
parent
fda3a0b563
commit
88031e563f
5 changed files with 39 additions and 20 deletions
|
|
@ -59,12 +59,12 @@ UsePercentageForPolicy=true
|
|||
# will be used.
|
||||
#
|
||||
# Defaults:
|
||||
# PercentageLow=20
|
||||
# PercentageCritical=5
|
||||
# PercentageAction=2
|
||||
PercentageLow=20
|
||||
PercentageCritical=5
|
||||
PercentageAction=2
|
||||
# PercentageLow=20.0
|
||||
# PercentageCritical=5.0
|
||||
# PercentageAction=2.0
|
||||
PercentageLow=20.0
|
||||
PercentageCritical=5.0
|
||||
PercentageAction=2.0
|
||||
|
||||
# When UsePercentageForPolicy is false, the time remaining in seconds at
|
||||
# which UPower will consider the battery low, critical, or take action for
|
||||
|
|
|
|||
|
|
@ -1483,7 +1483,7 @@ class Tests(dbusmock.DBusTestCase):
|
|||
config = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
||||
config.write("[UPower]\n")
|
||||
config.write("UsePercentageForPolicy=true\n")
|
||||
config.write("PercentageAction=5\n")
|
||||
config.write("PercentageAction=5.0\n")
|
||||
config.write("CriticalPowerAction=Hibernate\n")
|
||||
config.close()
|
||||
|
||||
|
|
@ -1525,7 +1525,7 @@ class Tests(dbusmock.DBusTestCase):
|
|||
config = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
||||
config.write("[UPower]\n")
|
||||
config.write("UsePercentageForPolicy=true\n")
|
||||
config.write("PercentageAction=5\n")
|
||||
config.write("PercentageAction=5.0\n")
|
||||
config.write("CriticalPowerAction=Hibernate\n")
|
||||
config.close()
|
||||
|
||||
|
|
@ -1856,9 +1856,9 @@ class Tests(dbusmock.DBusTestCase):
|
|||
config = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
||||
# Low, Critical and Action are all needed to avoid fallback to defaults
|
||||
config.write("[UPower]\n")
|
||||
config.write("PercentageLow=20\n")
|
||||
config.write("PercentageCritical=3\n")
|
||||
config.write("PercentageAction=2\n")
|
||||
config.write("PercentageLow=20.0\n")
|
||||
config.write("PercentageCritical=3.0\n")
|
||||
config.write("PercentageAction=2.0\n")
|
||||
config.close()
|
||||
|
||||
self.start_daemon(cfgfile=config.name)
|
||||
|
|
|
|||
|
|
@ -68,6 +68,22 @@ up_config_get_uint (UpConfig *config, const gchar *key)
|
|||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* up_config_get_double:
|
||||
**/
|
||||
gdouble
|
||||
up_config_get_double (UpConfig *config, const gchar *key)
|
||||
{
|
||||
int val;
|
||||
|
||||
val = g_key_file_get_double (config->priv->keyfile,
|
||||
"UPower", key, NULL);
|
||||
if (val < 0.0)
|
||||
return 0.0;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* up_config_get_string:
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -52,6 +52,8 @@ gboolean up_config_get_boolean (UpConfig *config,
|
|||
const gchar *key);
|
||||
guint up_config_get_uint (UpConfig *config,
|
||||
const gchar *key);
|
||||
gdouble up_config_get_double (UpConfig *config,
|
||||
const gchar *key);
|
||||
gchar *up_config_get_string (UpConfig *config,
|
||||
const gchar *key);
|
||||
|
||||
|
|
|
|||
|
|
@ -63,9 +63,9 @@ struct UpDaemonPrivate
|
|||
|
||||
/* WarningLevel configuration */
|
||||
gboolean use_percentage_for_policy;
|
||||
guint low_percentage;
|
||||
guint critical_percentage;
|
||||
guint action_percentage;
|
||||
gdouble low_percentage;
|
||||
gdouble critical_percentage;
|
||||
gdouble action_percentage;
|
||||
guint low_time;
|
||||
guint critical_time;
|
||||
guint action_time;
|
||||
|
|
@ -1065,14 +1065,15 @@ up_daemon_device_removed_cb (UpBackend *backend, UpDevice *device, UpDaemon *dae
|
|||
}
|
||||
|
||||
#define LOAD_OR_DEFAULT(val, str, def) val = (load_default ? def : up_config_get_uint (daemon->priv->config, str))
|
||||
#define LOAD_OR_DEFAULT_DOUBLE(val, str, def) val = (load_default ? def : up_config_get_double (daemon->priv->config, str))
|
||||
|
||||
static void
|
||||
load_percentage_policy (UpDaemon *daemon,
|
||||
gboolean load_default)
|
||||
{
|
||||
LOAD_OR_DEFAULT (daemon->priv->low_percentage, "PercentageLow", 20);
|
||||
LOAD_OR_DEFAULT (daemon->priv->critical_percentage, "PercentageCritical", 5);
|
||||
LOAD_OR_DEFAULT (daemon->priv->action_percentage, "PercentageAction", 2);
|
||||
LOAD_OR_DEFAULT_DOUBLE (daemon->priv->low_percentage, "PercentageLow", 20.0);
|
||||
LOAD_OR_DEFAULT_DOUBLE (daemon->priv->critical_percentage, "PercentageCritical", 5.0);
|
||||
LOAD_OR_DEFAULT_DOUBLE (daemon->priv->action_percentage, "PercentageAction", 2.0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -1089,9 +1090,9 @@ load_time_policy (UpDaemon *daemon,
|
|||
static void
|
||||
policy_config_validate (UpDaemon *daemon)
|
||||
{
|
||||
if (daemon->priv->low_percentage >= 100 ||
|
||||
daemon->priv->critical_percentage >= 100 ||
|
||||
daemon->priv->action_percentage >= 100) {
|
||||
if (daemon->priv->low_percentage >= 100.0 ||
|
||||
daemon->priv->critical_percentage >= 100.0 ||
|
||||
daemon->priv->action_percentage >= 100.0) {
|
||||
load_percentage_policy (daemon, TRUE);
|
||||
} else if (!IS_DESCENDING (daemon->priv->low_percentage,
|
||||
daemon->priv->critical_percentage,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue