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:
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user