aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist
diff options
context:
space:
mode:
Diffstat (limited to 'src/playlist')
-rw-r--r--src/playlist/PlsPlaylistPlugin.cxx23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/playlist/PlsPlaylistPlugin.cxx b/src/playlist/PlsPlaylistPlugin.cxx
index d44a34cdf..329bd8bfb 100644
--- a/src/playlist/PlsPlaylistPlugin.cxx
+++ b/src/playlist/PlsPlaylistPlugin.cxx
@@ -23,7 +23,7 @@
#include "MemorySongEnumerator.hxx"
#include "InputStream.hxx"
#include "Song.hxx"
-#include "tag/Tag.hxx"
+#include "tag/TagBuilder.hxx"
#include "util/Error.hxx"
#include "util/Domain.hxx"
#include "Log.hxx"
@@ -32,6 +32,8 @@
#include <string>
+#include <stdio.h>
+
static constexpr Domain pls_domain("pls");
static void
@@ -75,14 +77,14 @@ pls_parser(GKeyFile *keyfile, std::forward_list<SongPointer> &songs)
song = Song::NewRemote(value);
g_free(value);
+ TagBuilder tag;
+
sprintf(key, "Title%u", num_entries);
value = g_key_file_get_string(keyfile, "playlist", key,
&error);
- if(error == nullptr && value){
- if (song->tag == nullptr)
- song->tag = new Tag();
- song->tag->AddItem(TAG_TITLE, value);
- }
+ if (error == nullptr && value != nullptr)
+ tag.AddItem(TAG_TITLE, value);
+
/* Ignore errors? Most likely value not present */
if(error) g_error_free(error);
error = nullptr;
@@ -91,15 +93,14 @@ pls_parser(GKeyFile *keyfile, std::forward_list<SongPointer> &songs)
sprintf(key, "Length%u", num_entries);
length = g_key_file_get_integer(keyfile, "playlist", key,
&error);
- if(error == nullptr && length > 0){
- if (song->tag == nullptr)
- song->tag = new Tag();
- song->tag->time = length;
- }
+ if (error == nullptr && length > 0)
+ tag.SetTime(length);
+
/* Ignore errors? Most likely value not present */
if(error) g_error_free(error);
error = nullptr;
+ song->tag = tag.Commit();
songs.emplace_front(song);
num_entries--;
}