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:
parent
6e4e710d3b
commit
7c1511c604
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user