1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-10 17:37:45 +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"
// Globals, so that we remember settings from session to session
static wxPrintData *gPrintData = NULL;
static wxPageSetupData *gPageSetupData = NULL;
wxPrintData &gPrintData()
{
static wxPrintData theData;
return theData;
}
class AudacityPrintout final : public wxPrintout
{
@ -139,28 +142,17 @@ void AudacityPrintout::GetPageInfo(int *minPage, int *maxPage,
void HandlePageSetup(wxWindow *parent)
{
if (gPageSetupData == NULL)
gPageSetupData = new wxPageSetupDialogData();
if (gPrintData == NULL)
gPrintData = new wxPrintData();
wxPageSetupData pageSetupData;
(*gPageSetupData) = *gPrintData;
wxPageSetupDialog pageSetupDialog(parent, gPageSetupData);
wxPageSetupDialog pageSetupDialog(parent, &pageSetupData);
pageSetupDialog.ShowModal();
(*gPrintData) = pageSetupDialog.GetPageSetupData().GetPrintData();
(*gPageSetupData) = pageSetupDialog.GetPageSetupData();
gPrintData() = pageSetupDialog.GetPageSetupData().GetPrintData();
}
void HandlePrint(wxWindow *parent, const wxString &name, TrackList *tracks)
{
if (gPageSetupData == NULL)
gPageSetupData = new wxPageSetupDialogData();
if (gPrintData == NULL)
gPrintData = new wxPrintData();
wxPrintDialogData printDialogData(*gPrintData);
wxPrintDialogData printDialogData(gPrintData());
wxPrinter printer(&printDialogData);
AudacityPrintout printout(name, tracks);
@ -174,6 +166,6 @@ void HandlePrint(wxWindow *parent, const wxString &name, TrackList *tracks)
}
}
else {
*gPrintData = printer.GetPrintDialogData().GetPrintData();
gPrintData() = printer.GetPrintDialogData().GetPrintData();
}
}