aboutsummaryrefslogtreecommitdiffstats
path: root/src/db/LightSong.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-08-29 12:14:27 +0200
committerMax Kellermann <max@duempel.org>2014-08-29 13:20:58 +0200
commit7c25d83f1cc4c7db2d2d3f4506525dd056b885e8 (patch)
treeb710e3f3d0f4edf7de0dcf6d61c823d8da7c9027 /src/db/LightSong.cxx
parent8ce30c6a69a64f37a866541f66e3f242fe901f49 (diff)
downloadmpd-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.cxx14
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);
}