diff options
author | Richard Hughes <richard@hughsie.com> | 2009-07-22 08:16:27 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2009-07-22 08:16:27 +0100 |
commit | f7a00c582a32e76c3602af7c016d91fb8d6f4007 (patch) | |
tree | a64cdfa0ff7ff70445e57abaf767336b2331af3c | |
parent | fbbc823a480bfeaa5be8f8bcd95ada52629e327f (diff) |
Only refresh all battery devices when the ac-adaptor changes
-rw-r--r-- | src/dkp-daemon.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/dkp-daemon.c b/src/dkp-daemon.c index 79cf113..bfcdcea 100644 --- a/src/dkp-daemon.c +++ b/src/dkp-daemon.c @@ -664,6 +664,7 @@ gpk_daemon_device_changed (DkpDaemon *daemon, GUdevDevice *d, gboolean synthesiz { GObject *object; DkpDevice *device; + DkpDeviceType type; gboolean ret; /* first, change the device and add it if it doesn't exist */ @@ -672,6 +673,18 @@ gpk_daemon_device_changed (DkpDaemon *daemon, GUdevDevice *d, gboolean synthesiz device = DKP_DEVICE (object); egg_debug ("changed %s", dkp_device_get_object_path (device)); dkp_device_changed (device, d, synthesized); + + /* refresh battery devices when AC state changes */ + g_object_get (device, + "type", &type, + NULL); + if (type == DKP_DEVICE_TYPE_LINE_POWER) { + /* refresh now, and again in a little while */ + dkp_daemon_refresh_battery_devices (daemon); + g_timeout_add_seconds (DKP_DAEMON_ON_BATTERY_REFRESH_DEVICES_DELAY, + (GSourceFunc) dkp_daemon_refresh_battery_devices_cb, daemon); + } + } else { egg_debug ("treating change event as add on %s", g_udev_device_get_sysfs_path (d)); dkp_daemon_device_add (daemon, d, TRUE); @@ -684,13 +697,6 @@ gpk_daemon_device_changed (DkpDaemon *daemon, GUdevDevice *d, gboolean synthesiz egg_debug ("now on_battery = %s", ret ? "yes" : "no"); g_signal_emit (daemon, signals[CHANGED_SIGNAL], 0); - /* refresh all the devices now */ - dkp_daemon_refresh_battery_devices (daemon); - - /* refresh again in a little while */ - g_timeout_add_seconds (DKP_DAEMON_ON_BATTERY_REFRESH_DEVICES_DELAY, - (GSourceFunc) dkp_daemon_refresh_battery_devices_cb, daemon); - /* set pm-utils power policy */ dkp_daemon_set_pmutils_powersave (daemon, daemon->priv->on_battery); } |