diff --git a/packages/mediacenter/kodi-theme-Confluence/package.mk b/packages/mediacenter/kodi-theme-Confluence/package.mk index c5d61e2ae3..8087a7d570 100644 --- a/packages/mediacenter/kodi-theme-Confluence/package.mk +++ b/packages/mediacenter/kodi-theme-Confluence/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="kodi-theme-Confluence" -PKG_VERSION="15.1-f4dda26" +PKG_VERSION="15.2-rc2-4ed3eb6" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi-theme-Confluence/patches/kodi-theme-Confluence-999.99-Isengard-backports.patch b/packages/mediacenter/kodi-theme-Confluence/patches/kodi-theme-Confluence-999.99-Isengard-backports.patch deleted file mode 100644 index 9f21c467cd..0000000000 --- a/packages/mediacenter/kodi-theme-Confluence/patches/kodi-theme-Confluence-999.99-Isengard-backports.patch +++ /dev/null @@ -1,29 +0,0 @@ -From be7118372ed9ed86ad99187eff4f6f056dfde416 Mon Sep 17 00:00:00 2001 -From: ronie -Date: Tue, 18 Aug 2015 12:24:46 +0200 -Subject: [PATCH 11/17] [Confluence] fix watched flag in media info 3 view - ---- - 720p/ViewsVideoLibrary.xml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/720p/ViewsVideoLibrary.xml b/720p/ViewsVideoLibrary.xml -index 443cd62..d7de36c 100644 ---- a/720p/ViewsVideoLibrary.xml -+++ b/720p/ViewsVideoLibrary.xml -@@ -1632,7 +1632,6 @@ - OverlayWatching.png - ListItem.IsResumable - -- - - 320 - 14 -@@ -1641,6 +1640,7 @@ - $INFO[ListItem.Overlay] - keep - -+ - - - 0 diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index ccbeeda321..97ffc98958 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="kodi" -PKG_VERSION="15.1-f4dda26" +PKG_VERSION="15.2-rc2-4ed3eb6" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/mediacenter/kodi/patches/kodi-999.99-Isengard-backports.patch b/packages/mediacenter/kodi/patches/kodi-999.99-Isengard-backports.patch deleted file mode 100644 index a7bada307e..0000000000 --- a/packages/mediacenter/kodi/patches/kodi-999.99-Isengard-backports.patch +++ /dev/null @@ -1,1314 +0,0 @@ -From eaeaf6d8321073c79e562afb5f8da7132c5fd20a Mon Sep 17 00:00:00 2001 -From: ronie -Date: Sun, 9 Aug 2015 15:17:58 +0200 -Subject: [PATCH 01/30] fix Window.IsMedia infobool - ---- - xbmc/GUIInfoManager.cpp | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/xbmc/GUIInfoManager.cpp b/xbmc/GUIInfoManager.cpp -index 8cf1202..355e9a5 100644 ---- a/xbmc/GUIInfoManager.cpp -+++ b/xbmc/GUIInfoManager.cpp -@@ -1203,10 +1203,8 @@ int CGUIInfoManager::TranslateSingleString(const std::string &strCondition, bool - { // TODO: The parameter for these should really be on the first not the second property - if (prop.param().find("xml") != std::string::npos) - return AddMultiInfo(GUIInfo(window_bools[i].val, 0, ConditionalStringParameter(prop.param()))); -- int winID = prop.param().empty() ? 0 : CButtonTranslator::TranslateWindow(prop.param()); -- if (winID != WINDOW_INVALID) -- return AddMultiInfo(GUIInfo(window_bools[i].val, winID, 0)); -- return 0; -+ int winID = prop.param().empty() ? WINDOW_INVALID : CButtonTranslator::TranslateWindow(prop.param()); -+ return winID != WINDOW_INVALID ? AddMultiInfo(GUIInfo(window_bools[i].val, winID, 0)) : window_bools[i].val; - } - } - } - -From 7da667b2733d3b125b200fcda120ea512ae599f1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A4r=20Bj=C3=B6rklund?= -Date: Sun, 9 Aug 2015 19:31:11 +0200 -Subject: [PATCH 02/30] Updated taglib that fixes a crash when playing flac - files - ---- - project/BuildDependencies/scripts/0_package.list | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/project/BuildDependencies/scripts/0_package.list b/project/BuildDependencies/scripts/0_package.list -index b0d90e1..fdc1d54 100644 ---- a/project/BuildDependencies/scripts/0_package.list -+++ b/project/BuildDependencies/scripts/0_package.list -@@ -47,6 +47,6 @@ PIL-1.1.7p-win32.7z - python-2.7.8-win32.7z - sqlite-3.8.6-win32-vc120.7z - swig-2.0.7-win32-1.7z --taglib-1.9.1-win32-vc120.7z -+taglib-1.9.1-patched-win32-vc120.7z - texturepacker-1.0.2-win32.7z - tinyxml-2.6.2_3-win32-vc120.7z - -From d1d7a506c44da50b7da11aedc469c20badbac805 Mon Sep 17 00:00:00 2001 -From: MilhouseVH -Date: Sun, 16 Aug 2015 21:34:08 +0100 -Subject: [PATCH 04/30] [mysql] Fix incomprehensible error message [backport] - ---- - xbmc/dbwrappers/mysqldataset.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/xbmc/dbwrappers/mysqldataset.cpp b/xbmc/dbwrappers/mysqldataset.cpp -index 34c2477..f133dde 100644 ---- a/xbmc/dbwrappers/mysqldataset.cpp -+++ b/xbmc/dbwrappers/mysqldataset.cpp -@@ -277,7 +277,7 @@ int MysqlDatabase::copy(const char *backup_name) { - if ( (ret=query_with_reconnect(sql)) != MYSQL_OK ) - { - mysql_free_result(res); -- throw DbErrors("Can't copy schema for table '%s'\nError: %d", db.c_str(), ret); -+ throw DbErrors("Can't copy schema for table '%s'\nError: %d", row[0], ret); - } - - // copy the table data - -From de0c4bde9ee5d03cbc8df67f3aae42d605b124c1 Mon Sep 17 00:00:00 2001 -From: Frank Razenberg -Date: Wed, 12 Aug 2015 23:44:38 +0200 -Subject: [PATCH 05/30] [action] Disregard sign of volume adjustment actions to - match seeking behavior - ---- - xbmc/Application.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index f3f65c5..352df29 100644 ---- a/xbmc/Application.cpp -+++ b/xbmc/Application.cpp -@@ -2415,9 +2415,9 @@ bool CApplication::OnAction(const CAction &action) - step *= action.GetRepeat() * 50; // 50 fps - #endif - if (action.GetID() == ACTION_VOLUME_UP) -- volume += (float)fabs(action.GetAmount()) * action.GetAmount() * step; -+ volume += (float)(action.GetAmount() * action.GetAmount() * step); - else if (action.GetID() == ACTION_VOLUME_DOWN) -- volume -= (float)fabs(action.GetAmount()) * action.GetAmount() * step; -+ volume -= (float)(action.GetAmount() * action.GetAmount() * step); - else - volume = action.GetAmount() * step; - if (volume != m_volumeLevel) - -From a657826315ad536ac8791413508f0645eb2d8492 Mon Sep 17 00:00:00 2001 -From: Frank Razenberg -Date: Wed, 12 Aug 2015 23:44:52 +0200 -Subject: [PATCH 06/30] [keymap] undo workaround for volume adjustment issue - ---- - system/keymaps/joystick.Sony.PLAYSTATION(R)3.Controller.xml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/system/keymaps/joystick.Sony.PLAYSTATION(R)3.Controller.xml b/system/keymaps/joystick.Sony.PLAYSTATION(R)3.Controller.xml -index e4d2d07..43aee76 100644 ---- a/system/keymaps/joystick.Sony.PLAYSTATION(R)3.Controller.xml -+++ b/system/keymaps/joystick.Sony.PLAYSTATION(R)3.Controller.xml -@@ -93,8 +93,10 @@ - - AnalogSeekForward - AnalogSeekBack -- VolumeUp -- VolumeDown -+ VolumeUp -+ VolumeDown -+ VolumeDown -+ VolumeUp - ScrollUp - ScrollDown - - -From 81030f4eda4d66005807d284979cdfa8936c3ebb Mon Sep 17 00:00:00 2001 -From: Anton Fedchin -Date: Mon, 3 Aug 2015 18:47:02 +0300 -Subject: [PATCH 07/30] [win32] Move call to SetSuspendState/InitiateShutdown - out from main thread. - -Calling SetSuspend in main thread prevents to receiving WM_POWERBROADCAST message on Suspend/Hibernate. This restores receiving WM_POWERBROADCAST message. ---- - xbmc/powermanagement/windows/Win32PowerSyscall.cpp | 49 ++++++++++++++++------ - xbmc/powermanagement/windows/Win32PowerSyscall.h | 21 ++++++++++ - xbmc/win32/WIN32Util.cpp | 7 +--- - 3 files changed, 60 insertions(+), 17 deletions(-) - -diff --git a/xbmc/powermanagement/windows/Win32PowerSyscall.cpp b/xbmc/powermanagement/windows/Win32PowerSyscall.cpp -index 09787ca..cbc9842 100644 ---- a/xbmc/powermanagement/windows/Win32PowerSyscall.cpp -+++ b/xbmc/powermanagement/windows/Win32PowerSyscall.cpp -@@ -26,34 +26,59 @@ - bool CWin32PowerSyscall::m_OnResume = false; - bool CWin32PowerSyscall::m_OnSuspend = false; - -+bool CWin32PowerStateWorker::QueryStateChange(PowerState state) -+{ -+ if (!IsRunning()) -+ return false; -+ -+ if (m_state.exchange(state) != state) -+ { -+ m_queryEvent.Set(); -+ return true; -+ } -+ -+ return false; -+} -+ -+void CWin32PowerStateWorker::Process(void) -+{ -+ while (!m_bStop) -+ { -+ if (AbortableWait(m_queryEvent, -1) == WAIT_SIGNALED) -+ { -+ CWIN32Util::PowerManagement(m_state.load()); -+ m_state.exchange(POWERSTATE_NONE); -+ m_queryEvent.Reset(); -+ } -+ } -+} - - CWin32PowerSyscall::CWin32PowerSyscall() - { -+ m_worker.Create(); -+} -+ -+CWin32PowerSyscall::~CWin32PowerSyscall() -+{ -+ if (m_worker.IsRunning()) -+ m_worker.StopThread(); - } - - bool CWin32PowerSyscall::Powerdown() - { -- return CWIN32Util::PowerManagement(POWERSTATE_SHUTDOWN); -+ return m_worker.QueryStateChange(POWERSTATE_SHUTDOWN); - } - bool CWin32PowerSyscall::Suspend() - { -- // On Vista+, we don't receive the PBT_APMSUSPEND message as we have fired the suspend mode -- // Set the flag manually -- CWin32PowerSyscall::SetOnSuspend(); -- -- return CWIN32Util::PowerManagement(POWERSTATE_SUSPEND); -+ return m_worker.QueryStateChange(POWERSTATE_SUSPEND); - } - bool CWin32PowerSyscall::Hibernate() - { -- // On Vista+, we don't receive the PBT_APMSUSPEND message as we have fired the suspend mode -- // Set the flag manually -- CWin32PowerSyscall::SetOnSuspend(); -- -- return CWIN32Util::PowerManagement(POWERSTATE_HIBERNATE); -+ return m_worker.QueryStateChange(POWERSTATE_HIBERNATE); - } - bool CWin32PowerSyscall::Reboot() - { -- return CWIN32Util::PowerManagement(POWERSTATE_REBOOT); -+ return m_worker.QueryStateChange(POWERSTATE_REBOOT); - } - - bool CWin32PowerSyscall::CanPowerdown() -diff --git a/xbmc/powermanagement/windows/Win32PowerSyscall.h b/xbmc/powermanagement/windows/Win32PowerSyscall.h -index 95d4027..f2f0dd7 100644 ---- a/xbmc/powermanagement/windows/Win32PowerSyscall.h -+++ b/xbmc/powermanagement/windows/Win32PowerSyscall.h -@@ -24,11 +24,31 @@ - #ifndef _WIN32_POWER_SYSCALL_H_ - #define _WIN32_POWER_SYSCALL_H_ - #include "powermanagement/IPowerSyscall.h" -+#include "powermanagement/PowerManager.h" -+#include "threads/Event.h" -+#include "threads/Thread.h" -+#include -+ -+class CWin32PowerStateWorker : public CThread -+{ -+public: -+ CWin32PowerStateWorker() : CThread("CWin32PowerStateWorker"), m_queryEvent(true), m_state(POWERSTATE_NONE) {} -+ bool QueryStateChange(PowerState State); -+ -+protected: -+ virtual void Process(void); -+ virtual void OnStartup() { SetPriority(THREAD_PRIORITY_IDLE); }; -+ -+private: -+ std::atomic m_state; -+ CEvent m_queryEvent; -+}; - - class CWin32PowerSyscall : public CAbstractPowerSyscall - { - public: - CWin32PowerSyscall(); -+ ~CWin32PowerSyscall(); - - virtual bool Powerdown(); - virtual bool Suspend(); -@@ -48,6 +68,7 @@ class CWin32PowerSyscall : public CAbstractPowerSyscall - static bool IsSuspending() { return m_OnSuspend; } - - private: -+ CWin32PowerStateWorker m_worker; - - static bool m_OnResume; - static bool m_OnSuspend; -diff --git a/xbmc/win32/WIN32Util.cpp b/xbmc/win32/WIN32Util.cpp -index f484935..0bf3a98 100644 ---- a/xbmc/win32/WIN32Util.cpp -+++ b/xbmc/win32/WIN32Util.cpp -@@ -217,18 +217,15 @@ bool CWIN32Util::PowerManagement(PowerState State) - return false; - } - -- // process OnSleep() events. This is called in main thread. -- g_powerManager.ProcessEvents(); -- - switch (State) - { - case POWERSTATE_HIBERNATE: - CLog::Log(LOGINFO, "Asking Windows to hibernate..."); -- return SetSuspendState(true,true,false) == TRUE; -+ return SetSuspendState(true, true, false) == TRUE; - break; - case POWERSTATE_SUSPEND: - CLog::Log(LOGINFO, "Asking Windows to suspend..."); -- return SetSuspendState(false,true,false) == TRUE; -+ return SetSuspendState(false, true, false) == TRUE; - break; - case POWERSTATE_SHUTDOWN: - CLog::Log(LOGINFO, "Shutdown Windows..."); - -From 483ce5ee702a0f51607bbdf21136c6128609278d Mon Sep 17 00:00:00 2001 -From: Anton Fedchin -Date: Mon, 3 Aug 2015 18:54:11 +0300 -Subject: [PATCH 08/30] [PowerManager] Show dialog busy only when processing - OnSleep. - ---- - xbmc/powermanagement/PowerManager.cpp | 28 ++++++++-------------------- - 1 file changed, 8 insertions(+), 20 deletions(-) - -diff --git a/xbmc/powermanagement/PowerManager.cpp b/xbmc/powermanagement/PowerManager.cpp -index 6754f42..1a0b68c 100644 ---- a/xbmc/powermanagement/PowerManager.cpp -+++ b/xbmc/powermanagement/PowerManager.cpp -@@ -180,31 +180,14 @@ bool CPowerManager::Powerdown() - - bool CPowerManager::Suspend() - { -- if (CanSuspend() && m_instance->Suspend()) -- { -- CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); -- if (dialog) -- dialog->Show(); -- -- return true; -- } -- -- return false; -+ return (CanSuspend() && m_instance->Suspend()); - } - - bool CPowerManager::Hibernate() - { -- if (CanHibernate() && m_instance->Hibernate()) -- { -- CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); -- if (dialog) -- dialog->Show(); -- -- return true; -- } -- -- return false; -+ return (CanHibernate() && m_instance->Hibernate()); - } -+ - bool CPowerManager::Reboot() - { - bool success = CanReboot() ? m_instance->Reboot() : false; -@@ -254,6 +237,11 @@ void CPowerManager::ProcessEvents() - void CPowerManager::OnSleep() - { - CAnnouncementManager::Get().Announce(System, "xbmc", "OnSleep"); -+ -+ CGUIDialogBusy* dialog = (CGUIDialogBusy*)g_windowManager.GetWindow(WINDOW_DIALOG_BUSY); -+ if (dialog) -+ dialog->Show(); -+ - CLog::Log(LOGNOTICE, "%s: Running sleep jobs", __FUNCTION__); - - // stop lirc - -From 523e4db8802b3e73acca0a0dfd70fab8ee8c66b4 Mon Sep 17 00:00:00 2001 -From: Anton Fedchin -Date: Tue, 11 Aug 2015 14:45:36 +0300 -Subject: [PATCH 09/30] [ApplicationMessenger] Moved call - PVRManager::SetWakeupCommand to PowerManager::OnSleep for execute it when a - actual suspend/hibernate occurs. - ---- - xbmc/ApplicationMessenger.cpp | 2 -- - xbmc/powermanagement/PowerManager.cpp | 2 ++ - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/xbmc/ApplicationMessenger.cpp b/xbmc/ApplicationMessenger.cpp -index 90424af..e0152aa 100644 ---- a/xbmc/ApplicationMessenger.cpp -+++ b/xbmc/ApplicationMessenger.cpp -@@ -269,14 +269,12 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg) - - case TMSG_HIBERNATE: - { -- g_PVRManager.SetWakeupCommand(); - g_powerManager.Hibernate(); - } - break; - - case TMSG_SUSPEND: - { -- g_PVRManager.SetWakeupCommand(); - g_powerManager.Suspend(); - } - break; -diff --git a/xbmc/powermanagement/PowerManager.cpp b/xbmc/powermanagement/PowerManager.cpp -index 1a0b68c..53a5217 100644 ---- a/xbmc/powermanagement/PowerManager.cpp -+++ b/xbmc/powermanagement/PowerManager.cpp -@@ -35,6 +35,7 @@ - #include "guilib/GUIWindowManager.h" - #include "dialogs/GUIDialogBusy.h" - #include "dialogs/GUIDialogKaiToast.h" -+#include "pvr/PVRManager.h" - - #if defined(TARGET_DARWIN) - #include "osx/CocoaPowerSyscall.h" -@@ -250,6 +251,7 @@ void CPowerManager::OnSleep() - CBuiltins::Execute("LIRC.Stop"); - #endif - -+ PVR::CPVRManager::Get().SetWakeupCommand(); - g_application.SaveFileState(true); - g_application.StopPlaying(); - g_application.StopShutdownTimer(); - -From 95bc7e24d528045f6bab2ef1ec02f80e33d05058 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?P=C3=A4r=20Bj=C3=B6rklund?= -Date: Wed, 12 Aug 2015 17:30:33 +0200 -Subject: [PATCH 10/30] [xbmc][win32] Fixes side flyout appearing when using - touch - -When querying for gesture capable controls the result was written over the x coordinate of the event and resent causing the flyout to think there's a mouseover. -closes trac #16173 ---- - xbmc/guilib/GUIWindow.cpp | 3 ++- - xbmc/input/touch/generic/GenericTouchActionHandler.cpp | 10 +++++++++- - 2 files changed, 11 insertions(+), 2 deletions(-) - -diff --git a/xbmc/guilib/GUIWindow.cpp b/xbmc/guilib/GUIWindow.cpp -index a700ebe..562c949 100644 ---- a/xbmc/guilib/GUIWindow.cpp -+++ b/xbmc/guilib/GUIWindow.cpp -@@ -656,7 +656,8 @@ bool CGUIWindow::OnMessage(CGUIMessage& message) - { - CAction action(ACTION_GESTURE_NOTIFY, 0, (float)message.GetParam1(), (float)message.GetParam2(), 0, 0); - EVENT_RESULT result = OnMouseAction(action); -- message.SetParam1(result); -+ auto res = new int(result); -+ message.SetPointer(static_cast(res)); - return result != EVENT_RESULT_UNHANDLED; - } - case GUI_MSG_ADD_CONTROL: -diff --git a/xbmc/input/touch/generic/GenericTouchActionHandler.cpp b/xbmc/input/touch/generic/GenericTouchActionHandler.cpp -index fc8599c..ebd538d 100644 ---- a/xbmc/input/touch/generic/GenericTouchActionHandler.cpp -+++ b/xbmc/input/touch/generic/GenericTouchActionHandler.cpp -@@ -148,7 +148,15 @@ int CGenericTouchActionHandler::QuerySupportedGestures(float x, float y) - if (!g_windowManager.SendMessage(msg)) - return 0; - -- return msg.GetParam1(); -+ int result = 0; -+ if (msg.GetPointer()) -+ { -+ int *p = static_cast(msg.GetPointer()); -+ msg.SetPointer(nullptr); -+ result = *p; -+ delete p; -+ } -+ return result; - } - - void CGenericTouchActionHandler::touch(uint8_t type, uint8_t button, uint16_t x, uint16_t y) - -From 47219512d32f37df3d5338f63049e0726a6c2fa5 Mon Sep 17 00:00:00 2001 -From: Thomas Amland -Date: Tue, 18 Aug 2015 13:15:49 +0200 -Subject: [PATCH 12/30] [lang] fix fallback after 'no' was changed to 'nb_NO' - ---- - xbmc/addons/AddonManager.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/xbmc/addons/AddonManager.cpp b/xbmc/addons/AddonManager.cpp -index 81b80b6..1c07fe0 100644 ---- a/xbmc/addons/AddonManager.cpp -+++ b/xbmc/addons/AddonManager.cpp -@@ -789,6 +789,8 @@ std::string CAddonMgr::GetTranslatedString(const cp_cfg_element_t *root, const c - translatedValues.insert(std::make_pair(lang, child.value != NULL ? child.value : "")); - else if (lang == NULL || strcmp(lang, "en") == 0 || strcmp(lang, "en_GB") == 0) - translatedValues.insert(std::make_pair("en_GB", child.value != NULL ? child.value : "")); -+ else if (strcmp(lang, "no") == 0) -+ translatedValues.insert(std::make_pair("nb_NO", child.value != NULL ? child.value : "")); - } - } - - -From c6b7a2a070e1d7d0bd61ad1110a68c9a6b27b16f Mon Sep 17 00:00:00 2001 -From: Thomas Amland -Date: Tue, 18 Aug 2015 16:11:23 +0200 -Subject: [PATCH 13/30] [addons] fix foreign filter after 'no' was changed to - 'nb_NO' - ---- - xbmc/addons/GUIWindowAddonBrowser.cpp | 33 ++++++++++++++++++--------------- - 1 file changed, 18 insertions(+), 15 deletions(-) - -diff --git a/xbmc/addons/GUIWindowAddonBrowser.cpp b/xbmc/addons/GUIWindowAddonBrowser.cpp -index 3623014..ff53f09 100644 ---- a/xbmc/addons/GUIWindowAddonBrowser.cpp -+++ b/xbmc/addons/GUIWindowAddonBrowser.cpp -@@ -302,17 +302,23 @@ void CGUIWindowAddonBrowser::UpdateButtons() - CGUIMediaWindow::UpdateButtons(); - } - --static bool FilterVar(bool valid, const CVariant& variant, -- const std::string& check) -+static bool IsForeign(const std::string& languages) - { -- if (!valid) -+ if (languages.empty()) - return false; - -- if (variant.isNull() || variant.asString().empty()) -- return false; -- -- std::string regions = variant.asString(); -- return regions.find(check) == std::string::npos; -+ for (const auto& lang : StringUtils::Split(languages, " ")) -+ { -+ if (lang == "en" || -+ lang == g_langInfo.GetLocale().GetLanguageCode() || -+ lang == g_langInfo.GetLocale().ToShortString()) -+ return false; -+ -+ // for backwards compatibility -+ if (lang == "no" && g_langInfo.GetLocale().ToShortString() == "nb_NO") -+ return false; -+ } -+ return true; - } - - bool CGUIWindowAddonBrowser::GetDirectory(const std::string& strDirectory, -@@ -350,14 +356,11 @@ bool CGUIWindowAddonBrowser::GetDirectory(const std::string& strDirectory, - int i=0; - while (i < items.Size()) - { -- if (!FilterVar(true, items[i]->GetProperty("Addon.Language"), "en") || -- !FilterVar(true, items[i]->GetProperty("Addon.Language"), g_langInfo.GetLocale().GetLanguageCode()) || -- !FilterVar(true, items[i]->GetProperty("Addon.Language"), g_langInfo.GetLocale().ToShortString())) -- { -- i++; -- } -- else -+ auto prop = items[i]->GetProperty("Addon.Language"); -+ if (!prop.isNull() && IsForeign(prop.asString())) - items.Remove(i); -+ else -+ ++i; - } - } - if (CSettings::Get().GetBool("general.addonbrokenfilter")) - -From 67b604e14458802d86ee2dd57f3d5a9c6ae27d43 Mon Sep 17 00:00:00 2001 -From: Matthias Kortstiege -Date: Tue, 18 Aug 2015 20:26:07 +0200 -Subject: [PATCH 14/30] [recentlyadded] fix empty LatestAlbum.Artist (closes - #16200) - ---- - xbmc/utils/RecentlyAddedJob.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/xbmc/utils/RecentlyAddedJob.cpp b/xbmc/utils/RecentlyAddedJob.cpp -index a2f130e..094133d 100644 ---- a/xbmc/utils/RecentlyAddedJob.cpp -+++ b/xbmc/utils/RecentlyAddedJob.cpp -@@ -272,7 +272,7 @@ bool CRecentlyAddedJob::UpdateMusic() - - home->SetProperty("LatestAlbum." + value + ".Title" , album.strAlbum); - home->SetProperty("LatestAlbum." + value + ".Year" , album.iYear); -- home->SetProperty("LatestAlbum." + value + ".Artist" , album.artist); -+ home->SetProperty("LatestAlbum." + value + ".Artist" , StringUtils::Join(album.artist, g_advancedSettings.m_videoItemSeparator)); - home->SetProperty("LatestAlbum." + value + ".Rating" , album.iRating); - home->SetProperty("LatestAlbum." + value + ".Path" , strDBpath); - home->SetProperty("LatestAlbum." + value + ".Thumb" , strThumb); - -From b186cd8e7c0a47f45d1342250d70c9ee8e226b66 Mon Sep 17 00:00:00 2001 -From: Matthias Kortstiege -Date: Tue, 18 Aug 2015 19:29:00 +0200 -Subject: [PATCH 15/30] [guilib] fix double memory free in panel container - ---- - xbmc/guilib/GUIPanelContainer.cpp | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/xbmc/guilib/GUIPanelContainer.cpp b/xbmc/guilib/GUIPanelContainer.cpp -index 6bb3f79..21fd4aa 100644 ---- a/xbmc/guilib/GUIPanelContainer.cpp -+++ b/xbmc/guilib/GUIPanelContainer.cpp -@@ -54,8 +54,9 @@ void CGUIPanelContainer::Process(unsigned int currentTime, CDirtyRegionList &dir - int cacheBefore, cacheAfter; - GetCacheOffsets(cacheBefore, cacheAfter); - -- // Free memory not used on screen at the moment, do this first so there's more memory for the new items. -- FreeMemory(CorrectOffset(offset - cacheBefore, 0), CorrectOffset(offset + cacheAfter + m_itemsPerPage + 1, 0)); -+ // Free memory not used on screen -+ if ((int)m_items.size() > m_itemsPerPage + cacheBefore + cacheAfter) -+ FreeMemory(CorrectOffset(offset - cacheBefore, 0), CorrectOffset(offset + m_itemsPerPage + 1 + cacheAfter, 0)); - - CPoint origin = CPoint(m_posX, m_posY) + m_renderOffset; - float pos = (m_orientation == VERTICAL) ? origin.y : origin.x; -@@ -107,9 +108,6 @@ void CGUIPanelContainer::Render() - int cacheBefore, cacheAfter; - GetCacheOffsets(cacheBefore, cacheAfter); - -- // Free memory not used on screen at the moment, do this first so there's more memory for the new items. -- FreeMemory(CorrectOffset(offset - cacheBefore, 0), CorrectOffset(offset + cacheAfter + m_itemsPerPage + 1, 0)); -- - if (g_graphicsContext.SetClipRegion(m_posX, m_posY, m_width, m_height)) - { - CPoint origin = CPoint(m_posX, m_posY) + m_renderOffset; - -From c34028e6af638f614623874d5fceb111f94a77fa Mon Sep 17 00:00:00 2001 -From: "Chris \"Koying\" Browet" -Date: Fri, 21 Aug 2015 18:09:46 +0200 -Subject: [PATCH 16/30] Revert "[aml] - fix draining message queue" - -This breaks ff/rw/seek ---- - xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp -index 450b4a9..0503bec 100644 ---- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp -+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp -@@ -1867,7 +1867,9 @@ int CAMLCodec::Decode(uint8_t *pData, size_t iSize, double dts, double pts) - if (m_old_pictcnt == m_cur_pictcnt) - m_ready_event.WaitMSec(25); - -- int rtn = 0; -+ // we must return VC_BUFFER or VC_PICTURE, -+ // default to VC_BUFFER. -+ int rtn = VC_BUFFER; - if (m_old_pictcnt != m_cur_pictcnt) - { - m_old_pictcnt++; - -From ccb57019a87eb2a914db277c8764c66529d00e15 Mon Sep 17 00:00:00 2001 -From: janbar -Date: Sat, 22 Aug 2015 15:01:30 +0200 -Subject: [PATCH 18/30] [pvr.mythtv] bump addon to version 2.6.1 - -- Support protocol 0.28-pre:87 -- Limit channel tune attempts ---- - project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt -index 6c2d24f..b5e4d63 100644 ---- a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt -+++ b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt -@@ -1 +1 @@ --pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv 877774a -+pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv bf85a48 - -From c1c10734eee1d824d7297d7e388be6068f3aea5e Mon Sep 17 00:00:00 2001 -From: montellese -Date: Mon, 17 Aug 2015 23:15:35 +0200 -Subject: [PATCH 19/30] CLangInfo: properly set the time format when - setting/changing regions - ---- - xbmc/LangInfo.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/xbmc/LangInfo.cpp b/xbmc/LangInfo.cpp -index 844c6ae..2132460 100644 ---- a/xbmc/LangInfo.cpp -+++ b/xbmc/LangInfo.cpp -@@ -952,7 +952,12 @@ void CLangInfo::SetCurrentRegion(const std::string& strName) - if (CSettings::Get().GetString("locale.longdateformat") == SETTING_REGIONAL_DEFAULT) - SetLongDateFormat(m_currentRegion->m_strDateFormatLong); - if (CSettings::Get().GetString("locale.use24hourclock") == SETTING_REGIONAL_DEFAULT) -+ { - Set24HourClock(m_currentRegion->m_strTimeFormat); -+ -+ // update the time format -+ SetTimeFormat(CSettings::GetInstance().GetString("locale.timeformat")); -+ } - if (CSettings::Get().GetString("locale.timeformat") == SETTING_REGIONAL_DEFAULT) - SetTimeFormat(m_currentRegion->m_strTimeFormat); - if (CSettings::Get().GetString("locale.temperatureunit") == SETTING_REGIONAL_DEFAULT) - -From e0dd7b5e61ec2e5f45f607462693532322e56148 Mon Sep 17 00:00:00 2001 -From: Rainer Hochecker -Date: Sun, 23 Aug 2015 21:21:23 +0200 -Subject: [PATCH 20/30] dvdplayer: set default screen region for dvb subs - ---- - .../dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp -index e7bed43..06f81c8 100644 ---- a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp -+++ b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp -@@ -243,6 +243,16 @@ CDVDOverlay* CDVDOverlayCodecFFmpeg::GetOverlay() - m_height = m_pCodecContext->height; - m_width = m_pCodecContext->width; - -+ // ETSI EN 300 743 V1.3.1 -+ // 5.3.1 -+ // Absence of a DDS in a stream implies that the stream is coded in accordance with EN 300 743 (V1.2.1) [5] and that a -+ // display width of 720 pixels and a display height of 576 lines may be assumed. -+ if (!m_height && !m_width) -+ { -+ m_width = 720; -+ m_height = 576; -+ } -+ - RENDER_STEREO_MODE render_stereo_mode = g_graphicsContext.GetStereoMode(); - if (render_stereo_mode != RENDER_STEREO_MODE_OFF) - { - -From f93bcc6e1a53cfb75f949b6630372fc561ba161d Mon Sep 17 00:00:00 2001 -From: anaconda -Date: Tue, 25 Aug 2015 23:42:28 +0200 -Subject: [PATCH 21/30] Fix build after PR 7886. - ---- - xbmc/LangInfo.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/xbmc/LangInfo.cpp b/xbmc/LangInfo.cpp -index 2132460..c0c7034 100644 ---- a/xbmc/LangInfo.cpp -+++ b/xbmc/LangInfo.cpp -@@ -956,7 +956,7 @@ void CLangInfo::SetCurrentRegion(const std::string& strName) - Set24HourClock(m_currentRegion->m_strTimeFormat); - - // update the time format -- SetTimeFormat(CSettings::GetInstance().GetString("locale.timeformat")); -+ SetTimeFormat(CSettings::Get().GetString("locale.timeformat")); - } - if (CSettings::Get().GetString("locale.timeformat") == SETTING_REGIONAL_DEFAULT) - SetTimeFormat(m_currentRegion->m_strTimeFormat); - -From 6fcd406132f2a95c5209beb29693365d047a55a3 Mon Sep 17 00:00:00 2001 -From: Matthias Kortstiege -Date: Mon, 24 Aug 2015 23:20:25 +0200 -Subject: [PATCH 22/30] [music] fix missing lyrics from tag when playing from - musicdb url (fixes #16216) - ---- - xbmc/GUIInfoManager.cpp | 2 -- - xbmc/music/MusicInfoLoader.cpp | 9 +++++---- - 2 files changed, 5 insertions(+), 6 deletions(-) - -diff --git a/xbmc/GUIInfoManager.cpp b/xbmc/GUIInfoManager.cpp -index 355e9a5..35f0d1d 100644 ---- a/xbmc/GUIInfoManager.cpp -+++ b/xbmc/GUIInfoManager.cpp -@@ -3711,8 +3711,6 @@ std::string CGUIInfoManager::GetMusicLabel(int item) - return StringUtils::Format("%s", m_audioInfo.audioCodecName.c_str()); - } - break; -- case MUSICPLAYER_LYRICS: -- return GetItemLabel(m_currentFile, AddListItemProp("lyrics")); - } - return GetMusicTagLabel(item, m_currentFile); - } -diff --git a/xbmc/music/MusicInfoLoader.cpp b/xbmc/music/MusicInfoLoader.cpp -index 8de9c4c..a3fef98 100644 ---- a/xbmc/music/MusicInfoLoader.cpp -+++ b/xbmc/music/MusicInfoLoader.cpp -@@ -107,14 +107,15 @@ bool CMusicInfoLoader::LoadAdditionalTagInfo(CFileItem* pItem) - - CLog::Log(LOGDEBUG, "Loading additional tag info for file %s", path.c_str()); - -- // we load up the actual tag for this file -- unique_ptr pLoader (CMusicInfoTagLoaderFactory::CreateLoader(*pItem)); -+ // we load up the actual tag for this file in order to -+ // fetch the lyrics and add it to the current music info tag -+ CFileItem tempItem(path, false); -+ unique_ptr pLoader (CMusicInfoTagLoaderFactory::CreateLoader(tempItem)); - if (NULL != pLoader.get()) - { - CMusicInfoTag tag; - pLoader->Load(path, tag); -- // then we set the fields from the file tags to the item -- pItem->SetProperty("lyrics", tag.GetLyrics()); -+ pItem->GetMusicInfoTag()->SetLyrics(tag.GetLyrics()); - pItem->SetProperty("hasfullmusictag", "true"); - return true; - } - -From 3764856852be67a3b285d5f4350910678289fe4e Mon Sep 17 00:00:00 2001 -From: "Chris \"koying\" Browet" -Date: Wed, 26 Aug 2015 14:47:26 +0200 -Subject: [PATCH 23/30] FIX: [amlegl] do not require RW on /sys/.../mode - ---- - xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp | 11 +++++++++-- - xbmc/windowing/egl/EGLNativeTypeAmlAndroid.h | 1 + - 2 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp b/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp -index 5ea1d7c..08c2704 100644 ---- a/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp -+++ b/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp -@@ -28,14 +28,18 @@ - #include "utils/SysfsUtils.h" - #include "utils/AMLUtils.h" - -+bool CEGLNativeTypeAmlAndroid::m_isWritable = false; -+ - bool CEGLNativeTypeAmlAndroid::CheckCompatibility() - { - if (aml_present()) - { -+ m_isWritable = false; - if (SysfsUtils::HasRW("/sys/class/display/mode")) -- return true; -+ m_isWritable = true; - else -- CLog::Log(LOGERROR, "AMLEGL: no rw on /sys/class/display/mode"); -+ CLog::Log(LOGINFO, "AMLEGL: no rw on /sys/class/display/mode"); -+ return true; - } - return false; - } -@@ -62,6 +66,9 @@ bool CEGLNativeTypeAmlAndroid::GetNativeResolution(RESOLUTION_INFO *res) const - - bool CEGLNativeTypeAmlAndroid::SetNativeResolution(const RESOLUTION_INFO &res) - { -+ if (!m_isWritable) -+ return false; -+ - switch((int)(res.fRefreshRate*10)) - { - default: -diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.h b/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.h -index 27a935b..6887537 100644 ---- a/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.h -+++ b/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.h -@@ -36,6 +36,7 @@ class CEGLNativeTypeAmlAndroid : public CEGLNativeTypeAndroid - protected: - mutable std::string m_curHdmiResolution; - mutable RESOLUTION_INFO m_fb_res; -+ static bool m_isWritable; - - bool SetDisplayResolution(const char *resolution); - }; - -From 26db5af8a5c788ce8fa3e036a11a194b6a445bd4 Mon Sep 17 00:00:00 2001 -From: Chris Browet -Date: Tue, 11 Aug 2015 18:12:28 +0200 -Subject: [PATCH 24/30] FIX: [amlegl] additional display modes - ---- - xbmc/utils/AMLUtils.cpp | 45 ++++++++++++++++++++++++++ - xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp | 32 ++++++++++++++++++ - 2 files changed, 77 insertions(+) - -diff --git a/xbmc/utils/AMLUtils.cpp b/xbmc/utils/AMLUtils.cpp -index bcb57fcd..ac2667c 100644 ---- a/xbmc/utils/AMLUtils.cpp -+++ b/xbmc/utils/AMLUtils.cpp -@@ -356,6 +356,15 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res) - res->fRefreshRate = 60; - res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; - } -+ else if (StringUtils::EqualsNoCase(fromMode, "1080p23hz")) -+ { -+ res->iWidth = 1920; -+ res->iHeight= 1080; -+ res->iScreenWidth = 1920; -+ res->iScreenHeight= 1080; -+ res->fRefreshRate = 23.976; -+ res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; -+ } - else if (StringUtils::EqualsNoCase(fromMode, "1080p24hz")) - { - res->iWidth = 1920; -@@ -383,6 +392,15 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res) - res->fRefreshRate = 50; - res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; - } -+ else if (StringUtils::EqualsNoCase(fromMode, "1080p59hz")) -+ { -+ res->iWidth = 1920; -+ res->iHeight= 1080; -+ res->iScreenWidth = 1920; -+ res->iScreenHeight= 1080; -+ res->fRefreshRate = 59.940; -+ res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; -+ } - else if (StringUtils::EqualsNoCase(fromMode, "1080i")) - { - res->iWidth = 1920; -@@ -401,6 +419,15 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res) - res->fRefreshRate = 50; - res->dwFlags = D3DPRESENTFLAG_INTERLACED; - } -+ else if (StringUtils::EqualsNoCase(fromMode, "1080i59hz")) -+ { -+ res->iWidth = 1920; -+ res->iHeight= 1080; -+ res->iScreenWidth = 1920; -+ res->iScreenHeight= 1080; -+ res->fRefreshRate = 59.940; -+ res->dwFlags = D3DPRESENTFLAG_INTERLACED; -+ } - else if (StringUtils::EqualsNoCase(fromMode, "4k2ksmpte")) - { - res->iWidth = 1920; -@@ -410,6 +437,15 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res) - res->fRefreshRate = 24; - res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; - } -+ else if (StringUtils::EqualsNoCase(fromMode, "4k2k23hz")) -+ { -+ res->iWidth = 1920; -+ res->iHeight= 1080; -+ res->iScreenWidth = 3840; -+ res->iScreenHeight= 2160; -+ res->fRefreshRate = 23.976; -+ res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; -+ } - else if (StringUtils::EqualsNoCase(fromMode, "4k2k24hz")) - { - res->iWidth = 1920; -@@ -428,6 +464,15 @@ bool aml_mode_to_resolution(const char *mode, RESOLUTION_INFO *res) - res->fRefreshRate = 25; - res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; - } -+ else if (StringUtils::EqualsNoCase(fromMode, "4k2k29hz")) -+ { -+ res->iWidth = 1920; -+ res->iHeight= 1080; -+ res->iScreenWidth = 3840; -+ res->iScreenHeight= 2160; -+ res->fRefreshRate = 29.970; -+ res->dwFlags = D3DPRESENTFLAG_PROGRESSIVE; -+ } - else if (StringUtils::EqualsNoCase(fromMode, "4k2k30hz")) - { - res->iWidth = 1920; -diff --git a/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp b/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp -index 08c2704..111442c 100644 ---- a/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp -+++ b/xbmc/windowing/egl/EGLNativeTypeAmlAndroid.cpp -@@ -87,6 +87,16 @@ bool CEGLNativeTypeAmlAndroid::SetNativeResolution(const RESOLUTION_INFO &res) - break; - } - break; -+ case 599: -+ switch(res.iScreenWidth) -+ { -+ default: -+ if (res.dwFlags & D3DPRESENTFLAG_INTERLACED) -+ return SetDisplayResolution("1080i59hz"); -+ else -+ return SetDisplayResolution("1080p59hz"); -+ break; -+ } - case 500: - switch(res.iScreenWidth) - { -@@ -113,6 +123,17 @@ bool CEGLNativeTypeAmlAndroid::SetNativeResolution(const RESOLUTION_INFO &res) - break; - } - break; -+ case 299: -+ switch(res.iScreenWidth) -+ { -+ case 3840: -+ return SetDisplayResolution("4k2k29hz"); -+ break; -+ default: -+ return SetDisplayResolution("1080p29hz"); -+ break; -+ } -+ break; - case 250: - switch(res.iScreenWidth) - { -@@ -138,6 +159,17 @@ bool CEGLNativeTypeAmlAndroid::SetNativeResolution(const RESOLUTION_INFO &res) - break; - } - break; -+ case 239: -+ switch(res.iScreenWidth) -+ { -+ case 3840: -+ return SetDisplayResolution("4k2k23hz"); -+ break; -+ default: -+ return SetDisplayResolution("1080p23hz"); -+ break; -+ } -+ break; - } - - return false; - -From 98e077f5cb7c3cf319f674b0ded85b8e2e32d334 Mon Sep 17 00:00:00 2001 -From: "h.udo" -Date: Thu, 27 Aug 2015 22:42:19 +0100 -Subject: [PATCH 25/30] [pvr] Fix json depend MIA - ---- - project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt | 2 +- - project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt | 2 +- - project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt | 2 +- - project/cmake/addons/addons/pvr.stalker/pvr.stalker.txt | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt b/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt -index 31457f5..7ec9c06 100644 ---- a/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt -+++ b/project/cmake/addons/addons/pvr.argustv/pvr.argustv.txt -@@ -1 +1 @@ --pvr.argustv https://github.com/kodi-pvr/pvr.argustv 96c8026 -+pvr.argustv https://github.com/kodi-pvr/pvr.argustv 32f0327 -diff --git a/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt b/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt -index f9bfe22..c7bf82c 100644 ---- a/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt -+++ b/project/cmake/addons/addons/pvr.filmon/pvr.filmon.txt -@@ -1 +1 @@ --pvr.filmon https://github.com/kodi-pvr/pvr.filmon 5c41f4e -+pvr.filmon https://github.com/kodi-pvr/pvr.filmon 67abb56 -diff --git a/project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt b/project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt -index ddcdb9c..78326ce 100644 ---- a/project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt -+++ b/project/cmake/addons/addons/pvr.pctv/pvr.pctv.txt -@@ -1 +1 @@ --pvr.pctv https://github.com/kodi-pvr/pvr.pctv d23160c -+pvr.pctv https://github.com/kodi-pvr/pvr.pctv bca8165 -diff --git a/project/cmake/addons/addons/pvr.stalker/pvr.stalker.txt b/project/cmake/addons/addons/pvr.stalker/pvr.stalker.txt -index dfd0ac0..8182ad1 100644 ---- a/project/cmake/addons/addons/pvr.stalker/pvr.stalker.txt -+++ b/project/cmake/addons/addons/pvr.stalker/pvr.stalker.txt -@@ -1 +1 @@ --pvr.stalker https://github.com/kodi-pvr/pvr.stalker 5f6eb19 -+pvr.stalker https://github.com/kodi-pvr/pvr.stalker e556508 - -From 355e7bc69c3f787ce46c1080b4be55e79306a7b2 Mon Sep 17 00:00:00 2001 -From: Memphiz -Date: Fri, 28 Aug 2015 09:45:02 +0200 -Subject: [PATCH 26/30] [osx/darwinutils] - add method IsLion to check for - 10.7.x runtime - ---- - xbmc/osx/DarwinUtils.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/xbmc/osx/DarwinUtils.h b/xbmc/osx/DarwinUtils.h -index 7763548..0a0423e 100644 ---- a/xbmc/osx/DarwinUtils.h -+++ b/xbmc/osx/DarwinUtils.h -@@ -33,6 +33,7 @@ class CDarwinUtils - static const char *getIosPlatformString(void); - static bool IsAppleTV2(void); - static bool IsMavericks(void); -+ static bool IsLion(void); - static bool IsSnowLeopard(void); - static bool DeviceHasRetina(double &scale); - static const char *GetOSReleaseString(void); - -From 1d26a1ff992b2eb76ebbea071cfae5e1ed109c35 Mon Sep 17 00:00:00 2001 -From: Memphiz -Date: Fri, 28 Aug 2015 09:46:46 +0200 -Subject: [PATCH 27/30] [osx/darwinutils] - add implementation for IsLion to - determine 10.7.x runtime - ---- - xbmc/osx/DarwinUtils.mm | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/xbmc/osx/DarwinUtils.mm b/xbmc/osx/DarwinUtils.mm -index 75ece9f..b1b282f 100644 ---- a/xbmc/osx/DarwinUtils.mm -+++ b/xbmc/osx/DarwinUtils.mm -@@ -212,6 +212,20 @@ enum iosPlatform getIosPlatform() - return isMavericks == 1; - } - -+bool CDarwinUtils::IsLion(void) -+{ -+ static int isLion = -1; -+#if defined(TARGET_DARWIN_OSX) -+ if (isLion == -1) -+ { -+ double appKitVersion = floor(NSAppKitVersionNumber); -+ // everything lower 10.8 is 10.7.x because 10.7 is deployment target... -+ isLion = (appKitVersion < NSAppKitVersionNumber10_8) ? 1 : 0; -+ } -+#endif -+ return isLion == 1; -+} -+ - bool CDarwinUtils::IsSnowLeopard(void) - { - static int isSnowLeopard = -1; - -From 896511cb1bd03a0927903f5f65f8c572129e8154 Mon Sep 17 00:00:00 2001 -From: Memphiz -Date: Fri, 28 Aug 2015 09:49:21 +0200 -Subject: [PATCH 28/30] [osx] - on 10.7.x runtime never call - Cocoa_GetVolumeNameFromMountPoint as it crashes - ---- - xbmc/storage/osx/DarwinStorageProvider.cpp | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/xbmc/storage/osx/DarwinStorageProvider.cpp b/xbmc/storage/osx/DarwinStorageProvider.cpp -index 6be9ab1..19c99b7 100644 ---- a/xbmc/storage/osx/DarwinStorageProvider.cpp -+++ b/xbmc/storage/osx/DarwinStorageProvider.cpp -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include "osx/DarwinUtils.h" - #endif - #include "osx/CocoaInterface.h" - -@@ -62,6 +63,9 @@ void CDarwinStorageProvider::GetLocalDrives(VECSOURCES &localDrives) - share.strName = "Volumes"; - share.m_ignore = true; - localDrives.push_back(share); -+ -+ if (CDarwinUtils::IsLion()) -+ return; //temp workaround for crash in Cocoa_GetVolumeNameFromMountPoint on 10.7.x - - // This will pick up all local non-removable disks including the Root Disk. - DASessionRef session = DASessionCreate(kCFAllocatorDefault); -@@ -106,6 +110,10 @@ void CDarwinStorageProvider::GetLocalDrives(VECSOURCES &localDrives) - void CDarwinStorageProvider::GetRemovableDrives(VECSOURCES &removableDrives) - { - #if defined(TARGET_DARWIN_OSX) -+ -+ if (CDarwinUtils::IsLion()) -+ return; //temp workaround for crash in Cocoa_GetVolumeNameFromMountPoint on 10.7.x -+ - DASessionRef session = DASessionCreate(kCFAllocatorDefault); - if (session) - { - -From f462c0e42fcb019951867af15dd7173281ce5454 Mon Sep 17 00:00:00 2001 -From: janbar -Date: Mon, 31 Aug 2015 20:48:14 +0200 -Subject: [PATCH 29/30] [pvr.mythtv] bump addon to version 2.6.2 - -- Security fix for JSON parser -- Add EPG Entry associated with recent Recording ---- - project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt -index b5e4d63..97d4ecb 100644 ---- a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt -+++ b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt -@@ -1 +1 @@ --pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv bf85a48 -+pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv eb8d29e - -From 79fab8184b60ea0be6923804f973289f1f0f4318 Mon Sep 17 00:00:00 2001 -From: Craig Andrews -Date: Thu, 30 Jul 2015 23:06:41 -0400 -Subject: [PATCH 30/30] [rsxs] Use stdbool.h from GCC 5.2.0 - ---- - xbmc/screensavers/rsxs-0.9/lib/stdbool_.h | 137 +++++++++--------------------- - 1 file changed, 38 insertions(+), 99 deletions(-) - -diff --git a/xbmc/screensavers/rsxs-0.9/lib/stdbool_.h b/xbmc/screensavers/rsxs-0.9/lib/stdbool_.h -index efa80ba..a951510 100644 ---- a/xbmc/screensavers/rsxs-0.9/lib/stdbool_.h -+++ b/xbmc/screensavers/rsxs-0.9/lib/stdbool_.h -@@ -1,115 +1,54 @@ --/* Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. -- Written by Bruno Haible , 2001. -+/* Copyright (C) 1998-2015 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -- any later version. -+This file is part of GCC. - -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -+GCC is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 3, or (at your option) -+any later version. - -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software Foundation, -- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -+GCC is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. - --#ifndef _STDBOOL_H --#define _STDBOOL_H -- --/* ISO C 99 for platforms that lack it. */ -- --/* Usage suggestions: -- -- Programs that use should be aware of some limitations -- and standards compliance issues. -- -- Standards compliance: -+Under Section 7 of GPL version 3, you are granted additional -+permissions described in the GCC Runtime Library Exception, version -+3.1, as published by the Free Software Foundation. - -- - must be #included before 'bool', 'false', 'true' -- can be used. -+You should have received a copy of the GNU General Public License and -+a copy of the GCC Runtime Library Exception along with this program; -+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -+. */ - -- - You cannot assume that sizeof (bool) == 1. -+/* -+ * ISO C Standard: 7.16 Boolean type and values -+ */ - -- - Programs should not undefine the macros bool, true, and false, -- as C99 lists that as an "obsolescent feature". -- -- Limitations of this substitute, when used in a C89 environment: -- -- - must be #included before the '_Bool' type can be used. -- -- - You cannot assume that _Bool is a typedef; it might be a macro. -+#ifndef _STDBOOL_H -+#define _STDBOOL_H - -- - In C99, casts and automatic conversions to '_Bool' or 'bool' are -- performed in such a way that every nonzero value gets converted -- to 'true', and zero gets converted to 'false'. This doesn't work -- with this substitute. With this substitute, only the values 0 and 1 -- give the expected result when converted to _Bool' or 'bool'. -+#ifndef __cplusplus - -- Also, it is suggested that programs use 'bool' rather than '_Bool'; -- this isn't required, but 'bool' is more common. */ -+#define bool _Bool -+#define true 1 -+#define false 0 - -+#else /* __cplusplus */ - --/* 7.16. Boolean type and values */ -+/* Supporting _Bool in C++ is a GCC extension. */ -+#define _Bool bool - --/* BeOS already #defines false 0, true 1. We use the same -- definitions below, but temporarily we have to #undef them. */ --#ifdef __BEOS__ --# include /* defines bool but not _Bool */ --# undef false --# undef true -+#if __cplusplus < 201103L -+/* Defining these macros in C++98 is a GCC extension. */ -+#define bool bool -+#define false false -+#define true true - #endif - --/* For the sake of symbolic names in gdb, we define true and false as -- enum constants, not only as macros. -- It is tempting to write -- typedef enum { false = 0, true = 1 } _Bool; -- so that gdb prints values of type 'bool' symbolically. But if we do -- this, values of type '_Bool' may promote to 'int' or 'unsigned int' -- (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' -- (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the -- enum; this ensures that '_Bool' promotes to 'int'. */ --#if defined __cplusplus || defined __BEOS__ -- /* A compiler known to have 'bool'. */ -- /* If the compiler already has both 'bool' and '_Bool', we can assume they -- are the same types. */ --# if !@HAVE__BOOL@ --typedef bool _Bool; --# endif --#else --# if !defined __GNUC__ -- /* If @HAVE__BOOL@: -- Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when -- the built-in _Bool type is used. See -- http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html -- http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html -- http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html -- Similar bugs are likely with other compilers as well; this file -- wouldn't be used if was working. -- So we override the _Bool type. -- If !@HAVE__BOOL@: -- Need to define _Bool ourselves. As 'signed char' or as an enum type? -- Use of a typedef, with SunPRO C, leads to a stupid -- "warning: _Bool is a keyword in ISO C99". -- Use of an enum type, with IRIX cc, leads to a stupid -- "warning(1185): enumerated type mixed with another type". -- The only benefit of the enum type, debuggability, is not important -- with these compilers. So use 'signed char' and no typedef. */ --# define _Bool signed char --enum { false = 0, true = 1 }; --# else -- /* With this compiler, trust the _Bool type if the compiler has it. */ --# if !@HAVE__BOOL@ --typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; --# endif --# endif --#endif --#define bool _Bool -+#endif /* __cplusplus */ - --/* The other macros must be usable in preprocessor directives. */ --#define false 0 --#define true 1 --#define __bool_true_false_are_defined 1 -+/* Signal that all the definitions are present. */ -+#define __bool_true_false_are_defined 1 - --#endif /* _STDBOOL_H */ -+#endif /* stdbool.h */