diff options
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); } |