summaryrefslogtreecommitdiff
path: root/plugins/flac
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-17 22:23:46 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-17 22:23:46 +0200
commitf7b69992c780be685f014808118a94aef3d87fed (patch)
tree9943c9ad1475f0042c3a5ef9497177f34879fc49 /plugins/flac
parentf29d6657ba7d4d08967fb369bae2e1b3c033bb53 (diff)
added flags to each track in playlist, which bumped dbpl version to 1.2;
list of file tags is no longer written as metadata string, but as flags; fixed couple of memory leaks; blocked metadata editing in subtracks; blocked metadata editing if playlist file format is less than 1.2;
Diffstat (limited to 'plugins/flac')
-rw-r--r--plugins/flac/flac.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/plugins/flac/flac.c b/plugins/flac/flac.c
index 0de7c7c6..5edb9526 100644
--- a/plugins/flac/flac.c
+++ b/plugins/flac/flac.c
@@ -541,7 +541,10 @@ cflac_init_metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__Str
}
}
deadbeef->pl_add_meta (it, "title", NULL);
- deadbeef->pl_add_meta (it, "tags", "VorbisComments");
+ uint32_t f = deadbeef->pl_get_item_flags (it);
+ f &= ~DDB_TAG_MASK;
+ f |= DDB_TAG_VORBISCOMMENTS;
+ deadbeef->pl_set_item_flags (it, f);
}
}
@@ -663,6 +666,7 @@ cflac_insert (DB_playItem_t *after, const char *fname) {
DB_playItem_t *last = deadbeef->pl_insert_cue_from_buffer (after, it, cuesheet, strlen (cuesheet), info.totalsamples, info.info.samplerate);
if (last) {
deadbeef->pl_item_unref (it);
+ deadbeef->pl_item_unref (last);
return last;
}
}
@@ -673,6 +677,8 @@ cflac_insert (DB_playItem_t *after, const char *fname) {
if (info.file) {
deadbeef->fclose (info.file);
}
+ deadbeef->pl_item_unref (it);
+ deadbeef->pl_item_unref (cue_after);
trace ("flac: loaded external cuesheet\n");
return cue_after;
}
@@ -748,7 +754,10 @@ cflac_read_metadata (DB_playItem_t *it) {
FLAC__metadata_iterator_delete (iter);
err = 0;
deadbeef->pl_add_meta (it, "title", NULL);
- deadbeef->pl_add_meta (it, "tags", "VorbisComments");
+ uint32_t f = deadbeef->pl_get_item_flags (it);
+ f &= ~DDB_TAG_MASK;
+ f |= DDB_TAG_VORBISCOMMENTS;
+ deadbeef->pl_set_item_flags (it, f);
error:
if (chain) {
FLAC__metadata_chain_delete (chain);