diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2020-06-27 10:28:20 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@gmail.com> | 2020-09-22 21:23:05 +0000 |
commit | 519c390b042d07d072656a6896ad9db536d068e7 (patch) | |
tree | d0d86aa8cd0a0387ec3ad1ccb19de878cfdb064d | |
parent | 7ebf0f22aa2b4d8ae9153e310ea77dd7c8911822 (diff) | |
download | gnome-control-center-519c390b042d07d072656a6896ad9db536d068e7.tar.gz |
printers: Don't pass PpHost references around
An internal GTask will hold a reference to it for the duration of the async calls.
Correctly unref these objects in finalize.
-rw-r--r-- | panels/printers/pp-new-printer-dialog.c | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c index e17e36ce5..3d29b5dc7 100644 --- a/panels/printers/pp-new-printer-dialog.c +++ b/panels/printers/pp-new-printer-dialog.c @@ -542,6 +542,10 @@ pp_new_printer_dialog_finalize (GObject *object) g_clear_object (&self->local_printer_icon); g_clear_object (&self->remote_printer_icon); g_clear_object (&self->authenticated_server_icon); + g_clear_object (&self->snmp_host); + g_clear_object (&self->socket_host); + g_clear_object (&self->lpd_host); + g_clear_object (&self->remote_cups_host); g_clear_object (&self->samba_host); if (self->num_of_dests > 0) @@ -1055,17 +1059,14 @@ get_snmp_devices_cb (GObject *source_object, gpointer user_data) { PpNewPrinterDialog *self = user_data; - PpHost *host = (PpHost *) source_object; g_autoptr(GError) error = NULL; g_autoptr(GPtrArray) devices = NULL; - devices = pp_host_get_snmp_devices_finish (host, res, &error); - g_object_unref (source_object); + devices = pp_host_get_snmp_devices_finish (PP_HOST (source_object), res, &error); if (devices != NULL) { - if ((gpointer) source_object == (gpointer) self->snmp_host) - self->snmp_host = NULL; + g_clear_object(&self->snmp_host); add_devices_to_list (self, devices); @@ -1077,8 +1078,7 @@ get_snmp_devices_cb (GObject *source_object, { g_warning ("%s", error->message); - if ((gpointer) source_object == (gpointer) self->snmp_host) - self->snmp_host = NULL; + g_clear_object(&self->snmp_host); update_dialog_state (self); } @@ -1091,17 +1091,14 @@ get_remote_cups_devices_cb (GObject *source_object, gpointer user_data) { PpNewPrinterDialog *self = user_data; - PpHost *host = (PpHost *) source_object; g_autoptr(GError) error = NULL; g_autoptr(GPtrArray) devices = NULL; - devices = pp_host_get_remote_cups_devices_finish (host, res, &error); - g_object_unref (source_object); + devices = pp_host_get_remote_cups_devices_finish (PP_HOST (source_object), res, &error); if (devices != NULL) { - if ((gpointer) source_object == (gpointer) self->remote_cups_host) - self->remote_cups_host = NULL; + g_clear_object(&self->remote_cups_host); add_devices_to_list (self, devices); @@ -1113,8 +1110,7 @@ get_remote_cups_devices_cb (GObject *source_object, { g_warning ("%s", error->message); - if ((gpointer) source_object == (gpointer) self->remote_cups_host) - self->remote_cups_host = NULL; + g_clear_object(&self->remote_cups_host); update_dialog_state (self); } @@ -1191,17 +1187,14 @@ get_jetdirect_devices_cb (GObject *source_object, gpointer user_data) { PpNewPrinterDialog *self = user_data; - PpHost *host = (PpHost *) source_object; g_autoptr(GError) error = NULL; g_autoptr(GPtrArray) devices = NULL; - devices = pp_host_get_jetdirect_devices_finish (host, res, &error); - g_object_unref (source_object); + devices = pp_host_get_jetdirect_devices_finish (PP_HOST (source_object), res, &error); if (devices != NULL) { - if ((gpointer) source_object == (gpointer) self->socket_host) - self->socket_host = NULL; + g_clear_object(&self->socket_host); add_devices_to_list (self, devices); @@ -1213,8 +1206,7 @@ get_jetdirect_devices_cb (GObject *source_object, { g_warning ("%s", error->message); - if ((gpointer) source_object == (gpointer) self->socket_host) - self->socket_host = NULL; + g_clear_object(&self->socket_host); update_dialog_state (self); } @@ -1227,17 +1219,14 @@ get_lpd_devices_cb (GObject *source_object, gpointer user_data) { PpNewPrinterDialog *self = user_data; - PpHost *host = (PpHost *) source_object; g_autoptr(GError) error = NULL; g_autoptr(GPtrArray) devices = NULL; - devices = pp_host_get_lpd_devices_finish (host, res, &error); - g_object_unref (source_object); + devices = pp_host_get_lpd_devices_finish (PP_HOST (source_object), res, &error); if (devices != NULL) { - if ((gpointer) source_object == (gpointer) self->lpd_host) - self->lpd_host = NULL; + g_clear_object(&self->lpd_host); add_devices_to_list (self, devices); @@ -1249,8 +1238,7 @@ get_lpd_devices_cb (GObject *source_object, { g_warning ("%s", error->message); - if ((gpointer) source_object == (gpointer) self->lpd_host) - self->lpd_host = NULL; + g_clear_object(&self->lpd_host); update_dialog_state (self); } |