aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Frühberger <Peter.Fruehberger@gmail.com>2013-10-05 05:36:16 -0700
committerPeter Frühberger <Peter.Fruehberger@gmail.com>2013-10-05 05:36:16 -0700
commit97ac49987633ef20eb78fc93ad41263f725e06a9 (patch)
tree48a6040e2db4abbea169fa5d2ffe12e471f9ba93
parent1ede2411ef3eefcce065ce4f7720688aea5f2f42 (diff)
parent507ad9c6b5ed22519f1b837a79376ae65c1ea5f3 (diff)
Merge pull request #3378 from FernetMenta/aefixes
ActiveAE: make sure sink list is not empty when settings query the default
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp4
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp9
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h2
3 files changed, 11 insertions, 4 deletions
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
index c0746dc8f4..6fbed5ceea 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
@@ -322,7 +322,7 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg)
{
case CActiveAEControlProtocol::INIT:
m_extError = false;
- m_sink.EnumerateSinkList();
+ m_sink.EnumerateSinkList(false);
LoadSettings();
Configure();
msg->Reply(CActiveAEControlProtocol::ACC);
@@ -589,7 +589,7 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg)
m_extError = false;
if (!displayReset)
{
- m_sink.EnumerateSinkList();
+ m_sink.EnumerateSinkList(true);
LoadSettings();
}
Configure();
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
index 98b31f97ee..1dec4f5fd7 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
@@ -491,8 +491,11 @@ void CActiveAESink::Process()
}
}
-void CActiveAESink::EnumerateSinkList()
+void CActiveAESink::EnumerateSinkList(bool force)
{
+ if (!m_sinkInfoList.empty() && !force)
+ return;
+
unsigned int c_retry = 5;
m_sinkInfoList.clear();
CAESinkFactory::EnumerateEx(m_sinkInfoList);
@@ -528,6 +531,8 @@ void CActiveAESink::PrintSinks()
void CActiveAESink::EnumerateOutputDevices(AEDeviceList &devices, bool passthrough)
{
+ EnumerateSinkList(false);
+
for (AESinkInfoList::iterator itt = m_sinkInfoList.begin(); itt != m_sinkInfoList.end(); ++itt)
{
AESinkInfo sinkInfo = *itt;
@@ -556,6 +561,8 @@ void CActiveAESink::EnumerateOutputDevices(AEDeviceList &devices, bool passthrou
std::string CActiveAESink::GetDefaultDevice(bool passthrough)
{
+ EnumerateSinkList(false);
+
for (AESinkInfoList::iterator itt = m_sinkInfoList.begin(); itt != m_sinkInfoList.end(); ++itt)
{
AESinkInfo sinkInfo = *itt;
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h
index fb69646dab..59bad57e26 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h
@@ -83,7 +83,7 @@ class CActiveAESink : private CThread
{
public:
CActiveAESink(CEvent *inMsgEvent);
- void EnumerateSinkList();
+ void EnumerateSinkList(bool force);
void EnumerateOutputDevices(AEDeviceList &devices, bool passthrough);
std::string GetDefaultDevice(bool passthrough);
void Start();