diff options
author | Peter Frühberger <Peter.Fruehberger@gmail.com> | 2013-10-05 05:36:16 -0700 |
---|---|---|
committer | Peter Frühberger <Peter.Fruehberger@gmail.com> | 2013-10-05 05:36:16 -0700 |
commit | 97ac49987633ef20eb78fc93ad41263f725e06a9 (patch) | |
tree | 48a6040e2db4abbea169fa5d2ffe12e471f9ba93 | |
parent | 1ede2411ef3eefcce065ce4f7720688aea5f2f42 (diff) | |
parent | 507ad9c6b5ed22519f1b837a79376ae65c1ea5f3 (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.cpp | 4 | ||||
-rw-r--r-- | xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 9 | ||||
-rw-r--r-- | xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h | 2 |
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(); |