[gnome-settings-daemon/wip/aggregate-menu: 2/8] power: Ensure that we always have a composite device



commit 1541603070a449b318bf8248a5455f7e68763221
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Jun 10 13:26:06 2013 -0400

    power: Ensure that we always have a composite device
    
    In the scenario when we only have one battery, we short-circuit and
    use that instead of creating a composite device. We want to always
    expose the composite device as an API, so never do that.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=700913

 plugins/power/gsd-power-manager.c |   35 ++++++++++-------------------------
 1 files changed, 10 insertions(+), 25 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index ea6a307..2f37273 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -224,7 +224,7 @@ static void     gsd_power_manager_class_init  (GsdPowerManagerClass *klass);
 static void     gsd_power_manager_init        (GsdPowerManager      *power_manager);
 
 static UpDevice *engine_get_composite_device (GsdPowerManager *manager, UpDevice *original_device);
-static UpDevice *engine_update_composite_device (GsdPowerManager *manager, UpDevice *original_device);
+static void      engine_update_composite_device (GsdPowerManager *manager, UpDevice *original_device);
 static GIcon    *engine_get_icon (GsdPowerManager *manager);
 static gchar    *engine_get_summary (GsdPowerManager *manager);
 static gdouble   engine_get_percentage (GsdPowerManager *manager);
@@ -737,7 +737,7 @@ engine_get_composite_device (GsdPowerManager *manager,
         return device;
 }
 
-static UpDevice *
+static void
 engine_update_composite_device (GsdPowerManager *manager,
                                 UpDevice *original_device)
 {
@@ -751,7 +751,6 @@ engine_update_composite_device (GsdPowerManager *manager,
         gdouble energy_rate_total = 0.0;
         gint64 time_to_empty = 0;
         gint64 time_to_full = 0;
-        guint battery_devices = 0;
         gboolean is_charging = FALSE;
         gboolean is_discharging = FALSE;
         gboolean is_fully_charged = TRUE;
@@ -792,14 +791,6 @@ engine_update_composite_device (GsdPowerManager *manager,
                 energy_total += energy;
                 energy_full_total += energy_full;
                 energy_rate_total += energy_rate;
-                battery_devices++;
-        }
-
-        /* just use the original device if only one primary battery */
-        if (battery_devices == 1) {
-                g_debug ("using original device as only one primary battery");
-                device = original_device;
-                goto out;
         }
 
         /* use percentage weighted for each battery capacity */
@@ -824,11 +815,8 @@ engine_update_composite_device (GsdPowerManager *manager,
                         time_to_full = 3600 * ((energy_full_total - energy_total) / energy_rate_total);
         }
 
-        /* okay, we can use the composite device */
-        device = manager->priv->device_composite;
-
         g_debug ("printing composite device");
-        g_object_set (device,
+        g_object_set (manager->priv->device_composite,
                       "energy", energy,
                       "energy-full", energy_full,
                       "energy-rate", energy_rate,
@@ -841,9 +829,6 @@ engine_update_composite_device (GsdPowerManager *manager,
         /* force update of icon */
         if (engine_recalculate_state_icon (manager))
                 engine_emit_changed (manager, TRUE, FALSE);
-out:
-        /* return composite device or original device */
-        return device;
 }
 
 typedef struct {
@@ -989,7 +974,6 @@ engine_device_add (GsdPowerManager *manager, UpDevice *device)
         GsdPowerManagerWarning warning;
         UpDeviceState state;
         UpDeviceKind kind;
-        UpDevice *composite;
 
         /* assign warning */
         warning = engine_get_warning (manager, device);
@@ -1013,15 +997,15 @@ engine_device_add (GsdPowerManager *manager, UpDevice *device)
 
         if (kind == UP_DEVICE_KIND_BATTERY) {
                 g_debug ("updating because we added a device");
-                composite = engine_update_composite_device (manager, device);
+                engine_update_composite_device (manager, device);
 
                 /* get the same values for the composite device */
-                warning = engine_get_warning (manager, composite);
-                g_object_set_data (G_OBJECT(composite),
+                warning = engine_get_warning (manager, manager->priv->device_composite);
+                g_object_set_data (G_OBJECT(manager->priv->device_composite),
                                    "engine-warning-old",
                                    GUINT_TO_POINTER(warning));
-                g_object_get (composite, "state", &state, NULL);
-                g_object_set_data (G_OBJECT(composite),
+                g_object_get (manager->priv->device_composite, "state", &state, NULL);
+                g_object_set_data (G_OBJECT(manager->priv->device_composite),
                                    "engine-state-old",
                                    GUINT_TO_POINTER(state));
         }
@@ -1769,7 +1753,8 @@ engine_device_changed_cb (UpClient *client, UpDevice *device, GsdPowerManager *m
         /* if battery then use composite device to cope with multiple batteries */
         if (kind == UP_DEVICE_KIND_BATTERY) {
                 g_debug ("updating because %s changed", up_device_get_object_path (device));
-                device = engine_update_composite_device (manager, device);
+                engine_update_composite_device (manager, device);
+                device = manager->priv->device_composite;
         }
 
         /* get device properties (may be composite) */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]