diff --git a/ChangeLog b/ChangeLog index 23d7072429..a26a9cc53d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-05-25 Matthias Clasen + + Merged from trunk: + + * 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 Merged from trunk: diff --git a/gtk/gtkprintoperation-unix.c b/gtk/gtkprintoperation-unix.c index 0f8e7ffdc7..50c4d8a122 100644 --- a/gtk/gtkprintoperation-unix.c +++ b/gtk/gtkprintoperation-unix.c @@ -261,9 +261,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) { @@ -286,6 +285,8 @@ unix_finish_send (GtkPrintJob *job, if (op_unix->loop) g_main_loop_quit (op_unix->loop); + + g_object_unref (op); } static void @@ -305,9 +306,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) {