printers: Simplify finalize/dispose methods

Use g_clear_* functions to simplify code and ensure values are set to NULL after freeing.
This commit is contained in:
Robert Ancell 2018-12-06 09:28:35 +13:00
parent 4042cb5d33
commit 85604ab4f0
8 changed files with 70 additions and 184 deletions

View file

@ -279,89 +279,42 @@ cc_printers_panel_dispose (GObject *object)
{
CcPrintersPanel *self = CC_PRINTERS_PANEL (object);
if (self->pp_new_printer_dialog)
g_clear_object (&self->pp_new_printer_dialog);
free_dests (CC_PRINTERS_PANEL (object));
g_clear_pointer (&self->new_printer_name, g_free);
g_clear_pointer (&self->new_printer_location, g_free);
g_clear_pointer (&self->new_printer_make_and_model, g_free);
g_clear_pointer (&self->renamed_printer_name, g_free);
g_clear_pointer (&self->old_printer_name, g_free);
if (self->builder)
{
g_object_unref (self->builder);
self->builder = NULL;
}
if (self->lockdown_settings)
{
g_object_unref (self->lockdown_settings);
self->lockdown_settings = NULL;
}
if (self->permission)
{
g_object_unref (self->permission);
self->permission = NULL;
}
g_cancellable_cancel (self->subscription_renew_cancellable);
g_clear_object (&self->subscription_renew_cancellable);
g_cancellable_cancel (self->actualize_printers_list_cancellable);
g_clear_object (&self->actualize_printers_list_cancellable);
g_cancellable_cancel (self->cups_status_check_cancellable);
g_cancellable_cancel (self->get_all_ppds_cancellable);
detach_from_cups_notifier (CC_PRINTERS_PANEL (object));
g_cancellable_cancel (self->cups_status_check_cancellable);
g_clear_object (&self->cups_status_check_cancellable);
if (self->cups_status_check_id > 0)
{
g_source_remove (self->cups_status_check_id);
self->cups_status_check_id = 0;
}
if (self->remove_printer_timeout_id > 0)
{
g_source_remove (self->remove_printer_timeout_id);
self->remove_printer_timeout_id = 0;
}
if (self->all_ppds_list)
{
ppd_list_free (self->all_ppds_list);
self->all_ppds_list = NULL;
}
if (self->get_all_ppds_cancellable)
{
g_cancellable_cancel (self->get_all_ppds_cancellable);
g_object_unref (self->get_all_ppds_cancellable);
self->get_all_ppds_cancellable = NULL;
}
if (self->deleted_printer_name != NULL)
{
PpPrinter *printer;
printer = pp_printer_new (self->deleted_printer_name);
g_clear_pointer (&self->deleted_printer_name, g_free);
PpPrinter *printer = pp_printer_new (self->deleted_printer_name);
pp_printer_delete_async (printer,
NULL,
printer_removed_cb,
NULL);
}
if (self->action != NULL)
g_variant_unref (self->action);
g_clear_object (&self->pp_new_printer_dialog);
g_clear_pointer (&self->new_printer_name, g_free);
g_clear_pointer (&self->new_printer_location, g_free);
g_clear_pointer (&self->new_printer_make_and_model, g_free);
g_clear_pointer (&self->renamed_printer_name, g_free);
g_clear_pointer (&self->old_printer_name, g_free);
g_clear_object (&self->builder);
g_clear_object (&self->lockdown_settings);
g_clear_object (&self->permission);
g_clear_object (&self->subscription_renew_cancellable);
g_clear_object (&self->actualize_printers_list_cancellable);
g_clear_object (&self->cups_status_check_cancellable);
g_clear_handle_id (&self->cups_status_check_id, g_source_remove);
g_clear_handle_id (&self->remove_printer_timeout_id, g_source_remove);
g_clear_object (&self->get_all_ppds_cancellable);
g_clear_pointer (&self->deleted_printer_name, g_free);
g_clear_pointer (&self->action, g_variant_unref);
g_clear_pointer (&self->printer_entries, g_hash_table_destroy);
g_clear_pointer (&self->all_ppds_list, ppd_list_free);
free_dests (self);
G_OBJECT_CLASS (cc_printers_panel_parent_class)->dispose (object);
}

View file

@ -128,41 +128,14 @@ pp_ipp_option_widget_finalize (GObject *object)
{
PpIPPOptionWidget *widget = PP_IPP_OPTION_WIDGET (object);
if (widget->option_name)
{
g_free (widget->option_name);
widget->option_name = NULL;
}
g_cancellable_cancel (widget->cancellable);
if (widget->printer_name)
{
g_free (widget->printer_name);
widget->printer_name = NULL;
}
if (widget->option_supported)
{
ipp_attribute_free (widget->option_supported);
widget->option_supported = NULL;
}
if (widget->option_default)
{
ipp_attribute_free (widget->option_default);
widget->option_default = NULL;
}
if (widget->ipp_attribute)
{
g_hash_table_unref (widget->ipp_attribute);
widget->ipp_attribute = NULL;
}
if (widget->cancellable)
{
g_cancellable_cancel (widget->cancellable);
g_object_unref (widget->cancellable);
}
g_clear_pointer (&widget->option_name, g_free);
g_clear_pointer (&widget->printer_name, g_free);
g_clear_pointer (&widget->option_supported, ipp_attribute_free);
g_clear_pointer (&widget->option_default, ipp_attribute_free);
g_clear_pointer (&widget->ipp_attribute, g_hash_table_unref);
g_clear_object (&widget->cancellable);
G_OBJECT_CLASS (pp_ipp_option_widget_parent_class)->finalize (object);
}

View file

@ -236,8 +236,8 @@ pp_job_finalize (GObject *object)
{
PpJob *self = PP_JOB (object);
g_free (self->title);
g_strfreev (self->auth_info_required);
g_clear_pointer (&self->title, g_free);
g_clear_pointer (&self->auth_info_required, g_strfreev);
G_OBJECT_CLASS (pp_job_parent_class)->finalize (object);
}

View file

@ -561,41 +561,33 @@ pp_new_printer_dialog_init (PpNewPrinterDialog *dialog)
populate_devices_list (dialog);
}
static void
free_devices_list (GList *devices)
{
g_list_free_full (devices, (GDestroyNotify) g_object_unref);
}
static void
pp_new_printer_dialog_finalize (GObject *object)
{
PpNewPrinterDialog *dialog = PP_NEW_PRINTER_DIALOG (object);
g_cancellable_cancel (dialog->remote_host_cancellable);
g_cancellable_cancel (dialog->cancellable);
dialog->text_renderer = NULL;
dialog->icon_renderer = NULL;
if (dialog->host_search_timeout_id != 0)
{
g_source_remove (dialog->host_search_timeout_id);
dialog->host_search_timeout_id = 0;
}
if (dialog->remote_host_cancellable)
{
g_cancellable_cancel (dialog->remote_host_cancellable);
g_clear_object (&dialog->remote_host_cancellable);
}
if (dialog->cancellable)
{
g_cancellable_cancel (dialog->cancellable);
g_clear_object (&dialog->cancellable);
}
g_clear_handle_id (&dialog->host_search_timeout_id, g_source_remove);
g_clear_object (&dialog->remote_host_cancellable);
g_clear_object (&dialog->cancellable);
g_clear_pointer (&dialog->dialog, gtk_widget_destroy);
g_clear_pointer (&dialog->list, ppd_list_free);
if (dialog->builder)
g_clear_object (&dialog->builder);
g_list_free_full (dialog->local_cups_devices, (GDestroyNotify) g_object_unref);
dialog->local_cups_devices = NULL;
g_clear_object (&dialog->builder);
g_clear_pointer (&dialog->local_cups_devices, free_devices_list);
g_clear_object (&dialog->local_printer_icon);
g_clear_object (&dialog->remote_printer_icon);
g_clear_object (&dialog->authenticated_server_icon);
if (dialog->num_of_dests > 0)
{
@ -604,10 +596,6 @@ pp_new_printer_dialog_finalize (GObject *object)
dialog->dests = NULL;
}
g_clear_object (&dialog->local_printer_icon);
g_clear_object (&dialog->remote_printer_icon);
g_clear_object (&dialog->authenticated_server_icon);
G_OBJECT_CLASS (pp_new_printer_dialog_parent_class)->finalize (object);
}
@ -928,8 +916,7 @@ group_physical_devices_cb (gchar ***device_uris,
{
for (iter = dialog->local_cups_devices; iter != NULL; iter = iter->next)
set_device (dialog, (PpPrintDevice *) iter->data, NULL);
g_list_free_full (dialog->local_cups_devices, g_object_unref);
dialog->local_cups_devices = NULL;
g_clear_pointer (&dialog->local_cups_devices, free_devices_list);
}
update_dialog_state (dialog);
@ -1158,7 +1145,7 @@ get_cups_devices_cb (GList *devices,
}
}
g_list_free_full (devices, (GDestroyNotify) g_object_unref);
free_devices_list (devices);
}
static void

View file

@ -167,45 +167,20 @@ pp_ppd_option_widget_finalize (GObject *object)
{
PpPPDOptionWidget *widget = PP_PPD_OPTION_WIDGET (object);
g_cancellable_cancel (widget->cancellable);
if (widget->ppd_filename)
g_unlink (widget->ppd_filename);
g_clear_pointer (&widget->option, cups_option_free);
g_clear_pointer (&widget->printer_name, g_free);
g_clear_pointer (&widget->option_name, g_free);
if (widget->destination)
{
if (widget->option)
{
cups_option_free (widget->option);
widget->option = NULL;
}
if (widget->printer_name)
{
g_free (widget->printer_name);
widget->printer_name = NULL;
}
if (widget->option_name)
{
g_free (widget->option_name);
widget->option_name = NULL;
}
if (widget->destination)
{
cupsFreeDests (1, widget->destination);
widget->destination = NULL;
}
if (widget->ppd_filename)
{
g_unlink (widget->ppd_filename);
g_free (widget->ppd_filename);
widget->ppd_filename = NULL;
}
if (widget->cancellable)
{
g_cancellable_cancel (widget->cancellable);
g_object_unref (widget->cancellable);
}
cupsFreeDests (1, widget->destination);
widget->destination = NULL;
}
g_clear_pointer (&widget->ppd_filename, g_free);
g_clear_object (&widget->cancellable);
G_OBJECT_CLASS (pp_ppd_option_widget_parent_class)->finalize (object);
}

View file

@ -1001,6 +1001,9 @@ pp_printer_entry_dispose (GObject *object)
{
PpPrinterEntry *self = PP_PRINTER_ENTRY (object);
g_cancellable_cancel (self->get_jobs_cancellable);
g_cancellable_cancel (self->check_clean_heads_cancellable);
if (self->pp_details_dialog != NULL)
{
g_signal_handlers_disconnect_by_data (self->pp_details_dialog, self);
@ -1018,13 +1021,8 @@ pp_printer_entry_dispose (GObject *object)
g_clear_pointer (&self->printer_make_and_model, g_free);
g_clear_pointer (&self->printer_hostname, g_free);
g_clear_pointer (&self->inklevel, ink_level_data_free);
g_cancellable_cancel (self->get_jobs_cancellable);
g_clear_object (&self->get_jobs_cancellable);
g_cancellable_cancel (self->check_clean_heads_cancellable);
g_clear_object (&self->check_clean_heads_cancellable);
g_clear_object (&self->clean_command);
G_OBJECT_CLASS (pp_printer_entry_parent_class)->dispose (object);

View file

@ -45,7 +45,7 @@ pp_printer_dispose (GObject *object)
{
PpPrinter *self = PP_PRINTER (object);
g_free (self->printer_name);
g_clear_pointer (&self->printer_name, g_free);
G_OBJECT_CLASS (pp_printer_parent_class)->dispose (object);
}

View file

@ -48,11 +48,11 @@ pp_samba_finalize (GObject *object)
{
PpSamba *self = PP_SAMBA (object);
g_free (self->server);
g_free (self->share);
g_free (self->workgroup);
g_free (self->username);
g_free (self->password);
g_clear_pointer (&self->server, g_free);
g_clear_pointer (&self->share, g_free);
g_clear_pointer (&self->workgroup, g_free);
g_clear_pointer (&self->username, g_free);
g_clear_pointer (&self->password, g_free);
G_OBJECT_CLASS (pp_samba_parent_class)->finalize (object);
}