diff options
| author | 2010-12-18 18:34:05 +0100 | |
|---|---|---|
| committer | 2012-03-18 18:41:15 +0100 | |
| commit | 1d091c665342a6df3542388a694bfe101a415785 (patch) | |
| tree | a875b6f8a6cadc2a4b8848337d4204bb2a221011 | |
| parent | c883b16f6ce19549e015ec6aba7450244450bfaf (diff) | |
| download | sbmanager-1d091c665342a6df3542388a694bfe101a415785.tar.gz sbmanager-1d091c665342a6df3542388a694bfe101a415785.tar.bz2 | |
Do not poll all device info again, just the battery capacity
| -rw-r--r-- | src/device.c | 45 | ||||
| -rw-r--r-- | src/device.h | 1 | ||||
| -rw-r--r-- | 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 @@ -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; | 
