diff options
author | Felipe Borges <felipeborges@gnome.org> | 2017-03-02 13:05:46 +0100 |
---|---|---|
committer | Felipe Borges <felipeborges@gnome.org> | 2017-03-06 16:06:24 +0100 |
commit | 2ad93bc0b23d0cf468579900e9f1039e20a945a2 (patch) | |
tree | c802bd7f9ffaf7ff124cfa07267acbeeeaf94cf5 | |
parent | c40772a862363605b31499d8feac8c2352444fbd (diff) | |
download | gnome-control-center-2ad93bc0b23d0cf468579900e9f1039e20a945a2.tar.gz |
printers: Properly free pp_jobs_dialog
Since now we have proper async implementation for getting jobs, we
do not need to increment/decrement the objects ref_count manually.
https://bugzilla.gnome.org/show_bug.cgi?id=779313
-rw-r--r-- | panels/printers/pp-jobs-dialog.c | 39 |
1 files changed, 6 insertions, 33 deletions
diff --git a/panels/printers/pp-jobs-dialog.c b/panels/printers/pp-jobs-dialog.c index 296b2a785..f821920cc 100644 --- a/panels/printers/pp-jobs-dialog.c +++ b/panels/printers/pp-jobs-dialog.c @@ -59,8 +59,6 @@ struct _PpJobsDialog { gchar *printer_name; GCancellable *get_jobs_cancellable; - - gint ref_count; }; static void @@ -208,8 +206,6 @@ update_jobs_list_cb (GObject *source_object, g_list_free (jobs); g_clear_object (&dialog->get_jobs_cancellable); - - dialog->ref_count--; } static void @@ -219,8 +215,6 @@ update_jobs_list (PpJobsDialog *dialog) if (dialog->printer_name != NULL) { - dialog->ref_count++; - if (dialog->get_jobs_cancellable != NULL) { g_cancellable_cancel (dialog->get_jobs_cancellable); @@ -304,7 +298,6 @@ pp_jobs_dialog_new (GtkWindow *parent, dialog->user_callback = user_callback; dialog->user_data = user_data; dialog->printer_name = g_strdup (printer_name); - dialog->ref_count = 0; /* connect signals */ g_signal_connect (dialog->dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); @@ -340,31 +333,6 @@ pp_jobs_dialog_update (PpJobsDialog *dialog) update_jobs_list (dialog); } -static gboolean -pp_jobs_dialog_free_idle (gpointer user_data) -{ - PpJobsDialog *dialog = (PpJobsDialog*) user_data; - - if (dialog->ref_count == 0) - { - gtk_widget_destroy (GTK_WIDGET (dialog->dialog)); - dialog->dialog = NULL; - - g_object_unref (dialog->builder); - dialog->builder = NULL; - - g_free (dialog->printer_name); - - g_free (dialog); - - return FALSE; - } - else - { - return TRUE; - } -} - void pp_jobs_dialog_free (PpJobsDialog *dialog) { @@ -374,7 +342,12 @@ pp_jobs_dialog_free (PpJobsDialog *dialog) g_clear_object (&dialog->get_jobs_cancellable); } - g_idle_add (pp_jobs_dialog_free_idle, dialog); + gtk_widget_destroy (GTK_WIDGET (dialog->dialog)); + dialog->dialog = NULL; + + g_clear_object (&dialog->builder); + g_free (dialog->printer_name); + g_free (dialog); } static void |