[gnome-control-center] printers: Improve memory management of backend list



commit 797c36dc0abdd4c120efc6b490c231ade22f7a66
Author: Robert Ancell <robert ancell canonical com>
Date:   Fri Feb 12 15:19:02 2021 +1300

    printers: Improve memory management of backend list

 panels/printers/pp-utils.c | 28 +++++++---------------------
 1 file changed, 7 insertions(+), 21 deletions(-)
---
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index 79ee4f0e7..9d4f7723b 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -1767,8 +1767,8 @@ typedef struct
 {
   gchar        *printer_name;
   gchar        *device_uri;
-  GCancellable *cancellable;
   GList        *backend_list;
+  GCancellable *cancellable;
   GDACallback   callback;
   gpointer      user_data;
 } GDAData;
@@ -1793,6 +1793,7 @@ gda_data_free (GDAData *data)
 {
   g_free (data->printer_name);
   g_free (data->device_uri);
+  g_list_free_full(data->backend_list, g_free);
   g_clear_object (&data->cancellable);
   g_free (data);
 }
@@ -2100,7 +2101,6 @@ get_device_attributes_async_dbus_cb (GObject      *source_object,
   g_autoptr(GVariant) output = NULL;
   g_autoptr(GDAData)  data = user_data;
   g_autoptr(GError)   error = NULL;
-  GList              *tmp;
   gchar              *device_id = NULL;
   gchar              *device_make_and_model = NULL;
 
@@ -2206,9 +2206,7 @@ get_device_attributes_async_dbus_cb (GObject      *source_object,
               exclude_scheme_builder = create_other_backends_array ();
             }
 
-          tmp = data->backend_list;
-          data->backend_list = g_list_remove_link (data->backend_list, tmp);
-          g_list_free_full (tmp, g_free);
+          data->backend_list = g_list_delete_link (data->backend_list, data->backend_list);
 
           g_dbus_connection_call (G_DBUS_CONNECTION (g_object_ref (source_object)),
                                   MECHANISM_BUS,
@@ -2238,12 +2236,6 @@ get_device_attributes_async_dbus_cb (GObject      *source_object,
         }
     }
 
-  if (data->backend_list)
-    {
-      g_list_free_full (data->backend_list, g_free);
-      data->backend_list = NULL;
-    }
-
   data->callback (device_id,
                   device_make_and_model,
                   data->device_uri,
@@ -2259,7 +2251,6 @@ get_device_attributes_async_scb (GHashTable *result,
   IPPAttribute     *attr;
   g_autoptr(GDAData) data = user_data;
   g_autoptr(GError) error = NULL;
-  GList            *tmp;
 
   if (result)
     {
@@ -2295,9 +2286,7 @@ get_device_attributes_async_scb (GHashTable *result,
   g_variant_builder_init (&include_scheme_builder, G_VARIANT_TYPE ("as"));
   g_variant_builder_add (&include_scheme_builder, "s", data->backend_list->data);
 
-  tmp = data->backend_list;
-  data->backend_list = g_list_remove_link (data->backend_list, tmp);
-  g_list_free_full (tmp, g_free);
+  data->backend_list = g_list_delete_link (data->backend_list, data->backend_list);
 
   g_dbus_connection_call (g_object_ref (bus),
                           MECHANISM_BUS,
@@ -3169,10 +3158,10 @@ printer_add_option_async (const gchar   *printer_name,
 
 typedef struct
 {
+  GList        *backend_list;
   GCancellable *cancellable;
   GCDCallback   callback;
   gpointer      user_data;
-  GList        *backend_list;
 } GCDData;
 
 static GCDData *
@@ -3342,7 +3331,7 @@ get_cups_devices_async_dbus_cb (GObject      *source_object,
               exclude_scheme_builder = create_other_backends_array ();
             }
 
-          data->backend_list = g_list_remove_link (data->backend_list, data->backend_list);
+          data->backend_list = g_list_delete_link (data->backend_list, data->backend_list);
 
           g_dbus_connection_call (G_DBUS_CONNECTION (g_object_ref (source_object)),
                                   MECHANISM_BUS,
@@ -3376,9 +3365,6 @@ get_cups_devices_async_dbus_cb (GObject      *source_object,
                           TRUE,
                           TRUE,
                           data->user_data);
-
-          g_list_free_full (data->backend_list, g_free);
-          data->backend_list = NULL;
         }
     }
   else
@@ -3416,7 +3402,7 @@ get_cups_devices_async (GCancellable *cancellable,
   g_variant_builder_init (&include_scheme_builder, G_VARIANT_TYPE ("as"));
   g_variant_builder_add (&include_scheme_builder, "s", backend_name);
 
-  backend_list = g_list_remove_link (backend_list, backend_list);
+  backend_list = g_list_delete_link (backend_list, backend_list);
 
   g_dbus_connection_call (bus,
                           MECHANISM_BUS,


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