diff options
author | Rainer Hochecker <fernetmenta@online.de> | 2014-01-02 09:38:15 +0100 |
---|---|---|
committer | Rainer Hochecker <fernetmenta@online.de> | 2014-01-02 09:56:42 +0100 |
commit | 4953bd052fdaf94ec2ce6555c41afa30e2488d3b (patch) | |
tree | 47edcf557d2883849223f72c600f25737b92270b | |
parent | 22979099545b511e8764c8b73f8e17bf188d97c3 (diff) |
ActiveAE: fix overwrite of sink latency and cache time
-rw-r--r-- | xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 14 | ||||
-rw-r--r-- | xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 16 | ||||
-rw-r--r-- | xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h | 9 |
3 files changed, 22 insertions, 17 deletions
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp index 843321f245..ddde944e28 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp @@ -38,8 +38,6 @@ void CEngineStats::Reset(unsigned int sampleRate) CSingleLock lock(m_lock); m_sinkUpdate = XbmcThreads::SystemClockMillis(); m_sinkDelay = 0; - m_sinkCacheTotal = 0; - m_sinkLatency = 0; m_sinkSampleRate = sampleRate; m_bufferedSamples = 0; m_suspended = false; @@ -1453,18 +1451,22 @@ bool CActiveAE::InitSink() m_extError = true; return false; } - AEAudioFormat *data; - data = (AEAudioFormat*)reply->data; + SinkReply *data; + data = (SinkReply*)reply->data; if (data) { - m_sinkFormat = *data; + m_sinkFormat = data->format; + m_sinkHasVolume = data->hasVolume; + m_stats.SetSinkCacheTotal(data->cacheTotal); + m_stats.SetSinkLatency(data->latency); } - m_sinkHasVolume = m_sink.HasVolume(); reply->Release(); } else { CLog::Log(LOGERROR, "ActiveAE::%s - failed to init", __FUNCTION__); + m_stats.SetSinkCacheTotal(0); + m_stats.SetSinkLatency(0); m_extError = true; return false; } diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp index 7053313044..89caaea1de 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp @@ -76,13 +76,6 @@ void CActiveAESink::Dispose() } } -bool CActiveAESink::HasVolume() -{ - if (!m_sink) - return false; - return m_sink->HasVolume(); -} - AEDeviceType CActiveAESink::GetDeviceType(const std::string &device) { std::string dev = device; @@ -162,11 +155,14 @@ void CActiveAESink::StateMachine(int signal, Protocol *port, Message *msg) if (!m_extError) { - m_stats->SetSinkCacheTotal(m_sink->GetCacheTotal()); - m_stats->SetSinkLatency(m_sink->GetLatency()); + SinkReply reply; + reply.format = m_sinkFormat; + reply.cacheTotal = m_sink->GetCacheTotal(); + reply.latency = m_sink->GetLatency(); + reply.hasVolume = m_sink->HasVolume(); m_state = S_TOP_CONFIGURED_IDLE; m_extTimeout = 10000; - msg->Reply(CSinkControlProtocol::ACC, &m_sinkFormat, sizeof(AEAudioFormat)); + msg->Reply(CSinkControlProtocol::ACC, &reply, sizeof(SinkReply)); } else { diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h index 8b6aa0524b..7dd35176b7 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h @@ -41,6 +41,14 @@ struct SinkConfig const std::string *device; }; +struct SinkReply +{ + AEAudioFormat format; + float cacheTotal; + float latency; + bool hasVolume; +}; + class CSinkControlProtocol : public Protocol { public: @@ -87,7 +95,6 @@ public: std::string GetDefaultDevice(bool passthrough); void Start(); void Dispose(); - bool HasVolume(); AEDeviceType GetDeviceType(const std::string &device); bool HasPassthroughDevice(); CSinkControlProtocol m_controlPort; |