[gtk+] gtkprintjob: release the surface and backend before the output io channel
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gtkprintjob: release the surface and backend before the output io channel
- Date: Sun, 14 Apr 2013 10:19:38 +0000 (UTC)
commit c737e1d194b9fadfbbcfe6a6ce7bc38c16055ef9
Author: Carlos Garcia Campos <cgarcia igalia com>
Date: Wed Oct 3 19:24:52 2012 +0200
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
gtk/gtkprintjob.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkprintjob.c b/gtk/gtkprintjob.c
index 49c664d..439b668 100644
--- a/gtk/gtkprintjob.c
+++ b/gtk/gtkprintjob.c
@@ -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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]