From 1d091c665342a6df3542388a694bfe101a415785 Mon Sep 17 00:00:00 2001 From: Martin Szulecki Date: Sat, 18 Dec 2010 18:34:05 +0100 Subject: Do not poll all device info again, just the battery capacity --- src/device.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- src/device.h | 1 + src/gui.c | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/device.c b/src/device.c index 2d3b3c5..e92fbc2 100644 --- a/src/device.c +++ b/src/device.c @@ -277,9 +277,52 @@ static guint battery_info_get_current_capacity(plist_t battery_info) return (guint)current_capacity; } +gboolean device_poll_battery_capacity(const char *uuid, device_info_t *device_info, GError **error) { + plist_t node = NULL; + idevice_t phone = NULL; + lockdownd_client_t client = NULL; + gboolean res = FALSE; + + printf("%s: %s\n", __func__, uuid); + + if (!device_info) { + return res; + } + + printf("%s\n", __func__); + + g_mutex_lock(idevice_mutex); + if (!device_connect(uuid, &phone, &client, error)) { + goto leave_cleanup; + } + + if (!*device_info) { + /* make new device info */ + *device_info = device_info_new(); + } + + /* get current battery capacity */ + node = NULL; + lockdownd_get_value(client, "com.apple.mobile.battery", NULL, &node); + (*device_info)->battery_capacity = battery_info_get_current_capacity(node); + plist_free(node); + + res = TRUE; + + leave_cleanup: + if (client) { + lockdownd_client_free(client); + } + idevice_free(phone); + g_mutex_unlock(idevice_mutex); + + return res; +} + gboolean device_get_info(const char *uuid, device_info_t *device_info, GError **error) { - uint64_t interval = 60; + uint8_t boolean = FALSE; + uint64_t integer = 60; plist_t node = NULL; idevice_t phone = NULL; lockdownd_client_t client = NULL; diff --git a/src/device.h b/src/device.h index 4714368..c8829b2 100644 --- a/src/device.h +++ b/src/device.h @@ -46,6 +46,7 @@ char *device_sbs_save_wallpaper(sbservices_client_t sbc, const char *uuid, GErro device_info_t device_info_new(); void device_info_free(device_info_t device_info); +gboolean device_poll_battery_capacity(const char *uuid, device_info_t *device_info, GError **error); gboolean device_get_info(const char *uuid, device_info_t *device_info, GError **error); #endif diff --git a/src/gui.c b/src/gui.c index 0e0b837..1b25d7b 100644 --- a/src/gui.c +++ b/src/gui.c @@ -1979,7 +1979,7 @@ static gboolean update_battery_info_cb(gpointer user_data) return FALSE; } - if (device_get_info(uuid, &device_info, &error)) { + if (device_poll_battery_capacity(uuid, &device_info, &error)) { clutter_actor_set_size(battery_level, (guint) (((double) (device_info->battery_capacity) / 100.0) * 15), 6); if (device_info->battery_capacity == 100) { res = FALSE; -- cgit v1.1-32-gdbae