diff options
author | Radek Novacek <rnovacek@redhat.com> | 2014-04-10 14:32:26 +0200 |
---|---|---|
committer | Radek Novacek <rnovacek@redhat.com> | 2014-04-10 14:32:26 +0200 |
commit | 1d6e5d8f31b1a374f8308900568cd5c6efb0d2b1 (patch) | |
tree | cbdc6a9f12a94fd323a7fff5ddeac331debdd612 | |
parent | b65667c9324eba14e3da7d4cb85711bac7afcd4d (diff) | |
download | openlmi-providers-1d6e5d8f31b1a374f8308900568cd5c6efb0d2b1.tar.gz openlmi-providers-1d6e5d8f31b1a374f8308900568cd5c6efb0d2b1.tar.xz openlmi-providers-1d6e5d8f31b1a374f8308900568cd5c6efb0d2b1.zip |
power: check if connection to Logind DBus is valid
-rw-r--r-- | src/power/power.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/power/power.c b/src/power/power.c index 49d4ec2..5e82685 100644 --- a/src/power/power.c +++ b/src/power/power.c @@ -139,6 +139,14 @@ Proxy *power_create_logind() error("Unable to connect to logind via DBus: %s", err->message); g_error_free(err); + return NULL; + } + // Logind always has some properties, if no property is cached, + // the proxied object doesn't exist => don't use logind + if (g_dbus_proxy_get_cached_property_names(logind_proxy) == NULL) { + g_object_unref(logind_proxy); + debug("Logind DBus interface is not available"); + return NULL; } return logind_proxy; #else @@ -164,6 +172,7 @@ bool power_call_logind(Proxy *proxy, const char *method) return true; } } + return false; #endif return false; } @@ -385,15 +394,7 @@ unsigned short *power_available_requested_power_states(Power *power, int *count) int i = 0; #ifdef HAS_GDBUS - GError *err = NULL; - GDBusProxy *logind_proxy; - if ((logind_proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM, - G_DBUS_PROXY_FLAGS_NONE, NULL, LOGIND_NAME, LOGIND_PATH, - LOGIND_INTERFACE, NULL, &err)) == NULL) { - - error("Unable to connect to logind via DBus: %s", err->message); - g_error_free(err); - } + GDBusProxy *logind_proxy = power_create_logind(); #else void *logind_proxy = NULL; #endif |