From de047e1ad952957638ab5ba378dc96ea560d0bee Mon Sep 17 00:00:00 2001 From: Artur Wieczorek Date: Mon, 29 May 2017 00:44:14 +0200 Subject: [PATCH] Delete temporary device context used in wxGtkPrinter Lifetime of wxPrinterDC created in BeginPrint() handler (associated with "begin-print" signal) is limited to the current print job and therefore this object should be destroyed when the actual printing is finished. See #14233. --- src/gtk/print.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gtk/print.cpp b/src/gtk/print.cpp index 277ce6fad2..0bc556158e 100644 --- a/src/gtk/print.cpp +++ b/src/gtk/print.cpp @@ -965,6 +965,7 @@ bool wxGtkPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt ) dataToSend.printer = this; dataToSend.printout = printout; + wxDELETE(m_dc); // These Gtk signals are caught here. g_signal_connect (printOp, "begin-print", G_CALLBACK (gtk_begin_print_callback), &dataToSend); g_signal_connect (printOp, "draw-page", G_CALLBACK (gtk_draw_page_print_callback), &dataToSend); @@ -985,6 +986,9 @@ bool wxGtkPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt ) sm_lastError = wxPRINTER_ERROR; } + printout->SetDC(NULL); + wxDELETE(m_dc); + return (sm_lastError == wxPRINTER_NO_ERROR); }