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/LightSong.cxx | |
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/LightSong.cxx')
-rw-r--r-- | src/db/LightSong.cxx | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/db/LightSong.cxx b/src/db/LightSong.cxx index 3e0f361d8..5cdebc133 100644 --- a/src/db/LightSong.cxx +++ b/src/db/LightSong.cxx @@ -20,14 +20,16 @@ #include "LightSong.hxx" #include "tag/Tag.hxx" -double +SignedSongTime LightSong::GetDuration() const { - if (end_time.IsPositive()) - return (end_time - start_time).ToDoubleS(); + SongTime a = start_time, b = end_time; + if (!b.IsPositive()) { + if (tag->duration.IsNegative()) + return tag->duration; - if (tag->time <= 0) - return 0; + b = SongTime(tag->duration); + } - return tag->time - start_time.ToDoubleS(); + return SignedSongTime(b - a); } |