diff --git a/src/driver/audiodec/ffmpegdec.cpp b/src/driver/audiodec/ffmpegdec.cpp index afe2c7462..273026b92 100644 --- a/src/driver/audiodec/ffmpegdec.cpp +++ b/src/driver/audiodec/ffmpegdec.cpp @@ -348,8 +348,10 @@ CBaseDec::RetCode CFfmpegDec::Decoder(FILE *_in, const CFile::FileType ft, int / //av_free(avcc); DeInit(); - if (!_meta_data->cover.empty()) + if (_meta_data->cover_temporary && !_meta_data->cover.empty()) { + _meta_data->cover_temporary = false; unlink(_meta_data->cover.c_str()); + } return Status; } @@ -445,6 +447,7 @@ bool CFfmpegDec::SetMetaData(FILE *_in, CFile::FileType ft, CAudioMetaData* m) fwrite(pkt->data, pkt->size, 1, f); fclose(f); m->cover = cover; + m->cover_temporary = true; } } } diff --git a/src/driver/audiometadata.cpp b/src/driver/audiometadata.cpp index 92c6a78fc..5b0c72e0e 100644 --- a/src/driver/audiometadata.cpp +++ b/src/driver/audiometadata.cpp @@ -42,6 +42,13 @@ CAudioMetaData::CAudioMetaData() clear(); } +// destructor +CAudioMetaData::~CAudioMetaData() +{ + if (cover_temporary && !cover.empty()) + unlink(cover.c_str()); +} + // copy constructor CAudioMetaData::CAudioMetaData( const CAudioMetaData& src ) : type( src.type ), type_info( src.type_info ), @@ -52,7 +59,7 @@ CAudioMetaData::CAudioMetaData( const CAudioMetaData& src ) hasInfoOrXingTag( src.hasInfoOrXingTag ), artist( src.artist ), title( src.title ), album( src.album ), sc_station( src.sc_station ), date( src.date ), genre( src.genre ), track( src.track ),cover(src.cover), - changed( src.changed ) + changed( src.changed ), cover_temporary(false) { } @@ -84,6 +91,8 @@ void CAudioMetaData::operator=( const CAudioMetaData& src ) cover = src.cover; sc_station = src.sc_station; changed = src.changed; + changed = src.changed; + cover_temporary = false; } void CAudioMetaData::clear() @@ -105,6 +114,9 @@ void CAudioMetaData::clear() date.clear(); genre.clear(); track.clear(); + if (cover_temporary && !cover.empty()) + unlink(cover.c_str()); cover.clear(); + cover_temporary=false; changed=false; } diff --git a/src/driver/audiometadata.h b/src/driver/audiometadata.h index ba2a58e0c..091927cc9 100644 --- a/src/driver/audiometadata.h +++ b/src/driver/audiometadata.h @@ -44,6 +44,8 @@ class CAudioMetaData public: // constructor CAudioMetaData(); + // destructor + ~CAudioMetaData(); // copy constructor CAudioMetaData( const CAudioMetaData& src ); // assignment operator @@ -85,6 +87,7 @@ public: std::string genre; std::string track; std::string cover; + bool cover_temporary; bool changed; }; #endif /* __AUDIO_METADATA__ */