summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devkit-power-gobject/dkp-client.c16
-rw-r--r--libupower-glib/up-client.c16
2 files changed, 28 insertions, 4 deletions
diff --git a/devkit-power-gobject/dkp-client.c b/devkit-power-gobject/dkp-client.c
index 044f2e5..3b26a0e 100644
--- a/devkit-power-gobject/dkp-client.c
+++ b/devkit-power-gobject/dkp-client.c
@@ -232,6 +232,7 @@ static void
dkp_client_ensure_properties (DkpClient *client)
{
gboolean ret;
+ gboolean allowed = FALSE;
GError *error;
GHashTable *props;
GValue *value;
@@ -267,7 +268,13 @@ dkp_client_ensure_properties (DkpClient *client)
g_warning ("No 'CanSuspend' property");
goto out;
}
- ret = g_value_get_boolean (value);
+
+ ret = dbus_g_proxy_call (client->priv->proxy, "SuspendAllowed", &error,
+ G_TYPE_INVALID, G_TYPE_BOOLEAN, &allowed, G_TYPE_INVALID);
+ if (!ret)
+ goto out;
+
+ ret = g_value_get_boolean (value) && allowed;
if (ret != client->priv->can_suspend) {
client->priv->can_suspend = ret;
g_object_notify (G_OBJECT(client), "can-suspend");
@@ -278,7 +285,12 @@ dkp_client_ensure_properties (DkpClient *client)
g_warning ("No 'CanHibernate' property");
goto out;
}
- ret = g_value_get_boolean (value);
+ ret = dbus_g_proxy_call (client->priv->proxy, "HibernateAllowed", &error,
+ G_TYPE_INVALID, G_TYPE_BOOLEAN, &allowed, G_TYPE_INVALID);
+ if (!ret)
+ goto out;
+
+ ret = g_value_get_boolean (value) && allowed;
if (ret != client->priv->can_hibernate) {
client->priv->can_hibernate = ret;
g_object_notify (G_OBJECT(client), "can-hibernate");
diff --git a/libupower-glib/up-client.c b/libupower-glib/up-client.c
index e0727eb..12201cd 100644
--- a/libupower-glib/up-client.c
+++ b/libupower-glib/up-client.c
@@ -297,6 +297,7 @@ gboolean
up_client_get_properties_sync (UpClient *client, GCancellable *cancellable, GError **error)
{
gboolean ret = TRUE;
+ gboolean allowed = FALSE;
GHashTable *props;
GValue *value;
@@ -328,7 +329,13 @@ up_client_get_properties_sync (UpClient *client, GCancellable *cancellable, GErr
g_warning ("No 'CanSuspend' property");
goto out;
}
- ret = g_value_get_boolean (value);
+
+ ret = dbus_g_proxy_call (client->priv->proxy, "SuspendAllowed", error,
+ G_TYPE_INVALID, G_TYPE_BOOLEAN, &allowed, G_TYPE_INVALID);
+ if (!ret)
+ goto out;
+
+ ret = g_value_get_boolean (value) && allowed;
if (ret != client->priv->can_suspend) {
client->priv->can_suspend = ret;
g_object_notify (G_OBJECT(client), "can-suspend");
@@ -339,7 +346,12 @@ up_client_get_properties_sync (UpClient *client, GCancellable *cancellable, GErr
g_warning ("No 'CanHibernate' property");
goto out;
}
- ret = g_value_get_boolean (value);
+ ret = dbus_g_proxy_call (client->priv->proxy, "HibernateAllowed", error,
+ G_TYPE_INVALID, G_TYPE_BOOLEAN, &allowed, G_TYPE_INVALID);
+ if (!ret)
+ goto out;
+
+ ret = g_value_get_boolean (value) && allowed;
if (ret != client->priv->can_hibernate) {
client->priv->can_hibernate = ret;
g_object_notify (G_OBJECT(client), "can-hibernate");