mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-10 09:27:43 +02:00
Fix memory leak in global print settings
This commit is contained in:
parent
6e4e710d3b
commit
7c1511c604
@ -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();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user