From 147d301f102512b1a64c85e3896bdd466fb634af Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 29 Aug 2014 13:13:08 +0200 Subject: MultipleOutputs: use SignedSongTime for elapsed_time --- src/PlayerThread.cxx | 4 ++-- src/output/MultipleOutputs.cxx | 12 ++++++------ src/output/MultipleOutputs.hxx | 5 +++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/PlayerThread.cxx b/src/PlayerThread.cxx index e4fc84da1..51d6ee0e8 100644 --- a/src/PlayerThread.cxx +++ b/src/PlayerThread.cxx @@ -674,8 +674,8 @@ Player::ProcessCommand() pc.Lock(); } - pc.elapsed_time = pc.outputs.GetElapsedTime() >= 0 - ? SongTime::FromS(pc.outputs.GetElapsedTime()) + pc.elapsed_time = !pc.outputs.GetElapsedTime().IsNegative() + ? SongTime(pc.outputs.GetElapsedTime()) : elapsed_time; pc.CommandFinished(); diff --git a/src/output/MultipleOutputs.cxx b/src/output/MultipleOutputs.cxx index fe51c6100..be99d5aa5 100644 --- a/src/output/MultipleOutputs.cxx +++ b/src/output/MultipleOutputs.cxx @@ -39,7 +39,7 @@ MultipleOutputs::MultipleOutputs(MixerListener &_mixer_listener) :mixer_listener(_mixer_listener), input_audio_format(AudioFormat::Undefined()), buffer(nullptr), pipe(nullptr), - elapsed_time(-1) + elapsed_time(SignedSongTime::Negative()) { } @@ -344,7 +344,7 @@ MultipleOutputs::Check() if (chunk->length > 0 && chunk->times >= 0.0) /* only update elapsed_time if the chunk provides a defined value */ - elapsed_time = chunk->times; + elapsed_time = SignedSongTime::FromS(chunk->times); is_tail = chunk->next == nullptr; if (is_tail) @@ -428,7 +428,7 @@ MultipleOutputs::Cancel() /* invalidate elapsed_time */ - elapsed_time = -1.0; + elapsed_time = SignedSongTime::Negative(); } void @@ -449,7 +449,7 @@ MultipleOutputs::Close() input_audio_format.Clear(); - elapsed_time = -1.0; + elapsed_time = SignedSongTime::Negative(); } void @@ -470,7 +470,7 @@ MultipleOutputs::Release() input_audio_format.Clear(); - elapsed_time = -1.0; + elapsed_time = SignedSongTime::Negative(); } void @@ -478,5 +478,5 @@ MultipleOutputs::SongBorder() { /* clear the elapsed_time pointer at the beginning of a new song */ - elapsed_time = 0.0; + elapsed_time = SignedSongTime::zero(); } diff --git a/src/output/MultipleOutputs.hxx b/src/output/MultipleOutputs.hxx index f8482037c..2c6536e2a 100644 --- a/src/output/MultipleOutputs.hxx +++ b/src/output/MultipleOutputs.hxx @@ -28,6 +28,7 @@ #include "AudioFormat.hxx" #include "ReplayGainInfo.hxx" +#include "Chrono.hxx" #include "Compiler.h" #include @@ -66,7 +67,7 @@ class MultipleOutputs { * The "elapsed_time" stamp of the most recently finished * chunk. */ - float elapsed_time; + SignedSongTime elapsed_time; public: /** @@ -194,7 +195,7 @@ public: * finished yet. */ gcc_pure - float GetElapsedTime() const { + SignedSongTime GetElapsedTime() const { return elapsed_time; } -- cgit v1.2.3