Merge pull request #803 from MilhouseVH/kodi17b3

kodi: update to update to 17.0-beta3-7041777
This commit is contained in:
Christian Hewitt 2016-10-07 15:34:26 +04:00 committed by GitHub
commit 3142c0216c
22 changed files with 431 additions and 1252 deletions

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="bcm2835-driver"
PKG_VERSION="ad8608c"
PKG_VERSION="ec63df1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="nonfree"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="audiodecoder.dumb"
PKG_VERSION="f2b3a98"
PKG_VERSION="f000b7d"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="inputstream.mpd"
PKG_VERSION="2c8ffc7"
PKG_VERSION="c5ee8ac"
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="pvr.argustv"
PKG_VERSION="299088b"
PKG_VERSION="87cb678"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

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

View File

@ -1,376 +0,0 @@
From 40a0711876959f87311fd8a7916537e8fc5f5217 Mon Sep 17 00:00:00 2001
From: dvblogic <info@dvblogic.com>
Date: Tue, 13 Sep 2016 18:16:34 +0200
Subject: [PATCH 1/3] Version 3.3.5 Fixed: Crash on startup with search timers
Fixed: Incorrect disk space display if disk size is more than 2TB
---
lib/libdvblinkremote/recording_settings.cpp | 4 ++--
lib/libdvblinkremote/response.h | 4 ++--
lib/libdvblinkremote/util.cpp | 24 ++++++++++++++++++++++++
lib/libdvblinkremote/util.h | 2 ++
pvr.dvblink/addon.xml.in | 2 +-
pvr.dvblink/changelog.txt | 4 ++++
src/DVBLinkClient.cpp | 8 ++++----
7 files changed, 39 insertions(+), 9 deletions(-)
diff --git a/lib/libdvblinkremote/recording_settings.cpp b/lib/libdvblinkremote/recording_settings.cpp
index ae3e3b6..729c836 100644
--- a/lib/libdvblinkremote/recording_settings.cpp
+++ b/lib/libdvblinkremote/recording_settings.cpp
@@ -86,8 +86,8 @@ bool RecordingSettingsSerializer::ReadObject(RecordingSettings& object, const st
object.TimeMarginBeforeScheduledRecordings = Util::GetXmlFirstChildElementTextAsInt(elRoot, "before_margin");
object.TimeMarginAfterScheduledRecordings = Util::GetXmlFirstChildElementTextAsInt(elRoot, "after_margin");
object.RecordingPath = Util::GetXmlFirstChildElementText(elRoot, "recording_path");
- object.TotalSpace = Util::GetXmlFirstChildElementTextAsLong(elRoot, "total_space");
- object.AvailableSpace = Util::GetXmlFirstChildElementTextAsLong(elRoot, "avail_space");
+ object.TotalSpace = Util::GetXmlFirstChildElementTextAsLongLong(elRoot, "total_space");
+ object.AvailableSpace = Util::GetXmlFirstChildElementTextAsLongLong(elRoot, "avail_space");
return true;
}
diff --git a/lib/libdvblinkremote/response.h b/lib/libdvblinkremote/response.h
index 51b7ef8..5be5aec 100644
--- a/lib/libdvblinkremote/response.h
+++ b/lib/libdvblinkremote/response.h
@@ -1350,12 +1350,12 @@ namespace dvblinkremote {
/**
* The total space in KB.
*/
- long TotalSpace;
+ long long TotalSpace;
/**
* The available space in KB.
*/
- long AvailableSpace;
+ long long AvailableSpace;
};
class ChannelFavorite
diff --git a/lib/libdvblinkremote/util.cpp b/lib/libdvblinkremote/util.cpp
index 65ac456..6e0be90 100644
--- a/lib/libdvblinkremote/util.cpp
+++ b/lib/libdvblinkremote/util.cpp
@@ -34,6 +34,7 @@ bool Util::from_string(T& t, const std::string& s, std::ios_base& (*f)(std::ios_
template bool Util::from_string<int>(int& t, const std::string& s, std::ios_base& (*f)(std::ios_base&));
template bool Util::from_string<long>(long& t, const std::string& s, std::ios_base& (*f)(std::ios_base&));
+template bool Util::from_string<long long>(long long& t, const std::string& s, std::ios_base& (*f)(std::ios_base&));
template <class T>
bool Util::to_string(const T& t, std::string& s)
@@ -59,6 +60,11 @@ bool Util::ConvertToLong(const std::string& s, long& value)
return from_string<long>(value, s, std::dec);
}
+bool Util::ConvertToLongLong(const std::string& s, long long& value)
+{
+ return from_string<long long>(value, s, std::dec);
+}
+
bool Util::ConvertToString(const int& value, std::string& s)
{
return to_string(value, s);
@@ -192,6 +198,24 @@ long Util::GetXmlFirstChildElementTextAsLong(const tinyxml2::XMLElement* parentE
return value;
}
+long long Util::GetXmlFirstChildElementTextAsLongLong(const tinyxml2::XMLElement* parentElement, const char* name)
+{
+ const tinyxml2::XMLElement* el = parentElement->FirstChildElement(name);
+ const char* s = "-1";
+ long long value;
+
+ if (el != NULL && el->GetText()) {
+ s = el->GetText();
+ }
+
+ if (s && !Util::ConvertToLongLong(s, value))
+ {
+ value = -1;
+ }
+
+ return value;
+}
+
bool Util::GetXmlFirstChildElementTextAsBoolean(const tinyxml2::XMLElement* parentElement, const char* name)
{
const tinyxml2::XMLElement* el = parentElement->FirstChildElement(name);
diff --git a/lib/libdvblinkremote/util.h b/lib/libdvblinkremote/util.h
index 3af4914..63c9ecb 100644
--- a/lib/libdvblinkremote/util.h
+++ b/lib/libdvblinkremote/util.h
@@ -34,6 +34,7 @@ namespace dvblinkremote {
public:
static bool ConvertToInt(const std::string& s, int& value);
static bool ConvertToLong(const std::string& s, long& value);
+ static bool ConvertToLongLong(const std::string& s, long long& value);
static bool ConvertToString(const int& value, std::string&);
static bool ConvertToString(const unsigned int& value, std::string&);
static bool ConvertToString(const long& value, std::string&);
@@ -48,6 +49,7 @@ namespace dvblinkremote {
static int GetXmlFirstChildElementTextAsInt(const tinyxml2::XMLElement* parentElement, const char* name);
static long GetXmlFirstChildElementTextAsLong(const tinyxml2::XMLElement* parentElement, const char* name);
static bool GetXmlFirstChildElementTextAsBoolean(const tinyxml2::XMLElement* parentElement, const char* name);
+ static long long GetXmlFirstChildElementTextAsLongLong(const tinyxml2::XMLElement* parentElement, const char* name);
private:
template <class T> static bool from_string(T& t, const std::string& s, std::ios_base& (*f)(std::ios_base&));
diff --git a/pvr.dvblink/addon.xml.in b/pvr.dvblink/addon.xml.in
index 5e81fae..e9464b9 100644
--- a/pvr.dvblink/addon.xml.in
+++ b/pvr.dvblink/addon.xml.in
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="pvr.dvblink"
- version="3.3.4"
+ version="3.3.5"
name="DVBLink PVR Client"
provider-name="DVBLogic">
<requires>
diff --git a/pvr.dvblink/changelog.txt b/pvr.dvblink/changelog.txt
index 25e1f0a..4f1a8e2 100644
--- a/pvr.dvblink/changelog.txt
+++ b/pvr.dvblink/changelog.txt
@@ -1,3 +1,7 @@
+[B]Version 3.3.5[/B]
+Fixed: Crash on startup with search timers
+Fixed: Incorrect disk space display if disk size is more than 2TB
+
[B]Version 3.3.4[/B]
Updated: language files from Transifex
diff --git a/src/DVBLinkClient.cpp b/src/DVBLinkClient.cpp
index fbb07f7..de9b480 100644
--- a/src/DVBLinkClient.cpp
+++ b/src/DVBLinkClient.cpp
@@ -736,11 +736,11 @@ int DVBLinkClient::GetSchedules(ADDON_HANDLE handle, const RecordingList& record
timer.iMarginEnd = bp_schedules[i]->MarginAfter / 60;
strncpy(timer.strEpgSearchString, bp_schedules[i]->GetKeyphrase().c_str(), sizeof(timer.strEpgSearchString) - 1);
- if (schedule_to_timer_map.find(epg_schedules[i]->GetID()) != schedule_to_timer_map.end() &&
- schedule_to_timer_map[epg_schedules[i]->GetID()].size() > 0)
+ if (schedule_to_timer_map.find(bp_schedules[i]->GetID()) != schedule_to_timer_map.end() &&
+ schedule_to_timer_map[bp_schedules[i]->GetID()].size() > 0)
{
- timer.startTime = schedule_to_timer_map[epg_schedules[i]->GetID()].at(0)->GetProgram().GetStartTime();
- timer.endTime = timer.startTime + schedule_to_timer_map[epg_schedules[i]->GetID()].at(0)->GetProgram().GetDuration();
+ timer.startTime = schedule_to_timer_map[bp_schedules[i]->GetID()].at(0)->GetProgram().GetStartTime();
+ timer.endTime = timer.startTime + schedule_to_timer_map[bp_schedules[i]->GetID()].at(0)->GetProgram().GetDuration();
}
strncpy(timer.strTitle, bp_schedules[i]->GetKeyphrase().c_str(), sizeof(timer.strTitle) - 1);
From ed9d369c1b683079dc7770af8313dfa46b35cddb Mon Sep 17 00:00:00 2001
From: dvblogic <info@dvblogic.com>
Date: Wed, 14 Sep 2016 09:21:33 +0200
Subject: [PATCH 2/3] Fixed: Doesn't build with tinyxml2 4.x #52
---
lib/libdvblinkremote/channel.cpp | 2 +-
lib/libdvblinkremote/epg.cpp | 2 +-
lib/libdvblinkremote/favorites.cpp | 2 +-
lib/libdvblinkremote/generic_response.cpp | 2 +-
lib/libdvblinkremote/parental_lock.cpp | 2 +-
lib/libdvblinkremote/playback_object.cpp | 2 +-
lib/libdvblinkremote/recording.cpp | 2 +-
lib/libdvblinkremote/recording_settings.cpp | 2 +-
lib/libdvblinkremote/scheduling.cpp | 2 +-
lib/libdvblinkremote/server_info.cpp | 2 +-
lib/libdvblinkremote/stream.cpp | 2 +-
lib/libdvblinkremote/streaming_capabilities.cpp | 2 +-
pvr.dvblink/changelog.txt | 1 +
13 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/lib/libdvblinkremote/channel.cpp b/lib/libdvblinkremote/channel.cpp
index 2861feb..b9f8ac5 100644
--- a/lib/libdvblinkremote/channel.cpp
+++ b/lib/libdvblinkremote/channel.cpp
@@ -122,7 +122,7 @@ bool GetChannelsResponseSerializer::ReadObject(ChannelList& object, const std::s
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("channels");
GetChannelsResponseXmlDataDeserializer* xmlDataDeserializer = new GetChannelsResponseXmlDataDeserializer(*this, object);
elRoot->Accept(xmlDataDeserializer);
diff --git a/lib/libdvblinkremote/epg.cpp b/lib/libdvblinkremote/epg.cpp
index b382e4d..3fcc65e 100644
--- a/lib/libdvblinkremote/epg.cpp
+++ b/lib/libdvblinkremote/epg.cpp
@@ -189,7 +189,7 @@ bool EpgSearchResponseSerializer::ReadObject(EpgSearchResult& object, const std:
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("epg_searcher");
ChannelEpgXmlDataDeserializer* xmlDataDeserializer = new ChannelEpgXmlDataDeserializer(*this, object);
elRoot->Accept(xmlDataDeserializer);
diff --git a/lib/libdvblinkremote/favorites.cpp b/lib/libdvblinkremote/favorites.cpp
index 4e7f96a..a29fd82 100644
--- a/lib/libdvblinkremote/favorites.cpp
+++ b/lib/libdvblinkremote/favorites.cpp
@@ -118,7 +118,7 @@ bool ChannelFavoritesSerializer::ReadObject(ChannelFavorites& object, const std:
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("favorites");
GetFavoritesResponseXmlDataDeserializer* xmlDataDeserializer = new GetFavoritesResponseXmlDataDeserializer(*this, object);
elRoot->Accept(xmlDataDeserializer);
diff --git a/lib/libdvblinkremote/generic_response.cpp b/lib/libdvblinkremote/generic_response.cpp
index 6d85841..7931957 100644
--- a/lib/libdvblinkremote/generic_response.cpp
+++ b/lib/libdvblinkremote/generic_response.cpp
@@ -74,7 +74,7 @@ bool GenericResponseSerializer::ReadObject(GenericResponse& object, const std::s
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("response");
int statusCode = Util::GetXmlFirstChildElementTextAsInt(elRoot, "status_code");
diff --git a/lib/libdvblinkremote/parental_lock.cpp b/lib/libdvblinkremote/parental_lock.cpp
index 1db186e..be8b156 100644
--- a/lib/libdvblinkremote/parental_lock.cpp
+++ b/lib/libdvblinkremote/parental_lock.cpp
@@ -95,7 +95,7 @@ bool ParentalStatusSerializer::ReadObject(ParentalStatus& object, const std::str
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("parental_status");
object.IsEnabled = Util::GetXmlFirstChildElementTextAsBoolean(elRoot, "is_enabled");
return true;
diff --git a/lib/libdvblinkremote/playback_object.cpp b/lib/libdvblinkremote/playback_object.cpp
index 99c8f15..ce3bff7 100644
--- a/lib/libdvblinkremote/playback_object.cpp
+++ b/lib/libdvblinkremote/playback_object.cpp
@@ -136,7 +136,7 @@ bool GetPlaybackObjectResponseSerializer::ReadObject(GetPlaybackObjectResponse&
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("object");
if (HasChildElement(*elRoot, "containers"))
diff --git a/lib/libdvblinkremote/recording.cpp b/lib/libdvblinkremote/recording.cpp
index 0bd21cd..d4dc828 100644
--- a/lib/libdvblinkremote/recording.cpp
+++ b/lib/libdvblinkremote/recording.cpp
@@ -106,7 +106,7 @@ bool GetRecordingsResponseSerializer::ReadObject(RecordingList& object, const st
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("recordings");
GetRecordingsResponseXmlDataDeserializer* xmlDataDeserializer = new GetRecordingsResponseXmlDataDeserializer(*this, object);
elRoot->Accept(xmlDataDeserializer);
diff --git a/lib/libdvblinkremote/recording_settings.cpp b/lib/libdvblinkremote/recording_settings.cpp
index 729c836..2940c63 100644
--- a/lib/libdvblinkremote/recording_settings.cpp
+++ b/lib/libdvblinkremote/recording_settings.cpp
@@ -81,7 +81,7 @@ bool RecordingSettingsSerializer::ReadObject(RecordingSettings& object, const st
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("recording_settings");
object.TimeMarginBeforeScheduledRecordings = Util::GetXmlFirstChildElementTextAsInt(elRoot, "before_margin");
object.TimeMarginAfterScheduledRecordings = Util::GetXmlFirstChildElementTextAsInt(elRoot, "after_margin");
diff --git a/lib/libdvblinkremote/scheduling.cpp b/lib/libdvblinkremote/scheduling.cpp
index 11a3792..aee900e 100644
--- a/lib/libdvblinkremote/scheduling.cpp
+++ b/lib/libdvblinkremote/scheduling.cpp
@@ -415,7 +415,7 @@ bool GetSchedulesResponseSerializer::ReadObject(StoredSchedules& object, const s
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("schedules");
GetSchedulesResponseXmlDataDeserializer* xmlDataDeserializer = new GetSchedulesResponseXmlDataDeserializer(*this, object);
elRoot->Accept(xmlDataDeserializer);
diff --git a/lib/libdvblinkremote/server_info.cpp b/lib/libdvblinkremote/server_info.cpp
index a308048..adbfcee 100644
--- a/lib/libdvblinkremote/server_info.cpp
+++ b/lib/libdvblinkremote/server_info.cpp
@@ -63,7 +63,7 @@ bool ServerInfoSerializer::ReadObject(ServerInfo& object, const std::string& xml
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("server_info");
object.install_id_ = Util::GetXmlFirstChildElementText(elRoot, "install_id");
object.server_id_ = Util::GetXmlFirstChildElementText(elRoot, "server_id");
diff --git a/lib/libdvblinkremote/stream.cpp b/lib/libdvblinkremote/stream.cpp
index 767c7e1..e2c8259 100644
--- a/lib/libdvblinkremote/stream.cpp
+++ b/lib/libdvblinkremote/stream.cpp
@@ -74,7 +74,7 @@ bool StreamResponseSerializer::ReadObject(Stream& object, const std::string& xml
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("stream");
long channelHandle = Util::GetXmlFirstChildElementTextAsLong(elRoot, "channel_handle");
std::string url = Util::GetXmlFirstChildElementText(elRoot, "url");
diff --git a/lib/libdvblinkremote/streaming_capabilities.cpp b/lib/libdvblinkremote/streaming_capabilities.cpp
index 2544199..d2da28a 100644
--- a/lib/libdvblinkremote/streaming_capabilities.cpp
+++ b/lib/libdvblinkremote/streaming_capabilities.cpp
@@ -83,7 +83,7 @@ bool StreamingCapabilitiesSerializer::ReadObject(StreamingCapabilities& object,
{
tinyxml2::XMLDocument& doc = GetXmlDocument();
- if (doc.Parse(xml.c_str()) == tinyxml2::XML_NO_ERROR) {
+ if (doc.Parse(xml.c_str()) == tinyxml2::XML_SUCCESS) {
tinyxml2::XMLElement* elRoot = doc.FirstChildElement("streaming_caps");
object.SupportedProtocols = Util::GetXmlFirstChildElementTextAsInt(elRoot, "protocols");
object.SupportedTranscoders = Util::GetXmlFirstChildElementTextAsInt(elRoot, "transcoders");
diff --git a/pvr.dvblink/changelog.txt b/pvr.dvblink/changelog.txt
index 4f1a8e2..bf2f4d4 100644
--- a/pvr.dvblink/changelog.txt
+++ b/pvr.dvblink/changelog.txt
@@ -1,6 +1,7 @@
[B]Version 3.3.5[/B]
Fixed: Crash on startup with search timers
Fixed: Incorrect disk space display if disk size is more than 2TB
+Fixed: tinyxml2 v4 compatibility (XML_NO_ERROR -> XML_SUCCESS)
[B]Version 3.3.4[/B]
Updated: language files from Transifex
From c5e4a81e007ce2547900a713436cefe66d917fa7 Mon Sep 17 00:00:00 2001
From: dvblogic <info@dvblogic.com>
Date: Wed, 14 Sep 2016 15:27:42 +0200
Subject: [PATCH 3/3] added #include <cstdarg> to prevent compiler errors
---
lib/libdvblinkremote/dvblinkremotecommunication.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/libdvblinkremote/dvblinkremotecommunication.cpp b/lib/libdvblinkremote/dvblinkremotecommunication.cpp
index 6037c3b..a254ded 100644
--- a/lib/libdvblinkremote/dvblinkremotecommunication.cpp
+++ b/lib/libdvblinkremote/dvblinkremotecommunication.cpp
@@ -21,6 +21,7 @@
*
***************************************************************************/
+#include <cstdarg>
#include "dvblinkremoteconnection.h"
#include "xml_object_serializer.h"
#include "generic_response.h"

View File

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

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.mediaportal.tvserver"
PKG_VERSION="42c91b1"
PKG_VERSION="845479b"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

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

View File

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

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="pvr.vdr.vnsi"
PKG_VERSION="da5fdd5"
PKG_VERSION="dd95ede"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="visualization.shadertoy"
PKG_VERSION="81916a2"
PKG_VERSION="86ced78"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="kodi-theme-Estuary"
PKG_VERSION="17.0-beta2-6e9d6fb"
PKG_VERSION="17.0-beta3-7041777"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="kodi"
PKG_VERSION="17.0-beta2-6e9d6fb"
PKG_VERSION="17.0-beta3-7041777"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -1,211 +0,0 @@
diff --git a/xbmc/DatabaseManager.cpp b/xbmc/DatabaseManager.cpp
index ed0178d..6430252 100644
--- a/xbmc/DatabaseManager.cpp
+++ b/xbmc/DatabaseManager.cpp
@@ -51,7 +51,7 @@ CDatabaseManager::~CDatabaseManager()
void CDatabaseManager::Initialize(bool addonsOnly)
{
Deinitialize();
- { CAddonDatabase db; UpdateDatabase(db); }
+ { CAddonDatabase db; UpdateDatabase(db, NULL, false); }
if (addonsOnly)
return;
CLog::Log(LOGDEBUG, "%s, updating databases...", __FUNCTION__);
@@ -83,11 +83,11 @@ bool CDatabaseManager::CanOpen(const std::string &name)
return false; // db isn't even attempted to update yet
}
-void CDatabaseManager::UpdateDatabase(CDatabase &db, DatabaseSettings *settings)
+void CDatabaseManager::UpdateDatabase(CDatabase &db, DatabaseSettings *settings, bool bShowSplash)
{
std::string name = db.GetBaseDBName();
UpdateStatus(name, DB_UPDATING);
- if (db.Update(settings ? *settings : DatabaseSettings()))
+ if (db.Update(settings ? *settings : DatabaseSettings(), bShowSplash))
UpdateStatus(name, DB_READY);
else
UpdateStatus(name, DB_FAILED);
diff --git a/xbmc/DatabaseManager.h b/xbmc/DatabaseManager.h
index c3bfba5..e75aae0 100644
--- a/xbmc/DatabaseManager.h
+++ b/xbmc/DatabaseManager.h
@@ -61,7 +61,7 @@ public:
\param name the name of the database to check.
\return true if the database can be opened, false otherwise.
- */
+ */
bool CanOpen(const std::string &name);
private:
@@ -73,7 +73,7 @@ private:
enum DB_STATUS { DB_CLOSED, DB_UPDATING, DB_READY, DB_FAILED };
void UpdateStatus(const std::string &name, DB_STATUS status);
- void UpdateDatabase(CDatabase &db, DatabaseSettings *settings = NULL);
+ void UpdateDatabase(CDatabase &db, DatabaseSettings *settings = NULL, bool bShowSplash = true);
CCriticalSection m_section; ///< Critical section protecting m_dbStatus.
std::map<std::string, DB_STATUS> m_dbStatus; ///< Our database status map.
diff --git a/xbmc/dbwrappers/Database.cpp b/xbmc/dbwrappers/Database.cpp
index 4dc71c5..6d06e8f 100644
--- a/xbmc/dbwrappers/Database.cpp
+++ b/xbmc/dbwrappers/Database.cpp
@@ -29,6 +29,7 @@
#include "sqlitedataset.h"
#include "DatabaseManager.h"
#include "DbUrl.h"
+#include "utils/Splash.h"
#ifdef HAS_MYSQL
#include "mysqldataset.h"
@@ -356,7 +357,7 @@ void CDatabase::InitSettings(DatabaseSettings &dbSettings)
dbSettings.name = GetBaseDBName();
}
-bool CDatabase::Update(const DatabaseSettings &settings)
+bool CDatabase::Update(const DatabaseSettings &settings, bool bShowSplash)
{
DatabaseSettings dbSettings = settings;
InitSettings(dbSettings);
@@ -367,6 +368,7 @@ bool CDatabase::Update(const DatabaseSettings &settings)
while (version >= GetMinSchemaVersion())
{
+ std::string splashmsg;
std::string dbName = dbSettings.name;
if (version)
dbName += StringUtils::Format("%d", version);
@@ -378,6 +380,13 @@ bool CDatabase::Update(const DatabaseSettings &settings)
{
CLog::Log(LOGNOTICE, "Old database found - updating from version %i to %i", version, GetSchemaVersion());
+ if (bShowSplash)
+ {
+ splashmsg = "Database migration in progress - please wait...";
+ splashmsg += "\nMigrating database " + dbSettings.name + " from v" + StringUtils::Format("%d", version) + " to v" + StringUtils::Format("%d", GetSchemaVersion());
+ CSplash::GetInstance().Show(splashmsg);
+ }
+
bool copy_fail = false;
try
diff --git a/xbmc/dbwrappers/Database.h b/xbmc/dbwrappers/Database.h
index 0117ecd..961f486 100644
--- a/xbmc/dbwrappers/Database.h
+++ b/xbmc/dbwrappers/Database.h
@@ -42,7 +42,7 @@ public:
Filter() : fields("*") {};
Filter(const char *w) : fields("*"), where(w) {};
Filter(const std::string &w) : fields("*"), where(w) {};
-
+
void AppendField(const std::string &strField);
void AppendJoin(const std::string &strJoin);
void AppendWhere(const std::string &strWhere, bool combineWithAnd = true);
@@ -163,7 +163,7 @@ public:
protected:
friend class CDatabaseManager;
- bool Update(const DatabaseSettings &db);
+ bool Update(const DatabaseSettings &db, bool bShowSplash);
void Split(const std::string& strFileNameAndPath, std::string& strPath, std::string& strFileName);
diff --git a/xbmc/utils/Splash.cpp b/xbmc/utils/Splash.cpp
index 7e1d885..c9dd388 100644
--- a/xbmc/utils/Splash.cpp
+++ b/xbmc/utils/Splash.cpp
@@ -30,13 +30,16 @@
using namespace XFILE;
CSplash::CSplash()
- : m_image(nullptr)
{
+ m_messageLayout = NULL;
+ m_image = NULL;
+ m_layoutWasLoading = false;
}
CSplash::~CSplash()
{
delete m_image;
+ delete m_messageLayout;
}
CSplash& CSplash::GetInstance()
@@ -47,6 +50,11 @@ CSplash& CSplash::GetInstance()
void CSplash::Show()
{
+ Show("");
+}
+
+void CSplash::Show(const std::string& message)
+{
if (!m_image)
{
std::string splashImage = "special://home/media/Splash.png";
@@ -70,6 +78,34 @@ void CSplash::Show()
m_image->Render();
m_image->FreeResources();
+ // render message
+ if (!message.empty())
+ {
+ if (!m_layoutWasLoading)
+ {
+ // load arial font, white body, no shadow, size: 20, no additional styling
+ CGUIFont *messageFont = g_fontManager.LoadTTF("__splash__", "arial.ttf", 0xFFFFFFFF, 0, 24, FONT_STYLE_NORMAL, false, 1.25f, 1.0f, &res);
+ if (messageFont)
+ m_messageLayout = new CGUITextLayout(messageFont, true, 0);
+ m_layoutWasLoading = true;
+ }
+ if (m_messageLayout)
+ {
+ m_messageLayout->Update(message, 1150, false, true);
+ float textWidth, textHeight;
+ m_messageLayout->GetTextExtent(textWidth, textHeight);
+
+ int width = g_graphicsContext.GetWidth();
+ int height = g_graphicsContext.GetHeight();
+
+ // ideally place text in center of empty area below splash image
+ float y = m_image->GetTextureHeight() - 180;
+ if (y + textHeight > height) // make sure entire text is visible
+ y = height - textHeight - 30; // -30 for safe viewing area
+ m_messageLayout->RenderOutline(width/2, y, 0, 0xFF000000, XBFONT_CENTER_X, width);
+ }
+ }
+
//show it on screen
g_Windowing.EndRender();
g_graphicsContext.Flip(true, false);
diff --git a/xbmc/utils/Splash.h b/xbmc/utils/Splash.h
index d8c81c2..66fbae0 100644
--- a/xbmc/utils/Splash.h
+++ b/xbmc/utils/Splash.h
@@ -22,6 +22,7 @@
#include <string>
+class CGUITextLayout;
class CGUIImage;
class CSplash
@@ -30,6 +31,7 @@ public:
static CSplash& GetInstance();
void Show();
+ void Show(const std::string& message);
protected:
CSplash();
@@ -38,5 +40,7 @@ protected:
virtual ~CSplash();
private:
+ CGUITextLayout* m_messageLayout;
CGUIImage* m_image;
+ bool m_layoutWasLoading;
};

View File

@ -1,82 +0,0 @@
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,116 +0,0 @@
From e0b1e6bd9afc7db17173200b21fcbf0084f83e78 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Mon, 19 Sep 2016 14:20:44 +0200
Subject: [PATCH] VideoPlayer: drop obsolete player method HasFrame, fix subs
for bypass renderer
---
xbmc/ApplicationPlayer.cpp | 9 ---------
xbmc/ApplicationPlayer.h | 1 -
xbmc/cores/IPlayer.h | 2 --
xbmc/cores/VideoPlayer/VideoPlayer.cpp | 5 -----
xbmc/cores/VideoPlayer/VideoPlayer.h | 1 -
xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp | 3 ++-
xbmc/video/windows/GUIWindowFullScreen.cpp | 2 +-
7 files changed, 3 insertions(+), 20 deletions(-)
diff --git a/xbmc/ApplicationPlayer.cpp b/xbmc/ApplicationPlayer.cpp
index b76134d..205cdd5 100644
--- a/xbmc/ApplicationPlayer.cpp
+++ b/xbmc/ApplicationPlayer.cpp
@@ -762,15 +762,6 @@ void CApplicationPlayer::FrameMove()
player->FrameMove();
}
-bool CApplicationPlayer::HasFrame()
-{
- std::shared_ptr<IPlayer> player = GetInternal();
- if (player)
- return player->HasFrame();
- else
- return false;
-}
-
void CApplicationPlayer::Render(bool clear, uint32_t alpha, bool gui)
{
std::shared_ptr<IPlayer> player = GetInternal();
diff --git a/xbmc/ApplicationPlayer.h b/xbmc/ApplicationPlayer.h
index d27e8df..5144a0d 100644
--- a/xbmc/ApplicationPlayer.h
+++ b/xbmc/ApplicationPlayer.h
@@ -83,7 +83,6 @@ class CApplicationPlayer
void SetPlaySpeed(float speed);
void FrameMove();
- bool HasFrame();
void Render(bool clear, uint32_t alpha = 255, bool gui = true);
void FlushRenderer();
void SetRenderViewMode(int mode);
diff --git a/xbmc/cores/IPlayer.h b/xbmc/cores/IPlayer.h
index 7bc005b..d004a4e 100644
--- a/xbmc/cores/IPlayer.h
+++ b/xbmc/cores/IPlayer.h
@@ -389,8 +389,6 @@ class IPlayer
*/
virtual void FrameMove() {};
- virtual bool HasFrame() { return false; };
-
virtual void Render(bool clear, uint32_t alpha = 255, bool gui = true) {};
virtual void FlushRenderer() {};
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.cpp b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
index b4a604c..ac67923 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.cpp
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
@@ -5039,11 +5039,6 @@ void CVideoPlayer::FrameMove()
m_renderManager.FrameMove();
}
-bool CVideoPlayer::HasFrame()
-{
- return m_renderManager.HasFrame();
-}
-
void CVideoPlayer::Render(bool clear, uint32_t alpha, bool gui)
{
m_renderManager.Render(clear, 0, alpha, gui);
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.h b/xbmc/cores/VideoPlayer/VideoPlayer.h
index 3f39706..d022ce2 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.h
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.h
@@ -368,7 +368,6 @@ class CVideoPlayer : public IPlayer, public CThread, public IVideoPlayer, public
virtual bool SwitchChannel(const PVR::CPVRChannelPtr &channel);
virtual void FrameMove();
- virtual bool HasFrame();
virtual void Render(bool clear, uint32_t alpha = 255, bool gui = true);
virtual void FlushRenderer();
virtual void SetRenderViewMode(int mode);
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
index bbdd403..52d418b 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
@@ -960,7 +960,8 @@ bool CRenderManager::IsGuiLayer()
if (!m_pRenderer)
return false;
- if (m_pRenderer->IsGuiLayer() || m_renderedOverlay || m_overlays.HasOverlay(m_presentsource))
+ if ((m_pRenderer->IsGuiLayer() && HasFrame()) ||
+ m_renderedOverlay || m_overlays.HasOverlay(m_presentsource))
return true;
if (m_renderDebug && m_debugTimer.IsTimePast())
diff --git a/xbmc/video/windows/GUIWindowFullScreen.cpp b/xbmc/video/windows/GUIWindowFullScreen.cpp
index 7263752..72da165 100644
--- a/xbmc/video/windows/GUIWindowFullScreen.cpp
+++ b/xbmc/video/windows/GUIWindowFullScreen.cpp
@@ -485,7 +485,7 @@ void CGUIWindowFullScreen::FrameMove()
void CGUIWindowFullScreen::Process(unsigned int currentTime, CDirtyRegionList &dirtyregion)
{
- if (g_application.m_pPlayer->IsRenderingGuiLayer() && g_application.m_pPlayer->HasFrame())
+ if (g_application.m_pPlayer->IsRenderingGuiLayer())
MarkDirtyRegion();
CGUIWindow::Process(currentTime, dirtyregion);

View File

@ -1,44 +0,0 @@
From 56fc55be3f7e8361ce95dab9131a6d5bfeae1a7d Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Mon, 19 Sep 2016 14:45:29 +0200
Subject: [PATCH] VideoPlayer: make processInfo a smart pointer, fixes mem leak
---
xbmc/cores/VideoPlayer/VideoPlayer.cpp | 2 +-
xbmc/cores/VideoPlayer/VideoPlayer.h | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.cpp b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
index b4a604c..7c5b243 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.cpp
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
@@ -663,7 +663,7 @@ CVideoPlayer::CVideoPlayer(IPlayerCallback& callback)
m_SkipCommercials = true;
- m_processInfo = CProcessInfo::CreateInstance();
+ m_processInfo.reset(CProcessInfo::CreateInstance());
CreatePlayers();
m_displayLost = false;
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.h b/xbmc/cores/VideoPlayer/VideoPlayer.h
index 3f39706..2684376 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.h
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.h
@@ -21,6 +21,7 @@
*/
#include <atomic>
+#include <memory>
#include <utility>
#include <vector>
#include "cores/IPlayer.h"
@@ -503,7 +504,7 @@ class CVideoPlayer : public IPlayer, public CThread, public IVideoPlayer, public
XbmcThreads::EndTime m_cachingTimer;
CFileItem m_item;
XbmcThreads::EndTime m_ChannelEntryTimeOut;
- CProcessInfo *m_processInfo;
+ std::unique_ptr<CProcessInfo> m_processInfo;
CCurrentStream m_CurrentAudio;
CCurrentStream m_CurrentVideo;

View File

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

View File

@ -17,7 +17,7 @@
################################################################################
PKG_NAME="bcm2835-bootloader"
PKG_VERSION="ad8608c"
PKG_VERSION="ec63df1"
PKG_REV="1"
PKG_ARCH="arm"
PKG_LICENSE="nonfree"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff