diff options
author | waker <wakeroid@gmail.com> | 2011-03-09 14:00:48 +0100 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2011-03-09 14:00:48 +0100 |
commit | 298961916acac828df8de8ac740eacc2df0a5e40 (patch) | |
tree | 991dcf38fbe67150580c6b0fe6d0e9ab92644f4d /playlist.c | |
parent | 2d0b00f6bbd326790c053961ccec07106cb172c7 (diff) |
few fixes/improvements to metadata editor and related plugin APIs
Diffstat (limited to 'playlist.c')
-rw-r--r-- | playlist.c | 50 |
1 files changed, 47 insertions, 3 deletions
@@ -1987,8 +1987,8 @@ pl_replace_meta (playItem_t *it, const char *key, const char *value) { m = m->next; } if (m) { - metacache_remove_string (m->value);//free (m->value); - m->value = metacache_add_string (value);//strdup (value); + metacache_remove_string (m->value); + m->value = metacache_add_string (value); UNLOCK; return; } @@ -2012,6 +2012,28 @@ pl_set_meta_float (playItem_t *it, const char *key, float value) { pl_replace_meta (it, key, s); } +void +pl_delete_meta (playItem_t *it, const char *key) { + DB_metaInfo_t *prev = NULL; + DB_metaInfo_t *m = it->meta; + while (m) { + if (!strcasecmp (key, m->key)) { + if (prev) { + prev->next = m->next; + } + else { + it->meta = m->next; + } + metacache_remove_string (m->key); + metacache_remove_string (m->value); + free (m); + break; + } + prev = m; + m = m->next; + } +} + const char * pl_find_meta (playItem_t *it, const char *key) { DB_metaInfo_t *m = it->meta; @@ -2037,10 +2059,32 @@ pl_find_meta_float (playItem_t *it, const char *key, float def) { } DB_metaInfo_t * -pl_get_metadata (playItem_t *it) { +pl_get_metadata_head (playItem_t *it) { return it->meta; } +void +pl_delete_metadata (playItem_t *it, DB_metaInfo_t *meta) { + DB_metaInfo_t *prev = NULL; + DB_metaInfo_t *m = it->meta; + while (m) { + if (m == meta) { + if (prev) { + prev->next = m->next; + } + else { + it->meta = m->next; + } + metacache_remove_string (m->key); + metacache_remove_string (m->value); + free (m); + break; + } + prev = m; + m = m->next; + } +} + int pl_delete_selected (void) { GLOBAL_LOCK; |