From 76c62923635e09d63d6407fed0b8648eead6ece8 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 1 Oct 2013 13:50:48 -0500 Subject: Listen for the 'Resuming' signal from upower. When it's received, refresh all our devices. --- src/device-provider-upower.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/device-provider-upower.c') diff --git a/src/device-provider-upower.c b/src/device-provider-upower.c index 05faeab..1b1b7bd 100644 --- a/src/device-provider-upower.c +++ b/src/device-provider-upower.c @@ -248,6 +248,22 @@ on_upower_device_removed (DbusUPower * unused G_GNUC_UNUSED, emit_devices_changed (self); } +static void +on_upower_resuming (DbusUPower * unused G_GNUC_UNUSED, + gpointer gself) +{ + IndicatorPowerDeviceProviderUPower * self; + GHashTableIter iter; + gpointer object_path; + + self = INDICATOR_POWER_DEVICE_PROVIDER_UPOWER (gself); + + g_debug ("Resumed from hibernate/sleep; queueing all devices for a refresh"); + g_hash_table_iter_init (&iter, self->priv->devices); + while (g_hash_table_iter_next (&iter, &object_path, NULL)) + refresh_device_soon (self, object_path); +} + static void on_upower_proxy_ready (GObject * source G_GNUC_UNUSED, GAsyncResult * res, @@ -272,6 +288,8 @@ on_upower_proxy_ready (GObject * source G_GNUC_UNUSED, p = self->priv; p->upower_proxy = proxy; + g_signal_connect (proxy, "resuming", + G_CALLBACK (on_upower_resuming), self); g_signal_connect (proxy, "device-changed", G_CALLBACK (on_upower_device_changed), self); g_signal_connect (proxy, "device-added", -- cgit v1.2.3