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/DetachedSong.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/DetachedSong.cxx')
-rw-r--r-- | src/DetachedSong.cxx | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/DetachedSong.cxx b/src/DetachedSong.cxx index fd81545c3..906e29bba 100644 --- a/src/DetachedSong.cxx +++ b/src/DetachedSong.cxx @@ -58,11 +58,16 @@ DetachedSong::IsInDatabase() const return !uri_has_scheme(_uri) && !PathTraitsUTF8::IsAbsolute(_uri); } -double +SignedSongTime DetachedSong::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; - return tag.time - start_time.ToDoubleS(); + b = SongTime(tag.duration); + } + + return SignedSongTime(b - a); } |