Merge remote-tracking branch 'upstream/master' into openelec-settings

This commit is contained in:
Stefan Saraev 2013-02-12 11:13:22 +02:00
commit 7216458987
27 changed files with 230 additions and 16 deletions

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="linux"
PKG_VERSION="3.7.6"
PKG_VERSION="3.7.7"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -0,0 +1,75 @@
From bf4d77aeb9ff7c198914031ec0d8268dae0c5973 Mon Sep 17 00:00:00 2001
From: unknown <fernetmenta@online.de>
Date: Fri, 18 Jan 2013 15:16:38 +0100
Subject: [PATCH] multi-screen: fix compilation on windows
---
xbmc/settings/GUIWindowSettingsCategory.cpp | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp
index bb29daa..c468a73 100644
--- a/xbmc/settings/GUIWindowSettingsCategory.cpp
+++ b/xbmc/settings/GUIWindowSettingsCategory.cpp
@@ -525,12 +525,14 @@ void CGUIWindowSettingsCategory::CreateSettings()
FillInRefreshRates(strSetting, g_guiSettings.GetResolution(), false);
continue;
}
+#if defined(HAS_GLX)
else if (strSetting.Equals("videoscreen.monitor"))
{
AddSetting(pSetting, group->GetWidth(), iControlID);
FillInMonitors(strSetting);
continue;
}
+#endif
else if (strSetting.Equals("lookandfeel.skintheme"))
{
AddSetting(pSetting, group->GetWidth(), iControlID);
@@ -1463,6 +1465,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting
// Cascade
FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true);
}
+#if defined(HAS_GLX)
else if (strSetting.Equals("videoscreen.monitor"))
{
CSettingString *pSettingString = (CSettingString *)pSettingControl->GetSetting();
@@ -1477,6 +1480,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(BaseSettingControlPtr pSetting
FillInResolutions("videoscreen.resolution", mode, RES_DESKTOP, true);
}
}
+#endif
else if (strSetting.Equals("videoscreen.resolution"))
{
RESOLUTION nextRes = (RESOLUTION) g_guiSettings.GetInt("videoscreen.resolution");
@@ -2431,6 +2435,7 @@ DisplayMode CGUIWindowSettingsCategory::FillInScreens(CStdString strSetting, RES
void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting)
{
+#if defined(HAS_GLX)
// we expect "videoscreen.monitor" but it might be hidden on some platforms,
// so check that we actually have a visable control.
BaseSettingControlPtr control = GetSetting(strSetting);
@@ -2456,6 +2461,7 @@ void CGUIWindowSettingsCategory::FillInMonitors(CStdString strSetting)
pControl->SetValue(currentMonitor);
g_guiSettings.SetString("videoscreen.monitor", g_settings.m_ResInfo[RES_DESKTOP].strOutput);
}
+#endif
}
@@ -2587,7 +2593,10 @@ void CGUIWindowSettingsCategory::OnRefreshRateChanged(RESOLUTION nextRes)
RESOLUTION lastRes = g_graphicsContext.GetVideoResolution();
bool cancelled = false;
- bool outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor"));
+ bool outputChanged = true;
+#if defined(HAS_GLX)
+ outputChanged = !g_Windowing.IsCurrentOutput(g_guiSettings.GetString("videoscreen.monitor"));
+#endif
g_guiSettings.SetResolution(nextRes);
g_graphicsContext.SetVideoResolution(nextRes, outputChanged);
--
1.7.10

View File

@ -1,4 +1,4 @@
From aee2b8942c507d0b0c52e1a87d72687d864eaeae Mon Sep 17 00:00:00 2001
From 9abc7d0311a3adc6e83d289d54c3e2d0fffc0d28 Mon Sep 17 00:00:00 2001
From: fritsch <peter.fruehberger@gmail.com>
Date: Sun, 10 Feb 2013 21:49:31 +0100
Subject: [PATCH 1/3] AE: Linux AE - some fixes of yesterday merge (Enumerate
@ -38,7 +38,7 @@ index 96a9a72..20af5a1 100644
1.7.10
From 8b382daadfe7e9cd1b6498571dcba8aca7b05c55 Mon Sep 17 00:00:00 2001
From 3dfe32ce310b7543f58572f59c3c9223c38bae20 Mon Sep 17 00:00:00 2001
From: fritsch <peter.fruehberger@gmail.com>
Date: Mon, 11 Feb 2013 00:08:05 +0100
Subject: [PATCH 2/3] AE: in doubt restore old suspend behaviour
@ -129,20 +129,20 @@ index 20af5a1..0f6c6ed 100644
1.7.10
From c42665ba9f1958452567ed1af8e85d07adae6b7b Mon Sep 17 00:00:00 2001
From 9dfebbdd375a2447f9f0d326a40696885e637520 Mon Sep 17 00:00:00 2001
From: fritsch <peter.fruehberger@gmail.com>
Date: Mon, 11 Feb 2013 03:08:42 +0100
Subject: [PATCH 3/3] AE: Stop async closing when going to suspend - we close
in any case but cannot guarantee that the closeEvent
gets set
Subject: [PATCH 3/3] AE: Choose indirection when possible. Care for lazy
evaluation
---
xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp | 23 ++--------------------
xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.h | 2 --
2 files changed, 2 insertions(+), 23 deletions(-)
xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp | 46 ++++++----------------
xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.h | 2 -
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 7 ++--
3 files changed, 16 insertions(+), 39 deletions(-)
diff --git a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp b/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
index 0f6c6ed..017782c 100644
index 0f6c6ed..dc01abe 100644
--- a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.cpp
@@ -59,7 +59,6 @@
@ -162,7 +162,34 @@ index 0f6c6ed..017782c 100644
}
/* this must NEVER be called from outside the main thread or Initialization */
void CSoftAE::InternalOpenSink()
@@ -873,16 +870,8 @@ IAEStream *CSoftAE::FreeStream(IAEStream *stream)
@@ -732,7 +729,7 @@ void CSoftAE::PauseStream(CSoftAEStream *stream)
stream->m_paused = true;
streamLock.Leave();
- OpenSink();
+ m_reOpen = true;
}
void CSoftAE::ResumeStream(CSoftAEStream *stream)
@@ -743,7 +740,7 @@ void CSoftAE::ResumeStream(CSoftAEStream *stream)
streamLock.Leave();
m_streamsPlaying = true;
- OpenSink();
+ m_reOpen = true;
}
void CSoftAE::Stop()
@@ -780,7 +777,7 @@ IAEStream *CSoftAE::MakeStream(enum AEDataFormat dataFormat, unsigned int sample
CSoftAEStream *stream = new CSoftAEStream(dataFormat, sampleRate, encodedSampleRate, channelLayout, options);
m_newStreams.push_back(stream);
streamLock.Leave();
-
+ // this is really needed here
OpenSink();
return stream;
}
@@ -873,17 +870,9 @@ IAEStream *CSoftAE::FreeStream(IAEStream *stream)
RemoveStream(m_playingStreams, (CSoftAEStream*)stream);
RemoveStream(m_streams , (CSoftAEStream*)stream);
lock.Leave();
@ -176,12 +203,26 @@ index 0f6c6ed..017782c 100644
- m_wake.Set();
- }
- else if (m_masterStream == stream)
- OpenSink();
+ // Reopen is old behaviour. Not opening when masterstream stops means clipping on S/PDIF.
+ if(!m_isSuspended && (m_masterStream == stream))
OpenSink();
+ m_reOpen = true;
delete (CSoftAEStream*)stream;
@@ -1029,8 +1018,6 @@ bool CSoftAE::Suspend()
return NULL;
@@ -1012,10 +1001,7 @@ bool CSoftAE::Suspend()
{
itt->m_deviceInfoList.pop_back();
}
- m_sink->Drain();
- m_sink->Deinitialize();
- delete m_sink;
- m_sink = NULL;
+ InternalCloseSink();
}
else
{
@@ -1029,8 +1015,6 @@ bool CSoftAE::Suspend()
// signal anybody, that we are gone now (beware of deadlocks)
// we don't unset the fields here, to care for reinit after resume
@ -190,7 +231,20 @@ index 0f6c6ed..017782c 100644
if(m_reOpen)
m_reOpenEvent.Set();
#endif
@@ -1101,12 +1088,6 @@ void CSoftAE::Run()
@@ -1075,10 +1059,10 @@ void CSoftAE::Run()
// ProcessSuspending() cannot guarantee that we get our sink back softresumed
// that is a big problem as another thread could start adding packets
// this must be checked here, before writing anything on the sinks
- if(m_sinkIsSuspended)
+ if(m_sinkIsSuspended && m_sink)
{
CLog::Log(LOGDEBUG, "CSoftAE::Run - Someone has forgotten to resume us (device resumed)");
- m_sink->SoftResume();
+ m_reOpen = !m_sink->SoftResume() || m_reOpen;
m_sinkIsSuspended = false;
}
if ((this->*m_outputStageFn)(hasAudio) > 0)
@@ -1101,12 +1085,6 @@ void CSoftAE::Run()
restart = true;
}
@ -203,6 +257,33 @@ index 0f6c6ed..017782c 100644
/* Handle idle or forced suspend */
ProcessSuspend();
@@ -1115,7 +1093,8 @@ void CSoftAE::Run()
{
if(m_sinkIsSuspended && m_sink)
{
- m_reOpen = m_reOpen || m_sink->SoftResume();
+ // hint for fritsch: remember lazy evaluation
+ m_reOpen = !m_sink->SoftResume() || m_reOpen;
m_sinkIsSuspended = false;
CLog::Log(LOGDEBUG, "CSoftAE::Run - Sink was forgotten");
}
@@ -1505,7 +1484,6 @@ inline void CSoftAE::RemoveStream(StreamList &streams, CSoftAEStream *stream)
inline void CSoftAE::ProcessSuspend()
{
- m_sinkIsSuspended = false;
unsigned int curSystemClock = 0;
#if defined(TARGET_WINDOWS) || defined(TARGET_LINUX)
if (!m_softSuspend && m_playingStreams.empty() && m_playing_sounds.empty() &&
@@ -1563,7 +1541,7 @@ inline void CSoftAE::ProcessSuspend()
*/
if (!m_isSuspended && (!m_playingStreams.empty() || !m_playing_sounds.empty()))
{
- m_reOpen = m_reOpen || !m_sink->SoftResume(); // sink returns false if it requires reinit
+ m_reOpen = !m_sink->SoftResume() || m_reOpen; // sink returns false if it requires reinit (worthless with current implementation)
m_sinkIsSuspended = false; //sink processing data
m_softSuspend = false; //break suspend loop (under some conditions)
CLog::Log(LOGDEBUG, "Resumed the Sink");
diff --git a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.h b/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.h
index 559e055..26d5e9c 100644
--- a/xbmc/cores/AudioEngine/Engines/SoftAE/SoftAE.h
@ -222,6 +303,30 @@ index 559e055..26d5e9c 100644
CEvent m_saveSuspend;
CCriticalSection m_runningLock; /* released when the thread exits */
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
index b06d358..985c201 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
@@ -1145,15 +1145,16 @@ bool CAESinkALSA::SoftSuspend()
bool CAESinkALSA::SoftResume()
{
// reinit all the clibber
+ bool ret = true; // all fine
if(!m_pcm)
{
if (!snd_config)
snd_config_update();
- Initialize(m_initFormat, m_initDevice);
+ ret = Initialize(m_initFormat, m_initDevice);
}
- //we want that AE loves us again
- return false; // force reinit
+ //we want that AE loves us again - reinit when initialize failed
+ return ret; // force reinit if false
}
void CAESinkALSA::sndLibErrorHandler(const char *file, int line, const char *function, int err, const char *fmt, ...)
--
1.7.10

View File

@ -0,0 +1,34 @@
From d1196435876904453d49b93ce5cefa6903489162 Mon Sep 17 00:00:00 2001
From: Martijn Kaijser <mcm.kaijser@gmail.com>
Date: Wed, 30 Jan 2013 19:30:47 +0100
Subject: [PATCH] [visualizations] fix crash in goom fixes #12584
---
xbmc/visualizations/Goom/goom2k4-0/src/mmx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/xbmc/visualizations/Goom/goom2k4-0/src/mmx.c b/xbmc/visualizations/Goom/goom2k4-0/src/mmx.c
index fdf0649..8effa52 100644
--- a/xbmc/visualizations/Goom/goom2k4-0/src/mmx.c
+++ b/xbmc/visualizations/Goom/goom2k4-0/src/mmx.c
@@ -91,7 +91,7 @@ void zoom_filter_mmx (int prevX, int prevY,
"punpckhbw %%mm7, %%mm5 \n\t" /* 00-c4-00-c4-00-c4-00-c4 */
/* ajouter la longueur de ligne a esi */
- "addl 8(%%ebp),%1 \n\t"
+ "addl %4,%1 \n\t"
/* recuperation des 2 derniers pixels */
"movq (%3,%1,4), %%mm1 \n\t"
@@ -115,7 +115,7 @@ void zoom_filter_mmx (int prevX, int prevY,
"movd %%mm0,%0 \n\t"
:"=g"(expix2[loop])
- :"r"(pos),"r"(coeffs),"r"(expix1)
+ :"r"(pos),"r"(coeffs),"r"(expix1),"r"(prevX)
);
--
1.7.10

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="openssl"
PKG_VERSION="1.0.1c"
PKG_VERSION="1.0.1e"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="OSS"