1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-12-17 22:21:17 +01:00

Fix "memory leak" of decoder objects... though it wasn't really reachable...

... except with some EXPERIMENTAL flags turned on
This commit is contained in:
Paul Licameli
2016-04-02 00:30:54 -04:00
parent a67cfe9e5c
commit 539eb0edf6
4 changed files with 10 additions and 9 deletions

View File

@@ -155,12 +155,12 @@ ODTask *ODDecodeFFmpegTask::Clone()
ODFileDecoder* ODDecodeFFmpegTask::CreateFileDecoder(const wxString & fileName)
{
// Open the file for import
ODFFmpegDecoder *decoder =
new ODFFmpegDecoder(fileName, mScs, ODDecodeFFmpegTask::Streams{ mChannels },
auto decoder =
make_movable<ODFFmpegDecoder>(fileName, mScs, ODDecodeFFmpegTask::Streams{ mChannels },
(AVFormatContext*)mFormatContext, mStreamIndex);
mDecoders.push_back(decoder);
return decoder;
mDecoders.push_back(std::move(decoder));
return mDecoders.back().get();
}

View File

@@ -312,10 +312,10 @@ ODFileDecoder* ODDecodeFlacTask::CreateFileDecoder(const wxString & fileName)
}
*/
// Open the file for import
ODFlacDecoder *decoder = new ODFlacDecoder(fileName);
auto decoder = make_movable<ODFlacDecoder>(fileName);
mDecoders.push_back(decoder);
return decoder;
mDecoders.push_back(std::move(decoder));
return mDecoders.back().get();
}

View File

@@ -268,7 +268,7 @@ ODFileDecoder* ODDecodeTask::GetOrCreateMatchingFileDecoder(ODDecodeBlockFile* b
if(mDecoders[i]->GetFileName()==blockFile->GetAudioFileName().GetFullPath() &&
GetODType() == blockFile->GetDecodeType() )
{
ret = mDecoders[i];
ret = mDecoders[i].get();
break;
}
}

View File

@@ -28,6 +28,7 @@ robust enough to allow all the user changes such as copy/paste, DELETE, and so o
#ifndef __AUDACITY_ODDecodeTask__
#define __AUDACITY_ODDecodeTask__
#include "../MemoryX.h"
#include <vector>
#include "ODTask.h"
#include "ODTaskThread.h"
@@ -90,7 +91,7 @@ protected:
std::vector<ODDecodeBlockFile*> mBlockFiles;
std::vector<ODFileDecoder*> mDecoders;
std::vector<movable_ptr<ODFileDecoder>> mDecoders;
int mMaxBlockFiles;
int mComputedBlockFiles;