diff options
author | Max Kellermann <max@duempel.org> | 2014-08-29 12:14:27 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-08-29 13:20:58 +0200 |
commit | 7c25d83f1cc4c7db2d2d3f4506525dd056b885e8 (patch) | |
tree | b710e3f3d0f4edf7de0dcf6d61c823d8da7c9027 /src/db/plugins | |
parent | 8ce30c6a69a64f37a866541f66e3f242fe901f49 (diff) | |
download | mpd-7c25d83f1cc4c7db2d2d3f4506525dd056b885e8.tar.gz mpd-7c25d83f1cc4c7db2d2d3f4506525dd056b885e8.tar.xz mpd-7c25d83f1cc4c7db2d2d3f4506525dd056b885e8.zip |
Tag: use SignedSongTime for the song duration
Diffstat (limited to 'src/db/plugins')
-rw-r--r-- | src/db/plugins/ProxyDatabasePlugin.cxx | 5 | ||||
-rw-r--r-- | src/db/plugins/upnp/Directory.cxx | 12 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/db/plugins/ProxyDatabasePlugin.cxx b/src/db/plugins/ProxyDatabasePlugin.cxx index c6b57d248..97b544203 100644 --- a/src/db/plugins/ProxyDatabasePlugin.cxx +++ b/src/db/plugins/ProxyDatabasePlugin.cxx @@ -199,7 +199,10 @@ ProxySong::ProxySong(const mpd_song *song) #endif TagBuilder tag_builder; - tag_builder.SetTime(mpd_song_get_duration(song)); + + const unsigned duration = mpd_song_get_duration(song); + if (duration > 0) + tag_builder.SetDuration(SignedSongTime::FromS(duration)); for (const auto *i = &tag_table[0]; i->d != TAG_NUM_OF_ITEM_TYPES; ++i) Copy(tag_builder, i->d, song, i->s); diff --git a/src/db/plugins/upnp/Directory.cxx b/src/db/plugins/upnp/Directory.cxx index e43cd48a6..683022a10 100644 --- a/src/db/plugins/upnp/Directory.cxx +++ b/src/db/plugins/upnp/Directory.cxx @@ -59,28 +59,28 @@ ParseItemClass(const char *name, size_t length) } gcc_pure -static int +static SignedSongTime ParseDuration(const char *duration) { char *endptr; unsigned result = ParseUnsigned(duration, &endptr); if (endptr == duration || *endptr != ':') - return 0; + return SignedSongTime::Negative(); result *= 60; duration = endptr + 1; result += ParseUnsigned(duration, &endptr); if (endptr == duration || *endptr != ':') - return 0; + return SignedSongTime::Negative(); result *= 60; duration = endptr + 1; result += ParseUnsigned(duration, &endptr); if (endptr == duration || *endptr != 0) - return 0; + return SignedSongTime::Negative(); - return result; + return SignedSongTime::FromS(result); } /** @@ -183,7 +183,7 @@ protected: const char *duration = GetAttribute(attrs, "duration"); if (duration != nullptr) - tag.SetTime(ParseDuration(duration)); + tag.SetDuration(ParseDuration(duration)); state = RES; } |