gtkprintjob: release the surface and backend before the output io channel

If the GtkPrintJob is freed too early when the surface has been created
but the job hasn't been sent to the printer, it's possible that the
file print backend tries to write to the io chaneel when it is already
closed. This produces runtime critical warnings:

GLib-CRITICAL **: g_io_channel_write_chars: assertion `channel->is_writeable' failed

https://bugzilla.gnome.org/show_bug.cgi?id=685420
This commit is contained in:
Carlos Garcia Campos
2012-10-03 19:24:52 +02:00
committed by Carlos Garcia Campos
parent b81117479b
commit 9de7b8af49

View File

@@ -269,21 +269,21 @@ gtk_print_job_finalize (GObject *object)
GtkPrintJob *job = GTK_PRINT_JOB (object);
GtkPrintJobPrivate *priv = job->priv;
if (priv->surface)
cairo_surface_destroy (priv->surface);
if (priv->backend)
g_object_unref (priv->backend);
if (priv->spool_io != NULL)
{
g_io_channel_unref (priv->spool_io);
priv->spool_io = NULL;
}
if (priv->backend)
g_object_unref (priv->backend);
if (priv->printer)
g_object_unref (priv->printer);
if (priv->surface)
cairo_surface_destroy (priv->surface);
if (priv->settings)
g_object_unref (priv->settings);