summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Borges <felipeborges@gnome.org>2017-03-02 13:05:46 +0100
committerFelipe Borges <felipeborges@gnome.org>2017-03-06 16:06:24 +0100
commit2ad93bc0b23d0cf468579900e9f1039e20a945a2 (patch)
treec802bd7f9ffaf7ff124cfa07267acbeeeaf94cf5
parentc40772a862363605b31499d8feac8c2352444fbd (diff)
downloadgnome-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.c39
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