diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index 333d5b7c9..651cd592f 100644 --- a/src/backends/meta-backend.c +++ b/src/backends/meta-backend.c @@ -181,6 +181,7 @@ struct _MetaBackendPrivate guint upower_watch_id; GDBusProxy *upower_proxy; gboolean lid_is_closed; + gboolean on_battery; guint sleep_signal_id; GCancellable *cancellable; @@ -670,6 +671,23 @@ upower_properties_changed (GDBusProxy *proxy, } } + v = g_variant_lookup_value (changed_properties, + "OnBattery", + G_VARIANT_TYPE_BOOLEAN); + if (v) + { + gboolean on_battery; + + on_battery = g_variant_get_boolean (v); + g_variant_unref (v); + + if (on_battery != priv->on_battery) + { + priv->on_battery = on_battery; + reset_idle_time = TRUE; + } + } + if (reset_idle_time) meta_idle_manager_reset_idle_time (priv->idle_manager); } @@ -713,6 +731,13 @@ upower_ready_cb (GObject *source_object, priv->lid_is_closed); } } + + v = g_dbus_proxy_get_cached_property (proxy, "OnBattery"); + if (v) + { + priv->on_battery = g_variant_get_boolean (v); + g_variant_unref (v); + } } static void