summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2007-05-25 17:22:55 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-05-25 17:22:55 +0000
commitcb18766ac587c9326ae5ce82bae0a3d3562977a7 (patch)
tree92b8d1778ba445d851cc18842df801b6f2be443a
parentd2d30dcea14d8b68215408a58db657d8ebd35905 (diff)
downloadgtk+-cb18766ac587c9326ae5ce82bae0a3d3562977a7.tar.gz
Hold a refence on the print operation until gtk_print_job_send() is done.
2007-05-25 Matthias Clasen <mclasen@redhat.com> * gtk/gtkprintoperation-unix.c (unix_end_run): Hold a refence on the print operation until gtk_print_job_send() is done. (#440040, Chris Vine) svn path=/trunk/; revision=17915
-rw-r--r--ChangeLog6
-rw-r--r--gtk/gtkprintoperation-unix.c16
2 files changed, 16 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 889dd36dcb..d9f2ca9dd1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2007-05-25 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkprintoperation-unix.c (unix_end_run): Hold a
+ refence on the print operation until gtk_print_job_send()
+ is done. (#440040, Chris Vine)
+
+2007-05-25 Matthias Clasen <mclasen@redhat.com>
+
* gtk/gtkiconview.c (gtk_icon_view_accessible_ref_child):
Don't crash and don't leak. (#439565, Pedro Villavicencio)
diff --git a/gtk/gtkprintoperation-unix.c b/gtk/gtkprintoperation-unix.c
index e76313ac74..be784380f8 100644
--- a/gtk/gtkprintoperation-unix.c
+++ b/gtk/gtkprintoperation-unix.c
@@ -268,9 +268,8 @@ unix_finish_send (GtkPrintJob *job,
gpointer user_data,
GError *error)
{
- GtkPrintOperationUnix *op_unix;
-
- op_unix = (GtkPrintOperationUnix *) user_data;
+ GtkPrintOperation *op = (GtkPrintOperation *) user_data;
+ GtkPrintOperationUnix *op_unix = op->priv->platform_data;
if (error != NULL)
{
@@ -293,6 +292,8 @@ unix_finish_send (GtkPrintJob *job,
if (op_unix->loop)
g_main_loop_quit (op_unix->loop);
+
+ g_object_unref (op);
}
static void
@@ -312,9 +313,12 @@ unix_end_run (GtkPrintOperation *op,
/* TODO: Check for error */
if (op_unix->job != NULL)
- gtk_print_job_send (op_unix->job,
- unix_finish_send,
- op_unix, NULL);
+ {
+ g_object_ref (op);
+ gtk_print_job_send (op_unix->job,
+ unix_finish_send,
+ op, NULL);
+ }
if (wait)
{