mirror of
https://gitlab.freedesktop.org/upower/upower.git
synced 2025-12-29 14:40:06 +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.
|
# will be used.
|
||||||
#
|
#
|
||||||
# Defaults:
|
# Defaults:
|
||||||
# PercentageLow=20
|
# PercentageLow=20.0
|
||||||
# PercentageCritical=5
|
# PercentageCritical=5.0
|
||||||
# PercentageAction=2
|
# PercentageAction=2.0
|
||||||
PercentageLow=20
|
PercentageLow=20.0
|
||||||
PercentageCritical=5
|
PercentageCritical=5.0
|
||||||
PercentageAction=2
|
PercentageAction=2.0
|
||||||
|
|
||||||
# When UsePercentageForPolicy is false, the time remaining in seconds at
|
# When UsePercentageForPolicy is false, the time remaining in seconds at
|
||||||
# which UPower will consider the battery low, critical, or take action for
|
# 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 = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
||||||
config.write("[UPower]\n")
|
config.write("[UPower]\n")
|
||||||
config.write("UsePercentageForPolicy=true\n")
|
config.write("UsePercentageForPolicy=true\n")
|
||||||
config.write("PercentageAction=5\n")
|
config.write("PercentageAction=5.0\n")
|
||||||
config.write("CriticalPowerAction=Hibernate\n")
|
config.write("CriticalPowerAction=Hibernate\n")
|
||||||
config.close()
|
config.close()
|
||||||
|
|
||||||
|
|
@ -1525,7 +1525,7 @@ class Tests(dbusmock.DBusTestCase):
|
||||||
config = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
config = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
||||||
config.write("[UPower]\n")
|
config.write("[UPower]\n")
|
||||||
config.write("UsePercentageForPolicy=true\n")
|
config.write("UsePercentageForPolicy=true\n")
|
||||||
config.write("PercentageAction=5\n")
|
config.write("PercentageAction=5.0\n")
|
||||||
config.write("CriticalPowerAction=Hibernate\n")
|
config.write("CriticalPowerAction=Hibernate\n")
|
||||||
config.close()
|
config.close()
|
||||||
|
|
||||||
|
|
@ -1856,9 +1856,9 @@ class Tests(dbusmock.DBusTestCase):
|
||||||
config = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
config = tempfile.NamedTemporaryFile(delete=False, mode='w')
|
||||||
# Low, Critical and Action are all needed to avoid fallback to defaults
|
# Low, Critical and Action are all needed to avoid fallback to defaults
|
||||||
config.write("[UPower]\n")
|
config.write("[UPower]\n")
|
||||||
config.write("PercentageLow=20\n")
|
config.write("PercentageLow=20.0\n")
|
||||||
config.write("PercentageCritical=3\n")
|
config.write("PercentageCritical=3.0\n")
|
||||||
config.write("PercentageAction=2\n")
|
config.write("PercentageAction=2.0\n")
|
||||||
config.close()
|
config.close()
|
||||||
|
|
||||||
self.start_daemon(cfgfile=config.name)
|
self.start_daemon(cfgfile=config.name)
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,22 @@ up_config_get_uint (UpConfig *config, const gchar *key)
|
||||||
return val;
|
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:
|
* up_config_get_string:
|
||||||
**/
|
**/
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,8 @@ gboolean up_config_get_boolean (UpConfig *config,
|
||||||
const gchar *key);
|
const gchar *key);
|
||||||
guint up_config_get_uint (UpConfig *config,
|
guint up_config_get_uint (UpConfig *config,
|
||||||
const gchar *key);
|
const gchar *key);
|
||||||
|
gdouble up_config_get_double (UpConfig *config,
|
||||||
|
const gchar *key);
|
||||||
gchar *up_config_get_string (UpConfig *config,
|
gchar *up_config_get_string (UpConfig *config,
|
||||||
const gchar *key);
|
const gchar *key);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,9 @@ struct UpDaemonPrivate
|
||||||
|
|
||||||
/* WarningLevel configuration */
|
/* WarningLevel configuration */
|
||||||
gboolean use_percentage_for_policy;
|
gboolean use_percentage_for_policy;
|
||||||
guint low_percentage;
|
gdouble low_percentage;
|
||||||
guint critical_percentage;
|
gdouble critical_percentage;
|
||||||
guint action_percentage;
|
gdouble action_percentage;
|
||||||
guint low_time;
|
guint low_time;
|
||||||
guint critical_time;
|
guint critical_time;
|
||||||
guint action_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(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
|
static void
|
||||||
load_percentage_policy (UpDaemon *daemon,
|
load_percentage_policy (UpDaemon *daemon,
|
||||||
gboolean load_default)
|
gboolean load_default)
|
||||||
{
|
{
|
||||||
LOAD_OR_DEFAULT (daemon->priv->low_percentage, "PercentageLow", 20);
|
LOAD_OR_DEFAULT_DOUBLE (daemon->priv->low_percentage, "PercentageLow", 20.0);
|
||||||
LOAD_OR_DEFAULT (daemon->priv->critical_percentage, "PercentageCritical", 5);
|
LOAD_OR_DEFAULT_DOUBLE (daemon->priv->critical_percentage, "PercentageCritical", 5.0);
|
||||||
LOAD_OR_DEFAULT (daemon->priv->action_percentage, "PercentageAction", 2);
|
LOAD_OR_DEFAULT_DOUBLE (daemon->priv->action_percentage, "PercentageAction", 2.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -1089,9 +1090,9 @@ load_time_policy (UpDaemon *daemon,
|
||||||
static void
|
static void
|
||||||
policy_config_validate (UpDaemon *daemon)
|
policy_config_validate (UpDaemon *daemon)
|
||||||
{
|
{
|
||||||
if (daemon->priv->low_percentage >= 100 ||
|
if (daemon->priv->low_percentage >= 100.0 ||
|
||||||
daemon->priv->critical_percentage >= 100 ||
|
daemon->priv->critical_percentage >= 100.0 ||
|
||||||
daemon->priv->action_percentage >= 100) {
|
daemon->priv->action_percentage >= 100.0) {
|
||||||
load_percentage_policy (daemon, TRUE);
|
load_percentage_policy (daemon, TRUE);
|
||||||
} else if (!IS_DESCENDING (daemon->priv->low_percentage,
|
} else if (!IS_DESCENDING (daemon->priv->low_percentage,
|
||||||
daemon->priv->critical_percentage,
|
daemon->priv->critical_percentage,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue