1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-09-18 17:10:55 +02:00

Fix memory leak in global print settings

This commit is contained in:
Paul Licameli 2016-08-10 00:55:41 -04:00
parent 6e4e710d3b
commit 7c1511c604

View File

@ -33,8 +33,11 @@
#include "Experimental.h" #include "Experimental.h"
// Globals, so that we remember settings from session to session // Globals, so that we remember settings from session to session
static wxPrintData *gPrintData = NULL; wxPrintData &gPrintData()
static wxPageSetupData *gPageSetupData = NULL; {
static wxPrintData theData;
return theData;
}
class AudacityPrintout final : public wxPrintout class AudacityPrintout final : public wxPrintout
{ {
@ -139,28 +142,17 @@ void AudacityPrintout::GetPageInfo(int *minPage, int *maxPage,
void HandlePageSetup(wxWindow *parent) void HandlePageSetup(wxWindow *parent)
{ {
if (gPageSetupData == NULL) wxPageSetupData pageSetupData;
gPageSetupData = new wxPageSetupDialogData();
if (gPrintData == NULL)
gPrintData = new wxPrintData();
(*gPageSetupData) = *gPrintData; wxPageSetupDialog pageSetupDialog(parent, &pageSetupData);
wxPageSetupDialog pageSetupDialog(parent, gPageSetupData);
pageSetupDialog.ShowModal(); pageSetupDialog.ShowModal();
(*gPrintData) = pageSetupDialog.GetPageSetupData().GetPrintData(); gPrintData() = pageSetupDialog.GetPageSetupData().GetPrintData();
(*gPageSetupData) = pageSetupDialog.GetPageSetupData();
} }
void HandlePrint(wxWindow *parent, const wxString &name, TrackList *tracks) void HandlePrint(wxWindow *parent, const wxString &name, TrackList *tracks)
{ {
if (gPageSetupData == NULL) wxPrintDialogData printDialogData(gPrintData());
gPageSetupData = new wxPageSetupDialogData();
if (gPrintData == NULL)
gPrintData = new wxPrintData();
wxPrintDialogData printDialogData(*gPrintData);
wxPrinter printer(&printDialogData); wxPrinter printer(&printDialogData);
AudacityPrintout printout(name, tracks); AudacityPrintout printout(name, tracks);
@ -174,6 +166,6 @@ void HandlePrint(wxWindow *parent, const wxString &name, TrackList *tracks)
} }
} }
else { else {
*gPrintData = printer.GetPrintDialogData().GetPrintData(); gPrintData() = printer.GetPrintDialogData().GetPrintData();
} }
} }