diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/org.freedesktop.UPower.xml | 18 | ||||
-rw-r--r-- | src/up-daemon.c | 25 | ||||
-rw-r--r-- | src/up-daemon.h | 2 |
3 files changed, 45 insertions, 0 deletions
diff --git a/src/org.freedesktop.UPower.xml b/src/org.freedesktop.UPower.xml index 6cb636d..c37d218 100644 --- a/src/org.freedesktop.UPower.xml +++ b/src/org.freedesktop.UPower.xml @@ -304,6 +304,24 @@ method return sender=:1.386 -> dest=:1.451 reply_serial=2 </doc:doc> </property> + <property name="LidForceSleep" type="b" access="read"> + <doc:doc> + <doc:description> + <doc:para> + If the system really has to sleep when the lid is closed. + Some laptops actually melt (!) if the lid is closed and the + computer keeps running. We blacklist those, and do something + sane for the other machines. + </doc:para> + <doc:para> + This allows us to set the default session policy to not + suspend on lid close if the laptop is docked, and be sure + the machine is not going to melt. + </doc:para> + </doc:description> + </doc:doc> + </property> + <property name="IsDocked" type="b" access="read"> <doc:doc> <doc:description> diff --git a/src/up-daemon.c b/src/up-daemon.c index dbdb488..baafd5a 100644 --- a/src/up-daemon.c +++ b/src/up-daemon.c @@ -51,6 +51,7 @@ enum PROP_ON_LOW_BATTERY, PROP_LID_IS_CLOSED, PROP_LID_IS_PRESENT, + PROP_LID_FORCE_SLEEP, PROP_IS_DOCKED, PROP_LAST }; @@ -79,6 +80,7 @@ struct UpDaemonPrivate gboolean on_low_battery; gboolean lid_is_closed; gboolean lid_is_present; + gboolean lid_force_sleep; gboolean is_docked; gboolean kernel_can_suspend; gboolean kernel_can_hibernate; @@ -763,6 +765,18 @@ up_daemon_set_lid_is_closed (UpDaemon *daemon, gboolean lid_is_closed) } /** + * up_daemon_set_lid_force_sleep: + **/ +void +up_daemon_set_lid_force_sleep (UpDaemon *daemon, gboolean lid_force_sleep) +{ + UpDaemonPrivate *priv = daemon->priv; + g_debug ("lid_force_sleep = %s", lid_force_sleep ? "yes" : "no"); + priv->lid_force_sleep = lid_force_sleep; + g_object_notify (G_OBJECT (daemon), "lid-enforce-sleep"); +} + +/** * up_daemon_set_lid_is_present: **/ void @@ -1150,6 +1164,9 @@ up_daemon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe case PROP_LID_IS_PRESENT: g_value_set_boolean (value, priv->lid_is_present); break; + case PROP_LID_FORCE_SLEEP: + g_value_set_boolean (value, priv->lid_force_sleep); + break; case PROP_IS_DOCKED: g_value_set_boolean (value, priv->is_docked); break; @@ -1250,6 +1267,14 @@ up_daemon_class_init (UpDaemonClass *klass) G_PARAM_READABLE)); g_object_class_install_property (object_class, + PROP_LID_FORCE_SLEEP, + g_param_spec_boolean ("lid-enforce-sleep", + "Enforce sleep on lid close", + "If this computer has to sleep on lid close", + FALSE, + G_PARAM_READABLE)); + + g_object_class_install_property (object_class, PROP_IS_DOCKED, g_param_spec_boolean ("is-docked", "Is docked", diff --git a/src/up-daemon.h b/src/up-daemon.h index 4d92b19..99fb9da 100644 --- a/src/up-daemon.h +++ b/src/up-daemon.h @@ -77,6 +77,8 @@ void up_daemon_set_lid_is_closed (UpDaemon *daemon, gboolean lid_is_closed); void up_daemon_set_lid_is_present (UpDaemon *daemon, gboolean lid_is_present); +void up_daemon_set_lid_force_sleep (UpDaemon *daemon, + gboolean lid_force_sleep); void up_daemon_set_is_docked (UpDaemon *daemon, gboolean is_docked); void up_daemon_set_on_battery (UpDaemon *daemon, |