[gnome-control-center] power: Simplify GPtrArray memory management



commit d2959e4fe76e300993cc974dad9b416013be69e6
Author: Robert Ancell <robert ancell canonical com>
Date:   Thu May 31 09:29:44 2018 +1200

    power: Simplify GPtrArray memory management

 panels/power/cc-power-panel.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
---
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c
index 34cfd9bed..a07a04f90 100644
--- a/panels/power/cc-power-panel.c
+++ b/panels/power/cc-power-panel.c
@@ -134,11 +134,7 @@ cc_power_panel_dispose (GObject *object)
   g_clear_object (&self->builder);
   g_clear_object (&self->screen_proxy);
   g_clear_object (&self->kbd_proxy);
-  if (self->devices)
-    {
-      g_ptr_array_foreach (self->devices, (GFunc) g_object_unref, NULL);
-      g_clear_pointer (&self->devices, g_ptr_array_unref);
-    }
+  g_clear_pointer (&self->devices, g_ptr_array_unref);
   g_clear_object (&self->up_client);
   g_clear_object (&self->bt_rfkill);
   g_clear_object (&self->bt_properties);
@@ -867,7 +863,6 @@ up_client_device_removed (UpClient     *client,
 
       if (g_strcmp0 (object_path, up_device_get_object_path (device)) == 0)
         {
-          g_object_unref (device);
           g_ptr_array_remove_index (self->devices, i);
           break;
         }
@@ -2621,6 +2616,10 @@ cc_power_panel_init (CcPowerPanel *self)
   g_signal_connect (self->up_client, "device-removed", G_CALLBACK (up_client_device_removed), self);
 
   self->devices = up_client_get_devices (self->up_client);
+  /* up_client_get_devices doesn't set a free function, we'll set it so we don't need to do it.
+   * https://bugs.freedesktop.org/show_bug.cgi?id=106740
+   */
+  g_ptr_array_set_free_func (self->devices, g_object_unref);
   for (i = 0; self->devices != NULL && i < self->devices->len; i++) {
     UpDevice *device = g_ptr_array_index (self->devices, i);
     g_signal_connect (G_OBJECT (device), "notify",


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