aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Hochecker <fernetmenta@online.de>2014-01-02 09:38:15 +0100
committerRainer Hochecker <fernetmenta@online.de>2014-01-02 09:56:42 +0100
commit4953bd052fdaf94ec2ce6555c41afa30e2488d3b (patch)
tree47edcf557d2883849223f72c600f25737b92270b
parent22979099545b511e8764c8b73f8e17bf188d97c3 (diff)
ActiveAE: fix overwrite of sink latency and cache time
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp14
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp16
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h9
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;