[gnome-control-center] printers: Make pp_devices_list_free() generally available



commit 6576db1a160ea7635c87d8f698ca7658acaea254
Author: Marek Kasik <mkasik redhat com>
Date:   Tue Jul 29 16:54:46 2014 +0200

    printers: Make pp_devices_list_free() generally available
    
    Move pp_devices_list_free() to pp-utils.h and optimize it
    using g_list_free_full().
    
    https://bugzilla.gnome.org/show_bug.cgi?id=695564

 panels/printers/pp-host.c               |   15 +--------------
 panels/printers/pp-new-printer-dialog.c |   15 ---------------
 panels/printers/pp-samba.c              |    7 +------
 panels/printers/pp-utils.c              |   10 ++++++++++
 panels/printers/pp-utils.h              |    2 ++
 5 files changed, 14 insertions(+), 35 deletions(-)
---
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index d6ed143..fbbcecb 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -306,22 +306,9 @@ _pp_host_get_snmp_devices_thread (GSimpleAsyncResult *res,
 static void
 gsd_data_free (GSDData *data)
 {
-  GList *iter;
-
   if (data)
     {
-      if (data->devices)
-        {
-          if (data->devices->devices)
-            {
-              for (iter = data->devices->devices; iter; iter = iter->next)
-                pp_print_device_free ((PpPrintDevice *) iter->data);
-              g_list_free (data->devices->devices);
-            }
-
-          g_free (data->devices);
-        }
-
+      pp_devices_list_free (data->devices);
       g_free (data);
     }
 }
diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c
index 598f497..cf3617e 100644
--- a/panels/printers/pp-new-printer-dialog.c
+++ b/panels/printers/pp-new-printer-dialog.c
@@ -68,7 +68,6 @@ static void     add_devices_to_list (PpNewPrinterDialog  *dialog,
                                      gboolean             new_device);
 static void     remove_device_from_list (PpNewPrinterDialog *dialog,
                                          const gchar        *device_name);
-static void     pp_devices_list_free (PpDevicesList *result);
 
 enum
 {
@@ -687,20 +686,6 @@ device_in_list (gchar *device_uri,
 }
 
 static void
-pp_devices_list_free (PpDevicesList *result)
-{
-  GList *iter;
-
-  if (result)
-    {
-      for (iter = result->devices; iter; iter = iter->next)
-        pp_print_device_free ((PpPrintDevice *) iter->data);
-      g_list_free (result->devices);
-      g_free (result);
-    }
-}
-
-static void
 update_spinner_state (PpNewPrinterDialog *dialog)
 {
   PpNewPrinterDialogPrivate *priv = dialog->priv;
diff --git a/panels/printers/pp-samba.c b/panels/printers/pp-samba.c
index a94bdcd..d8c51c9 100644
--- a/panels/printers/pp-samba.c
+++ b/panels/printers/pp-samba.c
@@ -199,12 +199,7 @@ smb_data_free (SMBData *data)
 {
   if (data)
     {
-      if (data->devices)
-        {
-          g_list_free_full (data->devices->devices, (GDestroyNotify) pp_print_device_free);
-          g_free (data->devices);
-        }
-
+      pp_devices_list_free (data->devices);
       smb_auth_info_free (data->auth_info);
       g_object_unref (data->parent);
 
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index 6730c6e..d4e4d3b 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -3284,6 +3284,16 @@ printer_get_ppd_async (const gchar *printer_name,
     }
 }
 
+void
+pp_devices_list_free (PpDevicesList *result)
+{
+  if (result)
+    {
+      g_list_free_full (result->devices, (GDestroyNotify) pp_print_device_free);
+      g_free (result);
+    }
+}
+
 typedef struct
 {
   gchar        *printer_name;
diff --git a/panels/printers/pp-utils.h b/panels/printers/pp-utils.h
index 11bc75c..0274fae 100644
--- a/panels/printers/pp-utils.h
+++ b/panels/printers/pp-utils.h
@@ -295,6 +295,8 @@ typedef struct
 void           pp_print_device_free (PpPrintDevice *device);
 PpPrintDevice *pp_print_device_copy (PpPrintDevice *device);
 
+void         pp_devices_list_free (PpDevicesList *result);
+
 const gchar *get_paper_size_from_locale (void);
 
 typedef void (*GCDCallback) (GList          *devices,


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