mirror of
https://github.com/taglib/taglib.git
synced 2025-06-04 01:28:21 -04:00
Make it possible to strip tags without deleting them (again). This is
used by MPEG::File::save() so that tags that aren't explicitly saves still exist in memory. git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@332783 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
parent
3de6f40776
commit
cd32d1f8a3
@ -289,7 +289,7 @@ bool MPEG::File::save(int tags)
|
||||
insert(d->ID3v2Tag->render(), d->ID3v2Location, d->ID3v2OriginalSize);
|
||||
}
|
||||
else
|
||||
success = strip(ID3v2) && success;
|
||||
success = strip(ID3v2, false) && success;
|
||||
}
|
||||
else if(d->hasID3v2)
|
||||
success = strip(ID3v2) && success;
|
||||
@ -304,7 +304,7 @@ bool MPEG::File::save(int tags)
|
||||
success = strip(ID3v1) && success;
|
||||
}
|
||||
else if(d->hasID3v1)
|
||||
success = strip(ID3v1) && success;
|
||||
success = strip(ID3v1, false) && success;
|
||||
|
||||
return success;
|
||||
}
|
||||
@ -332,6 +332,11 @@ ID3v1::Tag *MPEG::File::ID3v1Tag(bool create)
|
||||
}
|
||||
|
||||
bool MPEG::File::strip(int tags)
|
||||
{
|
||||
return strip(tags, true);
|
||||
}
|
||||
|
||||
bool MPEG::File::strip(int tags, bool freeMemory)
|
||||
{
|
||||
if(readOnly()) {
|
||||
debug("MPEG::File::strip() - Cannot strip tags from a read only file.");
|
||||
@ -343,8 +348,10 @@ bool MPEG::File::strip(int tags)
|
||||
d->ID3v2Location = -1;
|
||||
d->ID3v2OriginalSize = 0;
|
||||
d->hasID3v2 = false;
|
||||
delete d->ID3v2Tag;
|
||||
d->ID3v2Tag = 0;
|
||||
if(freeMemory) {
|
||||
delete d->ID3v2Tag;
|
||||
d->ID3v2Tag = 0;
|
||||
}
|
||||
|
||||
// v1 tag location has changed, update if it exists
|
||||
if(d->ID3v1Tag)
|
||||
@ -355,8 +362,10 @@ bool MPEG::File::strip(int tags)
|
||||
truncate(d->ID3v1Location);
|
||||
d->ID3v1Location = -1;
|
||||
d->hasID3v1 = false;
|
||||
delete d->ID3v1Tag;
|
||||
d->ID3v1Tag = 0;
|
||||
if(freeMemory) {
|
||||
delete d->ID3v1Tag;
|
||||
d->ID3v1Tag = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -171,11 +171,24 @@ namespace TagLib {
|
||||
* file. By default it strips all tags. It returns true if the tags are
|
||||
* successfully stripped.
|
||||
*
|
||||
* This is equivalent to strip(tags, true)
|
||||
*
|
||||
* \note This will also invalidate pointers to the ID3v2 and ID3v1 tags
|
||||
* as their memory will be freed.
|
||||
*/
|
||||
bool strip(int tags = AllTags);
|
||||
|
||||
/*!
|
||||
* This will strip the tags that match the OR-ed together TagTypes from the
|
||||
* file. By default it strips all tags. It returns true if the tags are
|
||||
* successfully stripped.
|
||||
*
|
||||
* If \a freeMemory is true the ID3v1 and ID3v2 tags will be deleted and
|
||||
* pointers to them will be invalidated.
|
||||
*/
|
||||
// BIC: merge with the method above
|
||||
bool strip(int tags, bool freeMemory);
|
||||
|
||||
/*!
|
||||
* Set the ID3v2::FrameFactory to something other than the default.
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user