diff --git a/packages/mediacenter/xbmc-theme-Confluence/package.mk b/packages/mediacenter/xbmc-theme-Confluence/package.mk index 7f05ccb79b..8b4ffd6102 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/package.mk +++ b/packages/mediacenter/xbmc-theme-Confluence/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="xbmc-theme-Confluence" -PKG_VERSION="13.alpha-18cebf0" +PKG_VERSION="13.alpha-4af3b54" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/xbmc/package.mk b/packages/mediacenter/xbmc/package.mk index f4999ad107..c4e5149db5 100644 --- a/packages/mediacenter/xbmc/package.mk +++ b/packages/mediacenter/xbmc/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="xbmc" -PKG_VERSION="13.alpha-18cebf0" +PKG_VERSION="13.alpha-4af3b54" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/xbmc/patches/xbmc-999.80-pa-hotplug.patch b/packages/mediacenter/xbmc/patches/xbmc-999.80-PR4133.patch similarity index 78% rename from packages/mediacenter/xbmc/patches/xbmc-999.80-pa-hotplug.patch rename to packages/mediacenter/xbmc/patches/xbmc-999.80-PR4133.patch index 885c3afe9e..b74268b1fd 100644 --- a/packages/mediacenter/xbmc/patches/xbmc-999.80-pa-hotplug.patch +++ b/packages/mediacenter/xbmc/patches/xbmc-999.80-PR4133.patch @@ -1,15 +1,15 @@ -From 8369ed76d9a39bd96f15f5a78cf6fa0e66183b1c Mon Sep 17 00:00:00 2001 +From 63de0e201993d4d4ce245afd7ac9187324ecb200 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 2 Feb 2014 13:01:09 +0100 Subject: [PATCH 1/3] ActiveAE: add method for re-init after device/eld change --- - xbmc/cores/AudioEngine/AEFactory.cpp | 6 ++++++ + xbmc/cores/AudioEngine/AEFactory.cpp | 6 ++++ xbmc/cores/AudioEngine/AEFactory.h | 1 + - .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 22 ++++++++++++++++++++++ - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 2 ++ - xbmc/cores/AudioEngine/Interfaces/AE.h | 5 +++++ - 5 files changed, 36 insertions(+) + .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 34 ++++++++++++++++++++++ + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 4 +++ + xbmc/cores/AudioEngine/Interfaces/AE.h | 5 ++++ + 5 files changed, 50 insertions(+) diff --git a/xbmc/cores/AudioEngine/AEFactory.cpp b/xbmc/cores/AudioEngine/AEFactory.cpp index 3094bdf..fff42a6 100644 @@ -38,14 +38,26 @@ index 9a340cc..1d55513 100644 static void RegisterAudioCallback(IAudioCallback* pCallback); static void UnregisterAudioCallback(); diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index 76e0fa8..0ecf5f3 100644 +index 0a4aba0..d363c88 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -425,6 +425,23 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) +@@ -425,6 +425,35 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) } msg->Reply(CActiveAEControlProtocol::ACC); return; + case CActiveAEControlProtocol::DEVICECHANGE: ++ time_t now; ++ time(&now); ++ while (!m_extLastDeviceChange.empty() && (now - m_extLastDeviceChange.front() > 0)) ++ { ++ m_extLastDeviceChange.pop(); ++ } ++ if (m_extLastDeviceChange.size() > 2) ++ { ++ CLog::Log(LOGWARNING,"CActiveAE - received %ld device change events within one second", m_extLastDeviceChange.size()); ++ return; ++ } ++ m_extLastDeviceChange.push(now); + UnconfigureSink(); + m_sink.EnumerateSinkList(true); + LoadSettings(); @@ -65,7 +77,7 @@ index 76e0fa8..0ecf5f3 100644 case CActiveAEControlProtocol::PAUSESTREAM: CActiveAEStream *stream; stream = *(CActiveAEStream**)msg->data; -@@ -2270,6 +2287,11 @@ void CActiveAE::KeepConfiguration(unsigned int millis) +@@ -2269,6 +2298,11 @@ void CActiveAE::KeepConfiguration(unsigned int millis) m_controlPort.SendOutMessage(CActiveAEControlProtocol::KEEPCONFIG, &timeMs, sizeof(unsigned int)); } @@ -78,10 +90,18 @@ index 76e0fa8..0ecf5f3 100644 { Message *reply; diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -index debc8e1..b222b4e 100644 +index debc8e1..225c694 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -@@ -73,6 +73,7 @@ class CActiveAEControlProtocol : public Protocol +@@ -28,6 +28,7 @@ + #include "cores/AudioEngine/Interfaces/AESound.h" + #include "cores/AudioEngine/AEFactory.h" + #include "guilib/DispResource.h" ++#include + + // ffmpeg + #include "DllAvFormat.h" +@@ -73,6 +74,7 @@ class CActiveAEControlProtocol : public Protocol INIT = 0, RECONFIGURE, SUSPEND, @@ -89,7 +109,7 @@ index debc8e1..b222b4e 100644 MUTE, VOLUME, PAUSESTREAM, -@@ -224,6 +225,7 @@ class CActiveAE : public IAE, private CThread +@@ -224,6 +226,7 @@ class CActiveAE : public IAE, private CThread virtual bool SupportsQualityLevel(enum AEQuality level); virtual bool IsSettingVisible(const std::string &settingId); virtual void KeepConfiguration(unsigned int millis); @@ -97,6 +117,14 @@ index debc8e1..b222b4e 100644 virtual void RegisterAudioCallback(IAudioCallback* pCallback); virtual void UnregisterAudioCallback(); +@@ -292,6 +295,7 @@ class CActiveAE : public IAE, private CThread + XbmcThreads::EndTime m_extDrainTimer; + unsigned int m_extKeepConfig; + bool m_extDeferData; ++ std::queue m_extLastDeviceChange; + + enum + { diff --git a/xbmc/cores/AudioEngine/Interfaces/AE.h b/xbmc/cores/AudioEngine/Interfaces/AE.h index f91dc4c..dd32897 100644 --- a/xbmc/cores/AudioEngine/Interfaces/AE.h @@ -116,18 +144,18 @@ index f91dc4c..dd32897 100644 1.8.5.1 -From 2bd151eee2ecd136fff03cc65d0ba29e848815d8 Mon Sep 17 00:00:00 2001 +From e2ec5c813f726351d43dae210288bef43bdb19e6 Mon Sep 17 00:00:00 2001 From: fritsch Date: Mon, 3 Feb 2014 19:57:19 +0100 Subject: [PATCH 2/3] AESinkPULSE: Use Callback to use Factory's DeviceChange() --- - xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp | 48 ++++++++++++++++++++++++++-- + xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp | 46 ++++++++++++++++++++++++++-- xbmc/cores/AudioEngine/Sinks/AESinkPULSE.h | 4 +++ - 2 files changed, 49 insertions(+), 3 deletions(-) + 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp -index d227b2d..bdf2c8e 100644 +index a04a2a8..8888880 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp @@ -189,6 +189,29 @@ static void StreamLatencyUpdateCallback(pa_stream *s, void *userdata) @@ -160,21 +188,19 @@ index d227b2d..bdf2c8e 100644 struct SinkInfoStruct { AEDeviceInfoList *list; -@@ -405,7 +428,12 @@ static void SinkInfoRequestCallback(pa_context *c, const pa_sink_info *i, int eo +@@ -406,7 +429,10 @@ static void SinkInfoRequestCallback(pa_context *c, const pa_sink_info *i, int eo bool CAESinkPULSE::Initialize(AEAudioFormat &format, std::string &device) { - m_IsAllocated = false; -+ + { + CSingleLock lock(m_sec); + m_IsAllocated = false; + } -+ + m_passthrough = false; m_BytesPerSecond = 0; m_BufferSize = 0; - m_Channels = 0; -@@ -421,6 +449,16 @@ bool CAESinkPULSE::Initialize(AEAudioFormat &format, std::string &device) +@@ -423,6 +449,16 @@ bool CAESinkPULSE::Initialize(AEAudioFormat &format, std::string &device) pa_threaded_mainloop_lock(m_MainLoop); @@ -191,7 +217,7 @@ index d227b2d..bdf2c8e 100644 struct pa_channel_map map; pa_channel_map_init(&map); -@@ -593,20 +631,24 @@ bool CAESinkPULSE::Initialize(AEAudioFormat &format, std::string &device) +@@ -595,20 +631,24 @@ bool CAESinkPULSE::Initialize(AEAudioFormat &format, std::string &device) } pa_threaded_mainloop_unlock(m_MainLoop); @@ -201,7 +227,7 @@ index d227b2d..bdf2c8e 100644 format.m_frameSize = frameSize; format.m_frameSamples = format.m_frames * format.m_channelLayout.Count(); m_format = format; - format.m_dataFormat = passthrough ? AE_FMT_S16NE : format.m_dataFormat; + format.m_dataFormat = m_passthrough ? AE_FMT_S16NE : format.m_dataFormat; Pause(false); + { @@ -216,10 +242,10 @@ index d227b2d..bdf2c8e 100644 { + CSingleLock lock(m_sec); m_IsAllocated = false; + m_passthrough = false; - if (m_Stream) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.h b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.h -index 2992d81..202a3cb 100644 +index 9fa301f..1a2284d 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.h @@ -22,9 +22,11 @@ @@ -247,7 +273,7 @@ index 2992d81..202a3cb 100644 1.8.5.1 -From aa942d3a2db5497b3ad19e981dc7cff3142c2b7b Mon Sep 17 00:00:00 2001 +From 3bc44eab85cc050bfd4b53d2d80f4afdf5822855 Mon Sep 17 00:00:00 2001 From: fritsch Date: Wed, 5 Feb 2014 09:21:38 +0100 Subject: [PATCH 3/3] AESinkPULSE: Track Change Event again - don't do anything @@ -258,7 +284,7 @@ Subject: [PATCH 3/3] AESinkPULSE: Track Change Event again - don't do anything 1 file changed, 5 insertions(+) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp -index bdf2c8e..152cfd7 100644 +index 8888880..21131ae 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp @@ -209,6 +209,11 @@ static void SinkChangedCallback(pa_context *c, pa_subscription_event_type_t t, u