kodi: update to 17.0-beta1-81d5d26

This commit is contained in:
MilhouseVH 2016-08-21 22:56:55 +01:00
parent c5864e580b
commit aea264031d
7 changed files with 3 additions and 2437 deletions

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

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

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

@ -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);