Merge pull request #641 from MilhouseVH/kodi17b1

kodi: update to 17.0-beta1-81d5d26
This commit is contained in:
Christian Hewitt 2016-08-29 20:53:47 +04:00 committed by GitHub
commit 9a5bb062d4
40 changed files with 1378 additions and 5211 deletions

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="adsp.biquad.filters"
PKG_VERSION="01236bb"
PKG_VERSION="e08990f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="inputstream.mpd"
PKG_VERSION="b657bf3"
PKG_VERSION="7898a67"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/liberty-developer/inputstream.mpd/archive/$PKG_VERSION.tar.gz"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="inputstream.rtmp"
PKG_VERSION="7bf2298"
PKG_VERSION="9c05b8d"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/notspiff/inputstream.rtmp/archive/$PKG_VERSION.tar.gz"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="inputstream.smoothstream"
PKG_VERSION="99e7771"
PKG_VERSION="b63ecbb"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/mapfau/inputstream.smoothstream/archive/$PKG_VERSION.tar.gz"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="peripheral.joystick"
PKG_VERSION="6090a90"
PKG_VERSION="8653627"
PKG_REV="0"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.argustv"
PKG_VERSION="e536f32"
PKG_VERSION="299088b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.dvblink"
PKG_VERSION="20e1ccb"
PKG_VERSION="ea3d98c"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.dvbviewer"
PKG_VERSION="7a7ead3"
PKG_VERSION="f72c62f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.filmon"
PKG_VERSION="efd379b"
PKG_VERSION="675c2b4"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.hdhomerun"
PKG_VERSION="a71e816"
PKG_VERSION="eef1bd1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.hts"
PKG_VERSION="66dcb89"
PKG_VERSION="48b2e26"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.iptvsimple"
PKG_VERSION="21e91a5"
PKG_VERSION="a4c5255"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.mediaportal.tvserver"
PKG_VERSION="72452b9"
PKG_VERSION="1042a71"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.mythtv"
PKG_VERSION="d10d210"
PKG_VERSION="b1b426f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.nextpvr"
PKG_VERSION="32b3c2f"
PKG_VERSION="4dabcf4"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.pctv"
PKG_VERSION="12d8baf"
PKG_VERSION="d6d969f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.stalker"
PKG_VERSION="b6cb9b8"
PKG_VERSION="9c9c72e"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.vbox"
PKG_VERSION="f38f82f"
PKG_VERSION="2750c92"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.vdr.vnsi"
PKG_VERSION="8515b4b"
PKG_VERSION="40c45dc"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.vuplus"
PKG_VERSION="4f2ad62"
PKG_VERSION="7ab30d3"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.wmc"
PKG_VERSION="979c37d"
PKG_VERSION="d9eac84"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="screensaver.asteroids"
PKG_VERSION="2adf852"
PKG_VERSION="0fc066d"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="kodi-theme-Estuary"
PKG_VERSION="17.0-alpha3-fc46cf2"
PKG_VERSION="17.0-beta1-81d5d26"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<section id="interface">
<category id="other">
<group id="2">
<setting id="lookandfeel.enablerssfeeds">
<default>false</default>
</setting>
</group>
</category>
</section>
<section id="system">
<category id="display">
<group id="1">
@ -45,15 +35,7 @@
</group>
</category>
<category id="general">
<group id="2">
<setting id="services.zeroconf">
<default>true</default>
</setting>
</group>
</category>
<category id="webserver">
<category id="control">
<group id="1">
<setting id="services.webserver">
<default>true</default>

View File

@ -5,7 +5,6 @@
provider-name="Team Kodi">
<requires>
<import addon="xbmc.addon" version="15.0.0"/>
<import addon="kodi.game" version="1.0.0"/>
</requires>
<extension point="xbmc.addon.repository" name="Kodi game add-on repository (alpha)">
<info compressed="false">https://raw.githubusercontent.com/kodi-game/repository.kodi.game/master/release/addons.xml</info>

View File

@ -17,13 +17,13 @@
################################################################################
PKG_NAME="kodi"
PKG_VERSION="17.0-alpha3-fc46cf2"
PKG_VERSION="17.0-beta1-81d5d26"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain kodi:host xmlstarlet:host Python zlib systemd pciutils lzo pcre swig:host libass curl fontconfig fribidi tinyxml libjpeg-turbo freetype libcdio taglib libxml2 libxslt yajl sqlite ffmpeg crossguid giflib libdvdnav"
PKG_DEPENDS_TARGET="toolchain kodi:host xmlstarlet:host Python zlib systemd pciutils lzo pcre swig:host libass curl fontconfig fribidi tinyxml libjpeg-turbo freetype libcdio taglib libxml2 libxslt yajl sqlite ffmpeg crossguid giflib libdvdnav libhdhomerun"
PKG_DEPENDS_HOST="lzo:host libpng:host libjpeg-turbo:host giflib:host"
PKG_PRIORITY="optional"
PKG_SECTION="mediacenter"

View File

@ -1,278 +0,0 @@
From 3040f6024904eb1cf92a5b7b0e5268be756aecb0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A4r=20Bj=C3=B6rklund?= <per@ohmy.nu>
Date: Sun, 31 Jul 2016 21:33:55 +0200
Subject: [PATCH] Add a recursive version of CDirectory::Remove
Tested on Windows and works
Untested on POSIX systems
---
xbmc/Application.cpp | 6 ++--
xbmc/filesystem/Directory.cpp | 27 +++++++++++++++
xbmc/filesystem/Directory.h | 2 ++
xbmc/filesystem/IDirectory.h | 7 ++++
xbmc/filesystem/posix/PosixDirectory.cpp | 50 ++++++++++++++++++++++++++++
xbmc/filesystem/posix/PosixDirectory.h | 1 +
xbmc/filesystem/win32/Win32Directory.cpp | 56 ++++++++++++++++++++++++++++++++
xbmc/filesystem/win32/Win32Directory.h | 13 ++++----
8 files changed, 154 insertions(+), 8 deletions(-)
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index edec038..00b24f4 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -1079,8 +1079,10 @@ void CApplication::CreateUserDirs() const
//Let's clear our archive cache before starting up anything more
auto archiveCachePath = CSpecialProtocol::TranslatePath("special://temp/archive_cache/");
- CDirectory::Remove(archiveCachePath);
- CDirectory::Create(archiveCachePath);
+ if (CDirectory::RemoveRecursive(archiveCachePath))
+ CDirectory::Create(archiveCachePath);
+ else
+ CLog::Log(LOGWARNING, "Failed to remove the archive cache at %s", archiveCachePath.c_str());
}
diff --git a/xbmc/filesystem/Directory.cpp b/xbmc/filesystem/Directory.cpp
index 05a3e43..25c0ba4 100644
--- a/xbmc/filesystem/Directory.cpp
+++ b/xbmc/filesystem/Directory.cpp
@@ -323,6 +323,11 @@ bool CDirectory::Remove(const std::string& strPath)
return Remove(pathToUrl);
}
+bool CDirectory::RemoveRecursive(const std::string& strPath)
+{
+ return RemoveRecursive(CURL{ strPath });
+}
+
bool CDirectory::Remove(const CURL& url)
{
try
@@ -345,6 +350,28 @@ bool CDirectory::Remove(const CURL& url)
return false;
}
+bool CDirectory::RemoveRecursive(const CURL& url)
+{
+ try
+ {
+ CURL realURL = URIUtils::SubstitutePath(url);
+ std::unique_ptr<IDirectory> pDirectory(CDirectoryFactory::Create(realURL));
+ if (pDirectory.get())
+ if(pDirectory->RemoveRecursive(realURL))
+ {
+ g_directoryCache.ClearFile(realURL.Get());
+ return true;
+ }
+ }
+ XBMCCOMMONS_HANDLE_UNCHECKED
+ catch (...)
+ {
+ CLog::Log(LOGERROR, "%s - Unhandled exception", __FUNCTION__);
+ }
+ CLog::Log(LOGERROR, "%s - Error removing %s", __FUNCTION__, url.GetRedacted().c_str());
+ return false;
+}
+
void CDirectory::FilterFileDirectories(CFileItemList &items, const std::string &mask)
{
for (int i=0; i< items.Size(); ++i)
diff --git a/xbmc/filesystem/Directory.h b/xbmc/filesystem/Directory.h
index bb06f32..a1f8f85 100644
--- a/xbmc/filesystem/Directory.h
+++ b/xbmc/filesystem/Directory.h
@@ -58,6 +58,7 @@ class CDirectory
static bool Create(const CURL& url);
static bool Exists(const CURL& url, bool bUseCache = true);
static bool Remove(const CURL& url);
+ static bool RemoveRecursive(const CURL& url);
static bool GetDirectory(const std::string& strPath
, CFileItemList &items
@@ -73,6 +74,7 @@ class CDirectory
static bool Create(const std::string& strPath);
static bool Exists(const std::string& strPath, bool bUseCache = true);
static bool Remove(const std::string& strPath);
+ static bool RemoveRecursive(const std::string& strPath);
/*! \brief Filter files that act like directories from the list, replacing them with their directory counterparts
\param items The item list to filter
diff --git a/xbmc/filesystem/IDirectory.h b/xbmc/filesystem/IDirectory.h
index 03e086b..246c4d0 100644
--- a/xbmc/filesystem/IDirectory.h
+++ b/xbmc/filesystem/IDirectory.h
@@ -102,6 +102,13 @@ class IDirectory
virtual bool Remove(const CURL& url) { return false; }
/*!
+ \brief Recursively removes the directory
+ \param url Directory to remove.
+ \return Returns \e false if not succesful
+ */
+ virtual bool RemoveRecursive(const CURL& url) { return false; }
+
+ /*!
\brief Whether this file should be listed
\param url File to test.
\return Returns \e true if the file should be listed
diff --git a/xbmc/filesystem/posix/PosixDirectory.cpp b/xbmc/filesystem/posix/PosixDirectory.cpp
index f23037d..c90572d 100644
--- a/xbmc/filesystem/posix/PosixDirectory.cpp
+++ b/xbmc/filesystem/posix/PosixDirectory.cpp
@@ -128,6 +128,56 @@ bool CPosixDirectory::Remove(const CURL& url)
return !Exists(url);
}
+ bool CPosixDirectory::RemoveRecursive(const CURL& url)
+ {
+ std::string root = url.Get();
+
+ if (IsAliasShortcut(root, true))
+ TranslateAliasShortcut(root);
+
+ DIR *dir = opendir(root.c_str());
+ if (!dir)
+ return false;
+
+ struct dirent* entry;
+ while ((entry = readdir(dir)) != NULL)
+ {
+ if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
+ continue;
+
+ std::string itemLabel(entry->d_name);
+ CCharsetConverter::unknownToUTF8(itemLabel);
+ std::string itemPath(URIUtils::AddFileToFolder(root, entry->d_name));
+
+ bool bStat = false;
+ struct stat buffer;
+
+ // Unix-based readdir implementations may return an incorrect dirent.d_ino value that
+ // is not equal to the (correct) stat() obtained one. In this case the file type
+ // could not be determined and the value of dirent.d_type is set to DT_UNKNOWN.
+ // In order to get a correct value we have to incur the cost of calling stat.
+ if (entry->d_type == DT_UNKNOWN || entry->d_type == DT_LNK)
+ {
+ if (stat(itemPath.c_str(), &buffer) == 0)
+ bStat = true;
+ }
+
+ if (entry->d_type == DT_DIR || (bStat && S_ISDIR(buffer.st_mode)))
+ {
+ if (!RemoveRecursive(CURL{ itemPath }))
+ return false;
+ if (rmdir(itemPath.c_str()) != 0)
+ return false;
+ }
+ else
+ {
+ if (unlink(itemPath.c_str()) != 0)
+ return false;
+ }
+ }
+ closedir(dir);
+ return true;
+ }
bool CPosixDirectory::Exists(const CURL& url)
{
diff --git a/xbmc/filesystem/posix/PosixDirectory.h b/xbmc/filesystem/posix/PosixDirectory.h
index 91b97c6..8c2a837 100644
--- a/xbmc/filesystem/posix/PosixDirectory.h
+++ b/xbmc/filesystem/posix/PosixDirectory.h
@@ -33,5 +33,6 @@ class CPosixDirectory : public IDirectory
virtual bool Create(const CURL& url);
virtual bool Exists(const CURL& url);
virtual bool Remove(const CURL& url);
+ virtual bool RemoveRecursive(const CURL& url);
};
}
diff --git a/xbmc/filesystem/win32/Win32Directory.cpp b/xbmc/filesystem/win32/Win32Directory.cpp
index 339cefa..c580c2b 100644
--- a/xbmc/filesystem/win32/Win32Directory.cpp
+++ b/xbmc/filesystem/win32/Win32Directory.cpp
@@ -178,4 +178,60 @@ bool CWin32Directory::Remove(const CURL& url)
return !Exists(url);
}
+bool CWin32Directory::RemoveRecursive(const CURL& url)
+{
+ std::string pathWithSlash(url.Get());
+ if (!pathWithSlash.empty() && pathWithSlash.back() != '\\')
+ pathWithSlash.push_back('\\');
+
+ auto basePath = CWIN32Util::ConvertPathToWin32Form(pathWithSlash);
+ if (basePath.empty())
+ return false;
+
+ auto searchMask = basePath + L'*';
+
+ HANDLE hSearch;
+ WIN32_FIND_DATAW findData = {};
+
+ if (g_sysinfo.IsWindowsVersionAtLeast(CSysInfo::WindowsVersionWin7))
+ hSearch = FindFirstFileExW(searchMask.c_str(), FindExInfoBasic, &findData, FindExSearchNameMatch, nullptr, FIND_FIRST_EX_LARGE_FETCH);
+ else
+ hSearch = FindFirstFileExW(searchMask.c_str(), FindExInfoStandard, &findData, FindExSearchNameMatch, nullptr, 0);
+
+ if (hSearch == INVALID_HANDLE_VALUE)
+ return GetLastError() == ERROR_FILE_NOT_FOUND ? Exists(url) : false; // return true if directory exist and empty
+
+ do
+ {
+ std::wstring itemNameW(findData.cFileName);
+ if (itemNameW == L"." || itemNameW == L"..")
+ continue;
+
+ auto pathW = basePath + itemNameW;
+ if (0 != (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ std::string path;
+ if (!g_charsetConverter.wToUTF8(pathW, path, true))
+ {
+ CLog::Log(LOGERROR, "%s: Can't convert wide string name to UTF-8 encoding", __FUNCTION__);
+ continue;
+ }
+
+ if (!RemoveRecursive(CURL{ path }))
+ return false;
+
+ if (FALSE == RemoveDirectoryW(pathW.c_str()))
+ return false;
+ }
+ else
+ {
+ if (FALSE == DeleteFileW(pathW.c_str()))
+ return false;
+ }
+ } while (FindNextFileW(hSearch, &findData));
+
+ FindClose(hSearch);
+
+ return true;
+}
#endif // TARGET_WINDOWS
diff --git a/xbmc/filesystem/win32/Win32Directory.h b/xbmc/filesystem/win32/Win32Directory.h
index 2d77588..c03e68b 100644
--- a/xbmc/filesystem/win32/Win32Directory.h
+++ b/xbmc/filesystem/win32/Win32Directory.h
@@ -27,11 +27,12 @@ namespace XFILE
class CWin32Directory : public IDirectory
{
public:
- CWin32Directory(void);
- virtual ~CWin32Directory(void);
- virtual bool GetDirectory(const CURL& url, CFileItemList &items);
- virtual bool Create(const CURL& url);
- virtual bool Exists(const CURL& url);
- virtual bool Remove(const CURL& url);
+ CWin32Directory();
+ virtual ~CWin32Directory();
+ bool GetDirectory(const CURL& url, CFileItemList &items) override;
+ bool Create(const CURL& url) override;
+ bool Exists(const CURL& url) override;
+ bool Remove(const CURL& url) override;
+ bool RemoveRecursive(const CURL& url) override;
};
}

View File

@ -1,24 +0,0 @@
From 793d8434039e88f2fe098c51ff2a98561c54debc Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Mon, 1 Aug 2016 19:58:17 +0200
Subject: [PATCH] VideoPlayer: fix handling of progressive content in
RenderManager
---
xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
index b482fc1..558a1f3 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
@@ -806,6 +806,9 @@ void CRenderManager::FlipPage(volatile std::atomic_bool& bStop, double pts /* =
}
else
{
+ if (sync == FS_NONE)
+ presentmethod = PRESENT_METHOD_SINGLE;
+ else
{
bool invert = false;
if (interlacemethod == VS_INTERLACEMETHOD_RENDER_BLEND)

View File

@ -0,0 +1,135 @@
From ee2dc577a03d86ac61e06bc95aaff1d1eddbf593 Mon Sep 17 00:00:00 2001
From: Garrett Brown <themagnificentmrb@gmail.com>
Date: Thu, 18 Aug 2016 14:10:36 -0700
Subject: [PATCH] Rename CPeripherals::GetAddon() to GetAddonWithButtonMap()
and move to addon bus
---
xbmc/peripherals/Peripherals.cpp | 26 +++++----------------
xbmc/peripherals/Peripherals.h | 2 +-
xbmc/peripherals/addons/AddonButtonMapping.cpp | 2 +-
xbmc/peripherals/addons/AddonInputHandling.cpp | 2 +-
.../peripherals/bus/virtual/PeripheralBusAddon.cpp | 27 ++++++++++++++++++----
5 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/xbmc/peripherals/Peripherals.cpp b/xbmc/peripherals/Peripherals.cpp
index 629846d..30f160e 100644
--- a/xbmc/peripherals/Peripherals.cpp
+++ b/xbmc/peripherals/Peripherals.cpp
@@ -762,29 +762,15 @@ void CPeripherals::ProcessEvents(void)
bus->ProcessEvents();
}
-PeripheralAddonPtr CPeripherals::GetAddon(const CPeripheral* device)
+PeripheralAddonPtr CPeripherals::GetAddonWithButtonMap(const CPeripheral* device)
{
- PeripheralAddonPtr addon;
-
PeripheralBusAddonPtr addonBus = std::static_pointer_cast<CPeripheralBusAddon>(GetBusByType(PERIPHERAL_BUS_ADDON));
- if (device && addonBus)
- {
- PeripheralBusType busType = device->GetBusType();
- if (busType == PERIPHERAL_BUS_ADDON)
- {
- // If device is from an add-on, use that add-on
- PeripheralAddonPtr peripheralAddon;
- unsigned int index;
- if (addonBus->SplitLocation(device->Location(), addon, index))
- addon = std::move(peripheralAddon);
- }
- else
- {
- // Otherwise, have the add-on bus find a suitable add-on
- addonBus->GetAddonWithButtonMap(device, addon);
- }
- }
+ PeripheralAddonPtr addon;
+
+ PeripheralAddonPtr addonWithButtonMap;
+ if (addonBus && addonBus->GetAddonWithButtonMap(device, addonWithButtonMap))
+ addon = std::move(addonWithButtonMap);
return addon;
}
diff --git a/xbmc/peripherals/Peripherals.h b/xbmc/peripherals/Peripherals.h
index b66970d..33ca7fb 100644
--- a/xbmc/peripherals/Peripherals.h
+++ b/xbmc/peripherals/Peripherals.h
@@ -239,7 +239,7 @@ namespace PERIPHERALS
// implementation of IEventScannerCallback
virtual void ProcessEvents(void) override;
- virtual PeripheralAddonPtr GetAddon(const CPeripheral* device);
+ virtual PeripheralAddonPtr GetAddonWithButtonMap(const CPeripheral* device);
virtual void ResetButtonMaps(const std::string& controllerId);
diff --git a/xbmc/peripherals/addons/AddonButtonMapping.cpp b/xbmc/peripherals/addons/AddonButtonMapping.cpp
index 818e894..32a45c2 100644
--- a/xbmc/peripherals/addons/AddonButtonMapping.cpp
+++ b/xbmc/peripherals/addons/AddonButtonMapping.cpp
@@ -29,7 +29,7 @@ using namespace PERIPHERALS;
CAddonButtonMapping::CAddonButtonMapping(CPeripheral* peripheral, IButtonMapper* mapper)
{
- PeripheralAddonPtr addon = g_peripherals.GetAddon(peripheral);
+ PeripheralAddonPtr addon = g_peripherals.GetAddonWithButtonMap(peripheral);
if (!addon)
{
diff --git a/xbmc/peripherals/addons/AddonInputHandling.cpp b/xbmc/peripherals/addons/AddonInputHandling.cpp
index 7a29c9e..89527f4 100644
--- a/xbmc/peripherals/addons/AddonInputHandling.cpp
+++ b/xbmc/peripherals/addons/AddonInputHandling.cpp
@@ -32,7 +32,7 @@ using namespace PERIPHERALS;
CAddonInputHandling::CAddonInputHandling(CPeripheral* peripheral, IInputHandler* handler, IDriverReceiver* receiver)
{
- PeripheralAddonPtr addon = g_peripherals.GetAddon(peripheral);
+ PeripheralAddonPtr addon = g_peripherals.GetAddonWithButtonMap(peripheral);
if (!addon)
{
diff --git a/xbmc/peripherals/bus/virtual/PeripheralBusAddon.cpp b/xbmc/peripherals/bus/virtual/PeripheralBusAddon.cpp
index b533686..2426285 100644
--- a/xbmc/peripherals/bus/virtual/PeripheralBusAddon.cpp
+++ b/xbmc/peripherals/bus/virtual/PeripheralBusAddon.cpp
@@ -80,15 +80,32 @@ bool CPeripheralBusAddon::GetAddon(const std::string &strId, AddonPtr &addon) co
bool CPeripheralBusAddon::GetAddonWithButtonMap(const CPeripheral* device, PeripheralAddonPtr &addon) const
{
CSingleLock lock(m_critSection);
- for (const auto& addonIt : m_addons)
+
+ // If device is from an add-on, try to use that add-on
+ if (device && device->GetBusType() == PERIPHERAL_BUS_ADDON)
{
- if (addonIt->HasButtonMaps())
+ PeripheralAddonPtr addonWithButtonMap;
+ unsigned int index;
+ if (SplitLocation(device->Location(), addonWithButtonMap, index))
{
- addon = addonIt;
- return true;
+ if (addonWithButtonMap->HasButtonMaps())
+ addon = std::move(addonWithButtonMap);
}
}
- return false;
+
+ if (!addon)
+ {
+ auto it = std::find_if(m_addons.begin(), m_addons.end(),
+ [](const PeripheralAddonPtr& addon)
+ {
+ return addon->HasButtonMaps();
+ });
+
+ if (it != m_addons.end())
+ addon = *it;
+ }
+
+ return addon.get() != nullptr;
}
unsigned int CPeripheralBusAddon::GetAddonCount(void) const

View File

@ -0,0 +1,82 @@
From 11c81dbb3d0ccfbe3a4197890dea09801617eae2 Mon Sep 17 00:00:00 2001
From: mapfau <pfau@peakwork.de>
Date: Sun, 28 Aug 2016 23:15:34 +0200
Subject: [PATCH] check for kodi.inputstream version
---
xbmc/addons/InputStream.cpp | 23 +++++++++++++++++++++--
xbmc/addons/InputStream.h | 4 +++-
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/xbmc/addons/InputStream.cpp b/xbmc/addons/InputStream.cpp
index 9d6aee2..5d09a4c 100644
--- a/xbmc/addons/InputStream.cpp
+++ b/xbmc/addons/InputStream.cpp
@@ -36,8 +36,22 @@ std::unique_ptr<CInputStream> CInputStream::FromExtension(AddonProps props, cons
std::string extensions = CAddonMgr::GetInstance().GetExtValue(ext->configuration, "@extension");
std::string protocols = CAddonMgr::GetInstance().GetExtValue(ext->configuration, "@protocols");
std::string name(ext->plugin->identifier);
+
+ bool matchAPIVersion(true);
+ for (unsigned int i(0); i < ext->plugin->num_imports; ++i)
+ if (strcmp(ext->plugin->imports[i].plugin_id, "kodi.inputstream") == 0 && strcmp(ext->plugin->imports[i].version, INPUTSTREAM_API_VERSION) != 0)
+ {
+ matchAPIVersion = false;
+ CLog::Log(LOGNOTICE, "CInputStream::FromExtension - %s (%s) not loaded due to API mismatch, has %s, wanted %s",
+ props.id.c_str(),
+ props.version.Upstream().c_str(),
+ ext->plugin->imports[i].version,
+ INPUTSTREAM_API_VERSION);
+ break;
+ }
+
std::unique_ptr<CInputStream> istr(new CInputStream(props, name, listitemprops,
- extensions, protocols));
+ extensions, protocols, matchAPIVersion));
istr->CheckConfig();
return istr;
}
@@ -46,8 +60,10 @@ CInputStream::CInputStream(const AddonProps& props,
const std::string& name,
const std::string& listitemprops,
const std::string& extensions,
- const std::string& protocols)
+ const std::string& protocols,
+ bool matchAPIVersion)
: InputStreamDll(std::move(props))
+, m_matchAPIVersion(matchAPIVersion)
{
m_fileItemProps = StringUtils::Tokenize(listitemprops, "|");
for (auto &key : m_fileItemProps)
@@ -71,6 +87,9 @@ CInputStream::CInputStream(const AddonProps& props,
bool CInputStream::CheckAPIVersion()
{
+ if (!m_matchAPIVersion)
+ return false;
+
std::string dllVersion = m_pStruct->GetApiVersion();
if (dllVersion.compare(INPUTSTREAM_API_VERSION) != 0)
{
diff --git a/xbmc/addons/InputStream.h b/xbmc/addons/InputStream.h
index c081472..328e036 100644
--- a/xbmc/addons/InputStream.h
+++ b/xbmc/addons/InputStream.h
@@ -46,7 +46,8 @@ namespace ADDON
const std::string& name,
const std::string& listitemprops,
const std::string& extensions,
- const std::string& protocols);
+ const std::string& protocols,
+ bool hasAPIVersion);
virtual ~CInputStream() {}
virtual void SaveSettings() override;
@@ -100,6 +101,7 @@ namespace ADDON
std::vector<std::string> m_extensionsList;
std::vector<std::string> m_protocolsList;
INPUTSTREAM_CAPABILITIES m_caps;
+ bool m_matchAPIVersion;
std::map<int, CDemuxStream*> m_streams;
static CCriticalSection m_parentSection;

View File

@ -1,75 +0,0 @@
From 9fe38dcb04d89770e12d374880b3115acd9da4f1 Mon Sep 17 00:00:00 2001
From: Christian Fetzer <fetzer.ch@gmail.com>
Date: Tue, 2 Aug 2016 07:54:15 +0200
Subject: [PATCH] [VideoPlayer] Fix build after dropping deinterlacing mode
25718f4ccebd227eaf63f0f8b53f0552f89f01e5 forgot to remove some methods
that still use EDEINTERLACEMODE.
---
.../VideoPlayer/VideoRenderers/HwDecRender/RendererAML.cpp | 10 ----------
.../cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.h | 1 -
.../VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.cpp | 5 -----
.../VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.h | 1 -
4 files changed, 17 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.cpp
index d0baa27..d8674c8 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.cpp
@@ -81,16 +81,6 @@ bool CRendererAML::Supports(EINTERLACEMETHOD method)
return false;
}
-bool CRendererAML::Supports(EDEINTERLACEMODE mode)
-{
- if(mode == VS_DEINTERLACEMODE_OFF
- || mode == VS_DEINTERLACEMODE_AUTO
- || mode == VS_DEINTERLACEMODE_FORCE)
- return true;
-
- return false;
-}
-
bool CRendererAML::Supports(ESCALINGMETHOD method)
{
return false;
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.h
index 819f6e3..828f584a 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererAML.h
@@ -41,7 +41,6 @@ class CRendererAML : public CLinuxRendererGLES
// Feature support
virtual bool Supports(EINTERLACEMETHOD method);
- virtual bool Supports(EDEINTERLACEMODE mode);
virtual bool Supports(ESCALINGMETHOD method);
virtual bool Supports(ERENDERFEATURE feature);
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.cpp
index 0fb0312..ba05557 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.cpp
@@ -71,11 +71,6 @@ bool CRendererOMX::Supports(EINTERLACEMETHOD method)
return false;
}
-bool CRendererOMX::Supports(EDEINTERLACEMODE mode)
-{
- return false;
-}
-
bool CRendererOMX::Supports(ESCALINGMETHOD mode)
{
return false;
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.h
index 5f18452..6e84cb2 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererOpenMax.h
@@ -38,7 +38,6 @@ class CRendererOMX : public CLinuxRendererGLES
// Feature support
virtual bool Supports(EINTERLACEMETHOD method);
- virtual bool Supports(EDEINTERLACEMODE mode);
virtual bool Supports(ESCALINGMETHOD method);

View File

@ -45,9 +45,8 @@ single_stacktrace()
print_crash_report()
{
if [ ! -d $CRASHLOG_DIR ] ; then
mkdir -p $CRASHLOG_DIR
fi
mkdir -p $CRASHLOG_DIR
DATE=`date +%Y%m%d%H%M%S`
FILE="$CRASHLOG_DIR/.kodi_crashlog.log"
echo "############## kodi CRASH LOG ###############" > $FILE

View File

@ -9,6 +9,8 @@ Environment=__GL_YIELD=USLEEP
Environment=DISPLAY=:0.0
Environment=SDL_MOUSE_RELATIVE=0
Environment=HOME=/storage
Environment=KODI_TEMP=/storage/.kodi/temp
Environment=KODI_HOME=/usr/share/kodi/
EnvironmentFile=-/run/libreelec/kodi.conf
EnvironmentFile=-/run/libreelec/debug/kodi.conf
ExecStartPre=-/usr/lib/kodi/kodi-config

View File

@ -18,7 +18,7 @@
PKG_NAME="ffmpeg"
# Current branch is: release/3.1-xbmc
PKG_VERSION="c65cfe4"
PKG_VERSION="6da2f5f"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="LGPLv2.1+"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="expat"
PKG_VERSION="2.1.1"
PKG_VERSION="2.2.0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="OSS"

View File

@ -25,7 +25,7 @@
# there: http://forum.xbmc.org/showthread.php?tid=177557
PKG_NAME="curl"
PKG_VERSION="7.49.1"
PKG_VERSION="7.50.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="MIT"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff