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:
committed by
Carlos Garcia Campos
parent
b81117479b
commit
9de7b8af49
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user