diff options
-rw-r--r-- | devkit-power-gobject/dkp-client.c | 16 | ||||
-rw-r--r-- | libupower-glib/up-client.c | 16 |
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"); |