mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-21 23:00:06 +02:00
Remove naked new[] in: ondemand, toolbars, widgets
This commit is contained in:
parent
089e696cab
commit
0113e6f44f
@ -124,7 +124,7 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
|
||||
|
||||
mDecoder->mDecodeBufferWritePosition+=bytesToCopy;
|
||||
/*
|
||||
short *tmp=new short[frame->header.blocksize];
|
||||
ArrayOf<short> tmp{ frame->header.blocksize };
|
||||
|
||||
for (unsigned int chn=0; chn<mDecoder->mNumChannels; chn++) {
|
||||
if (frame->header.bits_per_sample == 16) {
|
||||
@ -132,7 +132,7 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
|
||||
tmp[s]=buffer[chn][s];
|
||||
}
|
||||
|
||||
mDecoder->mChannels[chn]->Append((samplePtr)tmp,
|
||||
mDecoder->mChannels[chn]->Append((samplePtr)tmp.get(),
|
||||
int16Sample,
|
||||
frame->header.blocksize);
|
||||
}
|
||||
@ -142,8 +142,6 @@ FLAC__StreamDecoderWriteStatus ODFLACFile::write_callback(const FLAC__Frame *fra
|
||||
frame->header.blocksize);
|
||||
}
|
||||
}
|
||||
|
||||
delete [] tmp;
|
||||
*/
|
||||
|
||||
mDecoder->mSamplesDone += frame->header.blocksize;
|
||||
|
@ -83,8 +83,7 @@ void MeterToolBar::Create(wxWindow * parent)
|
||||
|
||||
void MeterToolBar::ReCreateButtons()
|
||||
{
|
||||
void *playState = NULL;
|
||||
void *recordState = NULL;
|
||||
Meter::State playState{ false }, recordState{ false };
|
||||
|
||||
if (mPlayMeter && mProject->GetPlaybackMeter() == mPlayMeter)
|
||||
{
|
||||
@ -100,15 +99,8 @@ void MeterToolBar::ReCreateButtons()
|
||||
|
||||
ToolBar::ReCreateButtons();
|
||||
|
||||
if (playState)
|
||||
{
|
||||
mPlayMeter->RestoreState(playState);
|
||||
}
|
||||
|
||||
if (recordState)
|
||||
{
|
||||
mRecordMeter->RestoreState(recordState);
|
||||
}
|
||||
mPlayMeter->RestoreState(playState);
|
||||
mRecordMeter->RestoreState(recordState);
|
||||
}
|
||||
|
||||
void MeterToolBar::Populate()
|
||||
|
@ -113,17 +113,15 @@ wxString MeterUpdateMsg::toStringIfClipped()
|
||||
// without needing mutexes.
|
||||
//
|
||||
|
||||
MeterUpdateQueue::MeterUpdateQueue(int maxLen):
|
||||
MeterUpdateQueue::MeterUpdateQueue(size_t maxLen):
|
||||
mBufferSize(maxLen)
|
||||
{
|
||||
mBuffer = new MeterUpdateMsg[mBufferSize];
|
||||
Clear();
|
||||
}
|
||||
|
||||
// destructor
|
||||
MeterUpdateQueue::~MeterUpdateQueue()
|
||||
{
|
||||
delete[] mBuffer;
|
||||
}
|
||||
|
||||
void MeterUpdateQueue::Clear()
|
||||
@ -1857,27 +1855,23 @@ void Meter::OnAudioIOStatus(wxCommandEvent &evt)
|
||||
// SaveState() and RestoreState() exist solely for purpose of recreating toolbars
|
||||
// They should really be quering the project for current audio I/O state, but there
|
||||
// isn't a clear way of doing that just yet. (It should NOT query AudioIO.)
|
||||
void *Meter::SaveState()
|
||||
auto Meter::SaveState() -> State
|
||||
{
|
||||
bool *state = new bool[2];
|
||||
state[0] = mMonitoring;
|
||||
state[1] = mActive;
|
||||
|
||||
return state;
|
||||
return { true, mMonitoring, mActive };
|
||||
}
|
||||
|
||||
void Meter::RestoreState(void *state)
|
||||
void Meter::RestoreState(const State &state)
|
||||
{
|
||||
bool *s = (bool *)state;
|
||||
mMonitoring = s[0];
|
||||
mActive = s[1];
|
||||
if (!state.mSaved)
|
||||
return;
|
||||
|
||||
mMonitoring = state.mMonitoring;
|
||||
mActive = state.mActive;
|
||||
|
||||
if (mActive)
|
||||
{
|
||||
mTimer.Start(1000 / mMeterRefreshRate);
|
||||
}
|
||||
|
||||
delete [] s;
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -68,7 +68,7 @@ class MeterUpdateMsg
|
||||
class MeterUpdateQueue
|
||||
{
|
||||
public:
|
||||
MeterUpdateQueue(int maxLen);
|
||||
explicit MeterUpdateQueue(size_t maxLen);
|
||||
~MeterUpdateQueue();
|
||||
|
||||
bool Put(MeterUpdateMsg &msg);
|
||||
@ -79,8 +79,8 @@ class MeterUpdateQueue
|
||||
private:
|
||||
int mStart;
|
||||
int mEnd;
|
||||
int mBufferSize;
|
||||
MeterUpdateMsg *mBuffer;
|
||||
size_t mBufferSize;
|
||||
ArrayOf<MeterUpdateMsg> mBuffer{mBufferSize};
|
||||
};
|
||||
|
||||
class MeterAx;
|
||||
@ -176,9 +176,10 @@ class Meter final : public wxPanelWrapper
|
||||
|
||||
void StartMonitoring();
|
||||
|
||||
// These exist solely for the purpose of reseting the toolbars
|
||||
void *SaveState();
|
||||
void RestoreState(void *state);
|
||||
// These exist solely for the purpose of resetting the toolbars
|
||||
struct State{ bool mSaved, mMonitoring, mActive; };
|
||||
State SaveState();
|
||||
void RestoreState(const State &state);
|
||||
|
||||
private:
|
||||
static bool s_AcceptsFocus;
|
||||
|
@ -69,7 +69,6 @@ MultiDialog::MultiDialog(wxWindow * pParent,
|
||||
{
|
||||
SetName(GetTitle());
|
||||
|
||||
wxString *buttonLabels;
|
||||
wxBoxSizer *mainSizer;
|
||||
{
|
||||
auto uMainSizer = std::make_unique<wxBoxSizer>(wxVERTICAL);
|
||||
@ -92,10 +91,9 @@ MultiDialog::MultiDialog(wxWindow * pParent,
|
||||
vSizer->Add(iconAndTextSizer.release(), 0, wxALIGN_LEFT | wxALL, 5);
|
||||
}
|
||||
|
||||
|
||||
int count = 0;
|
||||
size_t count = 0;
|
||||
while (buttons[count])count++;
|
||||
buttonLabels = new wxString[count];
|
||||
ArrayOf<wxString> buttonLabels{ count };
|
||||
|
||||
count = 0;
|
||||
while (buttons[count]){
|
||||
@ -106,7 +104,7 @@ MultiDialog::MultiDialog(wxWindow * pParent,
|
||||
mRadioBox = safenew wxRadioBox(this, -1,
|
||||
boxMsg,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
count, buttonLabels,
|
||||
count, buttonLabels.get(),
|
||||
1, wxRA_SPECIFY_COLS);
|
||||
mRadioBox->SetName(boxMsg);
|
||||
mRadioBox->SetSelection(0);
|
||||
@ -143,7 +141,6 @@ MultiDialog::MultiDialog(wxWindow * pParent,
|
||||
|
||||
mainSizer->Fit(this);
|
||||
mainSizer->SetSizeHints(this);
|
||||
delete[] buttonLabels;
|
||||
}
|
||||
|
||||
void MultiDialog::OnOK(wxCommandEvent & WXUNUSED(event))
|
||||
|
@ -144,13 +144,8 @@ Ruler::Ruler()
|
||||
|
||||
mUserFonts = false;
|
||||
|
||||
mMajorLabels = 0;
|
||||
mMinorLabels = 0;
|
||||
mMinorMinorLabels = 0;
|
||||
mLengthOld = 0;
|
||||
mLength = 0;
|
||||
mBits = NULL;
|
||||
mUserBits = NULL;
|
||||
mUserBitLen = 0;
|
||||
|
||||
mValid = false;
|
||||
@ -170,15 +165,6 @@ Ruler::Ruler()
|
||||
Ruler::~Ruler()
|
||||
{
|
||||
Invalidate(); // frees up our arrays
|
||||
if( mUserBits )
|
||||
delete [] mUserBits;//JKC
|
||||
|
||||
if (mMajorLabels)
|
||||
delete[] mMajorLabels;
|
||||
if (mMinorLabels)
|
||||
delete[] mMinorLabels;
|
||||
if (mMinorMinorLabels)
|
||||
delete[] mMinorMinorLabels;
|
||||
}
|
||||
|
||||
void Ruler::SetTwoTone(bool twoTone)
|
||||
@ -333,8 +319,6 @@ void Ruler::SetNumberScale(const NumberScale *pScale)
|
||||
|
||||
void Ruler::OfflimitsPixels(int start, int end)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!mUserBits) {
|
||||
if (mOrientation == wxHORIZONTAL)
|
||||
mLength = mRight-mLeft;
|
||||
@ -342,24 +326,19 @@ void Ruler::OfflimitsPixels(int start, int end)
|
||||
mLength = mBottom-mTop;
|
||||
if( mLength < 0 )
|
||||
return;
|
||||
mUserBits = new int[mLength+1];
|
||||
for(i=0; i<=mLength; i++)
|
||||
mUserBits[i] = 0;
|
||||
mUserBits.reinit(static_cast<size_t>(mLength+1), true);
|
||||
mUserBitLen = mLength+1;
|
||||
}
|
||||
|
||||
if (end < start) {
|
||||
i = end;
|
||||
end = start;
|
||||
start = i;
|
||||
}
|
||||
if (end < start)
|
||||
std::swap( start, end );
|
||||
|
||||
if (start < 0)
|
||||
start = 0;
|
||||
if (end > mLength)
|
||||
end = mLength;
|
||||
|
||||
for(i=start; i<=end; i++)
|
||||
for(int i = start; i <= end; i++)
|
||||
mUserBits[i] = 1;
|
||||
}
|
||||
|
||||
@ -385,13 +364,9 @@ void Ruler::Invalidate()
|
||||
else
|
||||
mLength = mBottom-mTop;
|
||||
|
||||
if (mBits) {
|
||||
delete [] mBits;
|
||||
mBits = NULL;
|
||||
}
|
||||
mBits.reset();
|
||||
if (mUserBits && mLength+1 != mUserBitLen) {
|
||||
delete[] mUserBits;
|
||||
mUserBits = NULL;
|
||||
mUserBits.reset();
|
||||
mUserBitLen = 0;
|
||||
}
|
||||
}
|
||||
@ -1053,27 +1028,20 @@ void Ruler::Update(const TimeTrack* timetrack)// Envelope *speedEnv, long minSpe
|
||||
// We can just recompute them as we need them? Yes, but only if
|
||||
// mCustom is false!!!!
|
||||
|
||||
auto size = static_cast<size_t>(mLength + 1);
|
||||
if(!mCustom) {
|
||||
mNumMajor = 0;
|
||||
mNumMinor = 0;
|
||||
mNumMinorMinor = 0;
|
||||
if (mLength!=mLengthOld) {
|
||||
if (mMajorLabels)
|
||||
delete[] mMajorLabels;
|
||||
mMajorLabels = new Label[mLength+1];
|
||||
if (mMinorLabels)
|
||||
delete[] mMinorLabels;
|
||||
mMinorLabels = new Label[mLength+1];
|
||||
if (mMinorMinorLabels)
|
||||
delete[] mMinorMinorLabels;
|
||||
mMinorMinorLabels = new Label[mLength+1];
|
||||
mMajorLabels.reinit(size);
|
||||
mMinorLabels.reinit(size);
|
||||
mMinorMinorLabels.reinit(size);
|
||||
mLengthOld = mLength;
|
||||
}
|
||||
}
|
||||
|
||||
if (mBits)
|
||||
delete[] mBits;
|
||||
mBits = new int[mLength+1];
|
||||
mBits.reinit(size);
|
||||
if (mUserBits)
|
||||
for(i=0; i<=mLength; i++)
|
||||
mBits[i] = mUserBits[i];
|
||||
@ -1515,8 +1483,8 @@ int Ruler::FindZero(Label * label, const int len)
|
||||
int Ruler::GetZeroPosition()
|
||||
{
|
||||
int zero;
|
||||
if((zero = FindZero(mMajorLabels, mNumMajor)) < 0)
|
||||
zero = FindZero(mMinorLabels, mNumMinor);
|
||||
if((zero = FindZero(mMajorLabels.get(), mNumMajor)) < 0)
|
||||
zero = FindZero(mMinorLabels.get(), mNumMinor);
|
||||
// PRL: don't consult minor minor??
|
||||
return zero;
|
||||
}
|
||||
@ -1539,28 +1507,24 @@ void Ruler::GetMaxSize(wxCoord *width, wxCoord *height)
|
||||
|
||||
void Ruler::SetCustomMode(bool value) { mCustom = value; }
|
||||
|
||||
void Ruler::SetCustomMajorLabels(wxArrayString *label, int numLabel, int start, int step)
|
||||
void Ruler::SetCustomMajorLabels(wxArrayString *label, size_t numLabel, int start, int step)
|
||||
{
|
||||
int i;
|
||||
|
||||
mNumMajor = numLabel;
|
||||
mMajorLabels = new Label[numLabel];
|
||||
mMajorLabels.reinit(numLabel);
|
||||
|
||||
for(i=0; i<numLabel; i++) {
|
||||
for(size_t i = 0; i<numLabel; i++) {
|
||||
mMajorLabels[i].text = label->Item(i);
|
||||
mMajorLabels[i].pos = start + i*step;
|
||||
}
|
||||
//Remember: DELETE majorlabels....
|
||||
}
|
||||
|
||||
void Ruler::SetCustomMinorLabels(wxArrayString *label, int numLabel, int start, int step)
|
||||
void Ruler::SetCustomMinorLabels(wxArrayString *label, size_t numLabel, int start, int step)
|
||||
{
|
||||
int i;
|
||||
|
||||
mNumMinor = numLabel;
|
||||
mMinorLabels = new Label[numLabel];
|
||||
mMinorLabels.reinit(numLabel);
|
||||
|
||||
for(i=0; i<numLabel; i++) {
|
||||
for(size_t i = 0; i<numLabel; i++) {
|
||||
mMinorLabels[i].text = label->Item(i);
|
||||
mMinorLabels[i].pos = start + i*step;
|
||||
}
|
||||
|
@ -129,8 +129,8 @@ class AUDACITY_DLL_API Ruler {
|
||||
// If this is the case, you should provide a wxString array of labels, start
|
||||
// label position, and labels step. The range eventually specified will be
|
||||
// ignored.
|
||||
void SetCustomMajorLabels(wxArrayString *label, int numLabel, int start, int step);
|
||||
void SetCustomMinorLabels(wxArrayString *label, int numLabel, int start, int step);
|
||||
void SetCustomMajorLabels(wxArrayString *label, size_t numLabel, int start, int step);
|
||||
void SetCustomMinorLabels(wxArrayString *label, size_t numLabel, int start, int step);
|
||||
|
||||
void SetUseZoomInfo(int leftOffset, const ZoomInfo *zoomInfo);
|
||||
|
||||
@ -191,8 +191,8 @@ private:
|
||||
|
||||
int mDigits;
|
||||
|
||||
int *mUserBits;
|
||||
int *mBits;
|
||||
ArrayOf<int> mUserBits;
|
||||
ArrayOf<int> mBits;
|
||||
int mUserBitLen;
|
||||
|
||||
bool mValid;
|
||||
@ -208,11 +208,11 @@ private:
|
||||
};
|
||||
|
||||
int mNumMajor;
|
||||
Label *mMajorLabels;
|
||||
ArrayOf<Label> mMajorLabels;
|
||||
int mNumMinor;
|
||||
Label *mMinorLabels;
|
||||
ArrayOf<Label> mMinorLabels;
|
||||
int mNumMinorMinor;
|
||||
Label *mMinorMinorLabels;
|
||||
ArrayOf<Label> mMinorMinorLabels;
|
||||
|
||||
// Returns 'zero' label coordinate (for grid drawing)
|
||||
int FindZero(Label * label, int len);
|
||||
|
Loading…
x
Reference in New Issue
Block a user