[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#854631: unblock: kodi/2:17.0+dfsg1-2



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Dear Release Team,

Current kodi version in Stretch is a Release Candidate
(2:17.0~rc3+dfsg1-2) while upstream just released final
Kodi 17.0.

I believe the final version would be a better fit for
Stretch, while the diff between rc3 and final contains
quite a few bug fixes and translation updates:

https://github.com/xbmc/xbmc/compare/4d93228e19afa928d08327...a10c5048f2487bd9b2dc1f35d2fee48a2594

At the moment 2:17.0+dfsg1-1 is uploaded to experimental only and I
would like to upload 2:17.0+dfsg1-2 with the fix for #854463 (RC) to
unstable if it would be allowed to migrate to testing.

Otherwise I will just add the fix for #854463 to 2:17.0~rc3+dfsg1-2 and
upload that minimal change to unstable as 2:17.0~rc3+dfsg1-3.

Please share your opinion about the options.

The attached patch 

Cheers,
Balint

unblock kodi/2:17.0+dfsg1-2
diff --git a/.gitignore b/.gitignore
index 9c8dc28..c0631de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -564,3 +564,6 @@ exclude_dll.txt
 
 #certificates
 /system/certs/
+
+#Workaround for autotools right before final Krypton
+xbmc/cores/AudioEngine/AEDefines_override.h
diff --git a/addons/repository.xbmc.org/addon.xml b/addons/repository.xbmc.org/addon.xml
index cc98ca3..54e1a20 100644
--- a/addons/repository.xbmc.org/addon.xml
+++ b/addons/repository.xbmc.org/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="repository.xbmc.org"
 		name="Kodi Add-on repository"
-		version="2.5.7"
+		version="2.5.8"
 		provider-name="Team Kodi">
   <requires>
     <import addon="xbmc.addon" version="12.0.0"/>
@@ -97,7 +97,7 @@
 		<description lang="fr_FR">Télécharger et installer des extensions à partir du dépôt officiel Kodi.tv.[CR]En utilisant le dépôt officiel, vous bénéficierez de notre service de serveurs miroirs permettant de télécharger rapidement depuis une région proche de chez vous.[CR]Toutes les extensions de ce dépôt ont été testées sommairement, si vous trouvez une extension corrompue ou inutilisable, veuillez en informer l'�quipe Kodi afin que nous puissions prendre les mesures nécessaires.</description>
 		<description lang="gl_ES">Descargar e instalar Engadidos dende o repositorio oficial de Kodi.tv.[CR] Empregando o repositorio oficial, vostede poderá gozar das vantaxes do seu extenso servizo de replicación de ficheiros que lle permite unhas descargas máis rápidas dende unha rexión preto a vostede.[CR] Tódolos Engadidos deste repositorio pasaron por comprobacións básicas. Se atopa algún Engadido roto ou non funcional, por favor reporteo ó equipo de Kodi para que poidan actuar en consecuencia.</description>
 		<description lang="he_IL">×?×?ר×?×? ×?×?תקנת ×?ר×?×?×?ת ×?×?×?×?ר ×?ר×?×?×?ת Kodi.tv ×?רש×?×?.[CR] ש×?×?×?ש ×?×?×?×?ר ×?רש×?×? ×?×?פשר ×?נצ×? ×?ת ש×?ר×?ת ש×?ק×?×£ ×?ק×?צ×?×? ש×? Kodi.tv ×?×¢×?×?ר ×?×?×?ר×?×? ×?×?ר ×?×?תר ×?×?שרת ×?קר×?×? ×?×?×?תר.[CR] ×?×? ×?×?ר×?×?×?ת ×?×?×?×?ר ×?×? ×¢×?ר×? ×?×?×?ק×? ×?ס×?ס×?ת. ×?ש ×?×?×?×?×? ×?צ×?×?ת ×?פ×?ת×?×? ש×? Kodi ×¢×? ×?×? ×?ר×?×?×? שנ×?צ×?×? ×?×?×? תק×?× ×? ×?×? ש×?×? ×¢×?×?×?ת ×¢"×? שתת×?צע ×?פע×?×?×? ×?×?ת×?×?×?×?.</description>
-		<description lang="hr_HR">Preuzmite i instalirajte dodatke sa službenog Kodi.tv repozitorija dodataka.[CR] KoriÅ¡tenjem službenog repozitorija bit Ä?ete u moguÄ?nosti iskoristiti prednosti usluge naÅ¡eg brzog zrcalnog poslužitelja datoteka, da bi mogli brže preuzimati iz regije koje je bliže vaÅ¡oj lokaciji.[CR] Svi dodaci na ovom repozitoriju proÅ¡li su osnovno testiranje, u sluÄ?aju da primijetite neispravan dodatak, molimo vas da to prijavite Kodi timu koji Ä?e zatim poduzeti potrebne korake.</description>
+		<description lang="hr_HR">Preuzmite i instalirajte dodatke sa službenog Kodi.tv repozitorija dodataka.[CR] KoriÅ¡tenjem službenog repozitorija bit Ä?ete u moguÄ?nosti iskoristiti prednosti usluge naÅ¡eg brzog zrcalnog poslužitelja datoteka, kako bi mogli brže preuzimati iz regije koje je bliže vaÅ¡oj lokaciji.[CR] Svi dodaci na ovom repozitoriju proÅ¡li su osnovno testiranje, u sluÄ?aju da primijetite neispravan dodatak, molimo vas da to prijavite Kodi timu koji Ä?e zatim poduzeti potrebne korake.</description>
 		<description lang="hu_HU">KiegészítÅ?k letöltése és telepítése a hivatalos Kodi.tv tárolóhelyrÅ?l.[CR] A hivatalos tárolóhely használatával kihasználhatod szerteágazó tükör-kiszolgáló hálózatunkat, ami segít a gyorsabb letöltésben egy hozzád közelebb esÅ? körzet használatával.[CR]  Minden kiegészítÅ? ezen a tárolóhelyen átment egy alaptesztelésen. Ha mégis hibás vagy nem működÅ? kiegészítÅ?t találsz, kérünk jelezd az Kodi csapatnak, hogy megtegyük a szükséges lépéseket.</description>
 		<description lang="id_ID">Unduh dan pasang pengaya dari repositori pengaya resmi Kodi.tv. [CR] Dengan menggunakan repositori resmi anda akan mendapat keuntungan dari miror berkas kami yang luas dimana dapat membantu anda untuk lebih cepat mengunduh dari daerah yang dekat dengan anda. [CR] Semua pengaya pada repository telah melalui uji coba standar, jika anda menemukan pengaya yang rusak atau tidak bekerja tolong laporkan kepada tim Kodi agar kami bisa menindak lanjutinya.</description>
 		<description lang="is_IS">Sækja og setja inn viðbætur frá hinu viðurkennda Kodi.tv viðbóta safni.[CR] Með því að nota þetta safn getur þú nýtt þér möguleikann á fullkmonni speglunar þjónustu sem hjálpar við að sækja viðbætur hraðar frá landsvæði nálægt þér.[CR] Allar viðbætur í þessu safni hafa gengið undir grunn prófanir, ef þú finnur viðbætur sem eru bilaðar eða virka ekki vinsamlegast látið Kodi teymið vita svo við getum gert eitthvað í málinu.</description>
@@ -120,7 +120,7 @@
 		<description lang="sl_SI">Prenos in namestitev dodatkov iz uradnega skladiÅ¡Ä?a Kodi.tv.[CR] Z uporabo uradnega skladiÅ¡Ä?a, boste lahko izkoristili hitrejÅ¡o povezavo, ki bo izbrana glede na vaÅ¡o lokacijo.[CR] Vsi dodatki tega skladiÅ¡Ä?a so bili osnovno stestirani, Ä?e pa boste naÅ¡li pokvarjen ali nedelujoÄ? dodatek, to sporoÄ?ite ekipi Kodi, da bomo lahko odpravili napake.</description>
 		<description lang="sr_RS">Ð?Ñ?еÑ?змиÑ?е и инÑ?Ñ?алиÑ?аÑ?Ñ?е додаÑ?ке из Ð?ваниÑ?ног Kodi.tv Ñ?пÑ?емиÑ?Ñ?а додаÑ?ака.[CR] Ð?оÑ?иÑ?Ñ?еÑ?ем званиÑ?ног СпÑ?емиÑ?Ñ?а моÑ?иÑ?еÑ?е да иÑ?коÑ?иÑ?Ñ?иÑ?е пÑ?едноÑ?Ñ?и наÑ?ег Ñ?еÑ?виÑ?а копиÑ?а Ñ?аÑ?лова коÑ?и Ñ?е вам помоÑ?и пÑ?иликом бÑ?жег пÑ?еÑ?зимаÑ?а из Ñ?егиона ближег ваÑ?оÑ? локаÑ?иÑ?и.[CR] Сви додаÑ?и Ñ? овом Ñ?пÑ?емиÑ?Ñ?Ñ? пÑ?оÑ?ли Ñ?Ñ? оÑ?новно Ñ?еÑ?Ñ?иÑ?аÑ?е, Ñ? Ñ?лÑ?Ñ?аÑ?Ñ? да пÑ?онаÑ?еÑ?е неиÑ?пÑ?аван додаÑ?ак молимо ваÑ? да Ñ?о пÑ?иÑ?авиÑ?е Kodi Ñ?имÑ? коÑ?и Ñ?е заÑ?им пÑ?едÑ?зеÑ?и неопÑ?одне меÑ?е.</description>
 		<description lang="sr_RS@latin">Preuzmi i instaliraj dodatne programe iz ZvaniÄ?nog Kodi.tv spremiÅ¡ta za dodatne programe.[CR] KoriÅ¡Ä?enjem zvaniÄ?nog SpremiÅ¡ta moÄ?i Ä?ete da iskoristite prednosti naÅ¡eg servisa kopija fajlova koji Ä?e vam pomoÄ?i prilikom bržeg preuzimanja iz regiona bližeg vaÅ¡oj lokaciji.[CR] Svi dodatni programi u ovom spremiÅ¡tu proÅ¡li su osnovno testiranje, u sluÄ?aju da pronaÄ?ete neispravan dodatni program molimo vas da to prijavite Kodi timu koji Ä?e zatim preduzeti neophodne mere.</description>
-		<description lang="sv_SE">Ladda ner och installera tillägg från det officiella Kodi.tv tilläggsförrådet.[CR]Genom att använda det officiella förrådet kommer du att få fördelen att kunna använda vår omfattande spegeltjänst som kommer att hjälpa dig till snabbare nedladdningar från en plats nära dig.[CR]Alla tillägg i detta förråd har genomgått grundläggande tester. Hittar du ett trasigt eller icke fungerande tillägg, vänligen meddela detta till Team Kodi så att vi kan vidta nödvändiga åtgärder.</description>
+		<description lang="sv_SE">Ladda ner och installera tillägg från det officiella Kodi.tv tilläggsförrådet.[CR] Genom att använda det officiella förrådet kommer du att få fördelen att kunna använda vår omfattande spegeltjänst som kommer att hjälpa dig till snabbare nedladdningar från en plats nära dig.[CR] Alla tillägg i detta förråd har genomgått grundläggande tester. Hittar du ett trasigt eller icke fungerande tillägg, vänligen meddela detta till Team Kodi så att vi kan vidta nödvändiga åtgärder.</description>
 		<description lang="szl">Sebiyrej i insztaluj przidÅ?wki z ôficjalnygo repozytoriÅ?m Kodi.tv.[CR] Przi Używaniu ôficjalnygo repozytoriÅ?m używÅ?sz serwerÅ?w zdrzadÅ?owych, rozsianych po calistym Å?wiecie. Ã?biyrany je tyn, kery je nÅ?jbliżyj ciebie, co istuje srogõ wartkoÅ?Ä? skuplowaniÅ?.[CR]Wszyjske przidÅ?wki w tym repozytoriÅ?m sÅ?m testowane, ale mogÅ?m pokÅ?zaÄ? sie popszniÅ?ne. ZgÅ?oÅ? wtynczÅ?s feler, coby ekipa Kodi mogÅ?a go sprÅ?wiÄ?.</description>
 		<description lang="tg_TJ">Ð?аÑ?номаҳои иловагиÑ?о аз анбоÑ?и наÑ?маÑ?зоÑ?и Kodi.tv боÑ?гиÑ?Ó£ кÑ?нед ва наÑ?б намоед.[CR]  Ð?з иÑ?Ñ?иÑ?одаи анбоÑ?и наÑ?маÑ?зоÑ?и Ñ?аÑ?мии мо ба Ñ?Ñ?мо имкониÑ?Ñ? пайдо меÑ?авад, ки Ñ?авонед Ñ?аÑ?оиÑ?и мÑ?Ñ?оÑ?идÑ?о аз Ñ?идмаÑ?и оинаи Ñ?айлии ваÑ?еÑ? ба даÑ?Ñ? оÑ?ед ва наÑ?маÑ?зоÑ?и лозимиÑ?о аз Ñ?еÑ?веÑ?и минÑ?акаи ба Ñ?Ñ?мо наздикÑ?аÑ? бо Ñ?Ñ?Ñ?Ñ?аÑ?и баланд боÑ?гиÑ?Ó£ кÑ?нед.[CR]  Ҳамаи баÑ?номаҳо аз анбоÑ?и наÑ?маÑ?зоÑ?и мо даÑ? ҳолаÑ?и Ñ?анҷиÑ?Ó£ мебоÑ?анд, бинобаÑ? ин агаÑ? Ñ?гон баÑ?номаи иловагии нÑ?Ò?Ñ?ондоÑ? Ñ? вайÑ?онÑ?Ñ?даÑ?о Ñ?бед, лÑ?Ñ?Ñ?ан даÑ? боÑ?аи он баÑ?нома ва нÑ?Ò?Ñ?он пайдоÑ?Ñ?да ба гÑ?Ñ?ӯҳи коÑ?ии Kodi гÑ?зоÑ?иÑ? диҳед, Ñ?о ин ки мо Ñ?авонем ҳамаи камбÑ?диҳои баÑ?номаҳои моÑ?о ҳал кÑ?нем.</description>
 		<description lang="th_TH">�าว���หล��ละ�ิ��ั��ส�ว��สริม �า��หล����อมูล��ร��รม�อ� Kodi.tv อย�า������า��าร.[CR]  ��ย�าร����า��หล����อมูล��ร��รมอย�า������า��าร �ุ�สามาร�����ระ�ย����า��ริ�าร���มมิ�รอร��ี��ว�า��วา��อ��รา �ี��ะ��วย�ห��าร�าว���หล��อ��ุ��ร�ว�ึ���า�ภูมิภา��ี���ล��ี�สุ�.[CR]  ส�ว��สริม �ั��หม����หล��������อมูล�ี� อยู�ภาย����าร��สอ��ั���ื���า��ล�ว ��า�ุ���ส�ว��สริม�ี��สียหายหรือ�ม��ำ�า� �รุ�า�����ีม�า� Kodi ��ื�อ�ห��ราสามาร��ำ��ิ��าร�� � �ี��ำ����.</description>
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
index abfc92b..da55803 100644
--- a/addons/resource.language.en_gb/resources/strings.po
+++ b/addons/resource.language.en_gb/resources/strings.po
@@ -16646,7 +16646,7 @@ msgstr ""
 #. Description of setting with label #14091 "Character set"
 #: system/settings/settings.xml
 msgctxt "#36116"
-msgid "Choose which character set is used for displaying text in the user interface."
+msgid "Choose which character set is used for displaying text in the user interface. This doesn't change the character set used for subtitles, for that go to Player > Language."
 msgstr ""
 
 #. Description of setting with label #14079 "Timezone country"
@@ -19654,7 +19654,21 @@ msgctxt "#38111"
 msgid "This category contains other settings for the GUI interface"
 msgstr ""
 
-#empty strings from id 38112 to 38999
+#empty strings from id 38112 to 38206
+
+#. Description of setting "Pictures -> Show EXIF picture information" with label #38207
+#: system/settings/settings.xml
+msgctxt "#38207"
+msgid "Show EXIF picture information"
+msgstr ""
+
+#. Help text of setting "Pictures -> Show EXIF picture information" with label #38208
+#: system/settings/settings.xml
+msgctxt "#38208"
+msgid "If EXIF information exists (date, time, camera used, etc.), it will be displayed."
+msgstr ""
+
+#empty strings from id 38209 to 38999
 
 #: system/settings/settings.xml
 msgctxt "#39000"
diff --git a/addons/screensaver.xbmc.builtin.dim/addon.xml b/addons/screensaver.xbmc.builtin.dim/addon.xml
index 3640853..8e56e14 100644
--- a/addons/screensaver.xbmc.builtin.dim/addon.xml
+++ b/addons/screensaver.xbmc.builtin.dim/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="screensaver.xbmc.builtin.dim"
        name="Dim"
-       version="1.0.35"
+       version="1.0.36"
        provider-name="Team Kodi">
   <extension point="xbmc.ui.screensaver" library=""/>
   <extension point="xbmc.addon.metadata">
diff --git a/addons/skin.estouchy/addon.xml b/addons/skin.estouchy/addon.xml
index d15c7e7..c5048c6 100644
--- a/addons/skin.estouchy/addon.xml
+++ b/addons/skin.estouchy/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<addon id="skin.estouchy" version="1.1.5" name="Estouchy" provider-name="Team Kodi">
+<addon id="skin.estouchy" version="1.1.7" name="Estouchy" provider-name="Team Kodi">
 	<requires>
 		<import addon="xbmc.gui" version="5.12.0"/>
 	</requires>
@@ -12,7 +12,7 @@
 		<summary lang="am_ET">á?? á?°á?½á?µá?­á?ªá?? á? á?«á??á?½ á??á?³</summary>
 		<summary lang="bg_BG">Ð?блик за Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ва Ñ? екÑ?ан Ñ?Ñ?вÑ?Ñ?виÑ?елен на допиÑ?</summary>
 		<summary lang="ca_ES">Aparença per als dispositius amb pantalla tàctil</summary>
-		<summary lang="cs_CZ">Skin pro dotyková zaÅ?ízení</summary>
+		<summary lang="cs_CZ">Vzhled pro zaÅ?ízení s dotykovou obrazovkou</summary>
 		<summary lang="de_DE">Skin für Touchscreen-Geräte</summary>
 		<summary lang="el_GR">Î?έλÏ?Ï?οÏ? για Ï?Ï?Ï?κεÏ?έÏ? με οθÏ?νη αÏ?ήÏ?</summary>
 		<summary lang="en_GB">Skin for touchscreen devices</summary>
@@ -25,6 +25,7 @@
 		<summary lang="fr_FR">Habillage pour les appareils à écran tactile</summary>
 		<summary lang="gl_ES">Pel para dispositivos táctiles</summary>
 		<summary lang="he_IL">×?×¢×?פת ×¢×?×?ר ×?תקנ×? ×?ס×? ×?×?×¢</summary>
+		<summary lang="hr_HR">Presvlaka za ureÄ?aje s dodirom na zaslon</summary>
 		<summary lang="hu_HU">Felület érintÅ?képernyÅ?s eszközöknek</summary>
 		<summary lang="it_IT">Skin per dispositivi touchscreen</summary>
 		<summary lang="ko_KR">í?°ì¹? ì?¤í?¬ë¦° 기기를 ì??í?? ì?¤í?¨</summary>
@@ -49,7 +50,7 @@
 		<description lang="af_ZA">Oortreksel ontwerp om op raakskerm toestelle soos tablette en slimfone te gebruik</description>
 		<description lang="bg_BG">Ð?бликÑ?Ñ? е Ñ?азÑ?абоÑ?ен за ползване на Ñ?Ñ?Ñ?Ñ?ойÑ?Ñ?ва, Ñ? екÑ?ан Ñ?Ñ?вÑ?Ñ?виÑ?елен на допиÑ? каÑ?о Ñ?аблеÑ? или Ñ?елеÑ?он.</description>
 		<description lang="ca_ES">Aparença dissenyada perquè s'utilitzi en dispositius amb pantalla tàctil com taules i telèfons intel·ligents</description>
-		<description lang="cs_CZ">Skin navržený pro zaÅ?ízení s dotykovou obrazovkou, jako jsou tablety a smartphony.</description>
+		<description lang="cs_CZ">Vzhled navržený pro použití na zaÅ?ízeních s dotykovou obrazovkou, jako jsou tablety a chytré telefony</description>
 		<description lang="de_DE">Dieses Skin wurde für die Benutzung mit Touchscreen-Geräten wie Tablets und Handys entworfen</description>
 		<description lang="el_GR">Î?έλÏ?Ï?οÏ? Ï?Ï?εδιαÏ?μένο για να Ï?Ï?ηÏ?ιμοÏ?οιηθεί Ï?ε Ï?Ï?Ï?κεÏ?έÏ? με οθÏ?νη αÏ?ήÏ? Ï?Ï?Ï?Ï? Ï?αμÏ?λέÏ?εÏ? και έξÏ?Ï?να κινηÏ?ά.</description>
 		<description lang="en_GB">Skin designed to be used on touchscreen devices like tablets and smartphones</description>
@@ -62,6 +63,7 @@
 		<description lang="fr_FR">Habillage conçu pour les appareils à écran tactile comme les tablettes et les téléphones</description>
 		<description lang="gl_ES">Pel deseñada para se empregar en dispositivos táctiles como tabletas e móbiles</description>
 		<description lang="he_IL">×?×¢×?פת ×?×?×?×¢×?ת ×?ש×?×?×?ש ×?×?תקנ×? ×?ס×? ×?×?×¢ ×?×?×?×? ×?×?×?×?×? ×?ס×?×?ר×?פ×?×?</description>
+		<description lang="hr_HR">Presvlaka dizajnirana za koriÅ¡tenje na ureÄ?ajima s dodirom na zaslon poput tableta i pametnih telefona</description>
 		<description lang="hu_HU">Egy érintÅ?képernyÅ?s eszközökre, például táblagépekre és okostelefonokra tervezett felület</description>
 		<description lang="it_IT">Skin progettata per essere usata su dispositivi touchscreen come tablet e smartphone</description>
 		<description lang="ko_KR">í??ë¸?릿ì?´ë?? ì?¤ë§?í?¸í?°ê³¼ ê°?ì?? í?°ì¹? ì?¤í?¬ë¦° 기기ì??ì?? ì?¬ì?©í?  ì?? ì??ê²? ë??ì??ì?¸í?? ì?¤í?¨</description>
diff --git a/addons/skin.estouchy/changelog.txt b/addons/skin.estouchy/changelog.txt
index 336b273..aea6d75 100644
--- a/addons/skin.estouchy/changelog.txt
+++ b/addons/skin.estouchy/changelog.txt
@@ -1,3 +1,25 @@
+V1.1.7
+- Add scrollbar to guide view
+- Align shutdown button
+
+V1.1.6
+- Updated language files from Transifex
+
+V1.1.5
+- Updated language files from Transifex
+
+V1.1.4
+- Updated language files from Transifex
+
+V1.1.3
+- Updated language files from Transifex
+
+V1.1.2
+- Updated language files from Transifex
+
+V1.1.1
+- Updated language files from Transifex
+
 V1.1.0
 - Redesign
 
diff --git a/addons/skin.estouchy/language/resource.language.cs_cz/strings.po b/addons/skin.estouchy/language/resource.language.cs_cz/strings.po
index ae34d41..49d9e53 100644
--- a/addons/skin.estouchy/language/resource.language.cs_cz/strings.po
+++ b/addons/skin.estouchy/language/resource.language.cs_cz/strings.po
@@ -34,7 +34,7 @@ msgstr "Možnosti vizualizace"
 
 msgctxt "#31006"
 msgid "Visualization Presets"
-msgstr "PÅ?ednastavení vizualizace"
+msgstr "PÅ?edvolby vizualizace"
 
 msgctxt "#31007"
 msgid "Context Menu"
@@ -42,7 +42,7 @@ msgstr "Místní nabídka"
 
 msgctxt "#31009"
 msgid "Working..."
-msgstr "Pracuji..."
+msgstr "Zpracovávání..."
 
 msgctxt "#31011"
 msgid "Recent"
@@ -54,7 +54,7 @@ msgstr "Filmy"
 
 msgctxt "#31014"
 msgid "Episodes"
-msgstr "Epizod(y)"
+msgstr "Epizody"
 
 msgctxt "#31016"
 msgid "Albums"
@@ -94,11 +94,11 @@ msgstr "Ä?as ukonÄ?ení"
 
 msgctxt "#31050"
 msgid "Sort: Ascending"
-msgstr "Å?azení: vzestupnÄ?"
+msgstr "Å?azení: VzestupnÄ?"
 
 msgctxt "#31051"
 msgid "Sort: Descending"
-msgstr "Å?azení: sestupnÄ?"
+msgstr "Å?azení: SestupnÄ?"
 
 msgctxt "#31055"
 msgid "Open playlist"
@@ -144,6 +144,10 @@ msgctxt "#31303"
 msgid "Data provider"
 msgstr "Poskytovatel dat"
 
+msgctxt "#31309"
+msgid "System Memory Used:"
+msgstr "Použitá systémová pamÄ?Å¥:"
+
 msgctxt "#31320"
 msgid "Last Logged In"
 msgstr "Naposledy pÅ?ihlášen"
@@ -154,7 +158,7 @@ msgstr "Vysíláno"
 
 msgctxt "#31355"
 msgid "Video Menu"
-msgstr "Menu videa"
+msgstr "Nabídka videa"
 
 msgctxt "#31356"
 msgid "Download Subtitles"
@@ -166,23 +170,59 @@ msgstr "Teletext"
 
 msgctxt "#31390"
 msgid "Skin default"
-msgstr "Výchozí vzhled"
+msgstr "Výchozí nastavení vzhledu"
 
 msgctxt "#31391"
 msgid "Arial based"
-msgstr "Písmo Arial"
+msgstr "Založeno na Arial"
 
 msgctxt "#31400"
 msgid "Change the skin · Set language and region · Change file listing options · Set up a screensaver"
-msgstr "ZmÄ?nit vzhled · Nastavit jazyk a region · ZmÄ?nit možnosti výpisu souborů · Nastavit spoÅ?iÄ? obrazovky"
+msgstr "ZmÄ?Å?te vzhled · Nastavte jazyk a region · ZmÄ?Å?te možnosti výpisu souborů · Nastavte spoÅ?iÄ? obrazovky"
+
+msgctxt "#31405"
+msgid "Configure & manage media sharing services · Configure & manage the weather service"
+msgstr "Konfigurujte a spravujte služby sdílení médií · Konfigurujte a spravujte služby poÄ?así"
+
+msgctxt "#31406"
+msgid "Configure display · Configure audio · Configure internet access · Configure power saving· Configure logging"
+msgstr "Konfigurujte obrazovku · Konfigurujte zvuk · Konfigurujte pÅ?ístup k internetu · Konfigurujte úsporu energie · Konfigurujte protokolování"
 
 msgctxt "#31407"
 msgid "Manage your installed add-ons · Browse for and install add-ons from kodi.tv · Modify add-on settings"
-msgstr "Spravujte nainstalované doplÅ?ky · Procházejte a instalujte doplÅ?ky z kodi.tv · Upravujte nastavení doplÅ?ků"
+msgstr "Spravujte nainstalované doplÅ?ky · Procházejte a instalujte doplÅ?ky z kodi.tv · Upravte nastavení doplÅ?ků"
+
+msgctxt "#31408"
+msgid "Configure actions that can be used during playback · Configure how media content is played"
+msgstr "Konfigurujte akce, které mohou být použity bÄ?hem pÅ?ehrávání · Konfigurujte způsob pÅ?ehrávání médií"
+
+msgctxt "#31409"
+msgid "Configure library sources · Show the media lists display content · Configure how library lists are navigated"
+msgstr "Konfigurujte zdroje knihovny · Upravte obsah zobrazení seznamu médií · Konfigurujte způsob navigace v seznamech knihovny"
+
+msgctxt "#31410"
+msgid "Configure skin · Configure region · Configure control · Configure screensaver · Configure master lock"
+msgstr "Konfigurujte vzhled · Konfigurujte region · Konfigurujte ovládání · Konfigurujte spoÅ?iÄ? obrazovky · Konfigurujte hlavní zámek"
+
+msgctxt "#31411"
+msgid "Configure your profiles · Set locking options · Enable login screen"
+msgstr "Konfigurujte své profily · Nastavte možnosti uzamknutí · Povolte pÅ?ihlaÅ¡ovací obrazovku"
+
+msgctxt "#31412"
+msgid "Display system information · Hardware statistics · Check storage availability · View network configuration"
+msgstr "Zobrazte informace o systému · Hardwarové statistiky · Zkontrolujte dostupnost úložiÅ¡tÄ? · Zobrazte konfiguraci sítÄ?"
 
 msgctxt "#31421"
 msgid "Select your Kodi user Profile[CR]to login and continue"
-msgstr "Vyberte váš uživatelské profil Kodi[CR]pro pÅ?ihlášení a pokraÄ?ování"
+msgstr "Vyberte svůj uživatelský profil Kodi[CR]pro pÅ?ihlášení a pokraÄ?ování"
+
+msgctxt "#31548"
+msgid "Home menu"
+msgstr "Domovská nabídka"
+
+msgctxt "#31549"
+msgid "Home Add-ons"
+msgstr "DoplÅ?ky na domovské obrazovce"
 
 msgctxt "#31550"
 msgid "Backgrounds"
@@ -190,11 +230,11 @@ msgstr "Pozadí"
 
 msgctxt "#31551"
 msgid "Add-on Shortcut"
-msgstr "Zkratka rozšíÅ?ení"
+msgstr "Klávesová zkratka doplÅ?ku"
 
 msgctxt "#31552"
 msgid "SYNC"
-msgstr "SYNCHRONIZUJ"
+msgstr "SYNCHRONIZOVAT"
 
 msgctxt "#31553"
 msgid "Use Custom Background"
@@ -206,11 +246,11 @@ msgstr "Pozadí:"
 
 msgctxt "#31555"
 msgid "Configure TV settings · Change full screen info · Manage EPG data settings"
-msgstr "Konfiguruj nastavení TV · ZmÄ?Å? celoobrazovkové info · Spravuj nastaveni EPG"
+msgstr "Konfigurujte nastavení TV · ZmÄ?Å?te informace na celé obrazovce · Spravujte data televizního programu"
 
 msgctxt "#31556"
 msgid "Live TV"
-msgstr "Televize"
+msgstr "Živé vysílání"
 
 msgctxt "#31557"
 msgid "Hide video background"
@@ -238,7 +278,7 @@ msgstr "PÅ?ejmenovat skupinu"
 
 msgctxt "#31563"
 msgid "Delete Group"
-msgstr "Smazat skupinu"
+msgstr "Odstranit skupinu"
 
 msgctxt "#31564"
 msgid "Show hidden"
@@ -246,7 +286,7 @@ msgstr "Zobrazit skryté"
 
 msgctxt "#31565"
 msgid "Show deleted"
-msgstr "Zobrazit smazané"
+msgstr "Zobrazit odstranÄ?né"
 
 msgctxt "#31900"
 msgid "First Run"
@@ -254,16 +294,16 @@ msgstr "První spuÅ¡tÄ?ní"
 
 msgctxt "#31901"
 msgid "There are two things to know about navigating Estouchy"
-msgstr "MÄ?li byste vÄ?dÄ?t dvÄ? vÄ?ci o navigování v Estouchy"
+msgstr "O navigování v Estouchy byste mÄ?li vÄ?dÄ?t dvÄ? vÄ?ci "
 
 msgctxt "#31902"
 msgid "The Kodi logo functions as a 'HOME' button. Whenever you touch it, you will be taken back to the home screen."
-msgstr "Kodi logo slouží jako tlaÄ?ítko 'DOMÅ®'. Kdykoliv ho stisknete, pÅ?epnete se zpÄ?t na domovskou obrazovku."
+msgstr "Logo Kodi slouží jako tlaÄ?ítko 'DOMÅ®'. Kdykoliv se ho dotknete, pÅ?epnete se zpÄ?t na domovskou obrazovku."
 
 msgctxt "#31903"
 msgid "When you are playing audio or video, the item title will appear at the top of the screen. Touching it will take you to the fullscreen visualization or video window."
-msgstr "Kdykoliv pÅ?ehrajete hudbu nebo video, název této položky se zobrazí na horním okraji obrazovky. Pokud na nÄ?j kliknete, zobrazí se video nebo vizualizace v celoobrazovkovém režimu."
+msgstr "Když pÅ?ehráváte hudbu nebo video, objeví se na horním okraji obrazovky název položky. Pokud se ho dotknete, pÅ?epnete se do okna vizualizace nebo videa na celou obrazovku."
 
 msgctxt "#31904"
 msgid "Now Playing Title..."
-msgstr "Nyní pÅ?ehrávám..."
+msgstr "Nyní se pÅ?ehrává..."
diff --git a/addons/skin.estouchy/language/resource.language.hr_hr/strings.po b/addons/skin.estouchy/language/resource.language.hr_hr/strings.po
index 167cb05..fd8e41d 100644
--- a/addons/skin.estouchy/language/resource.language.hr_hr/strings.po
+++ b/addons/skin.estouchy/language/resource.language.hr_hr/strings.po
@@ -38,12 +38,16 @@ msgstr "Predlošci vizualizacije"
 
 msgctxt "#31007"
 msgid "Context Menu"
-msgstr "Dodatni izbornik"
+msgstr "Izbornik sadržaja"
 
 msgctxt "#31009"
 msgid "Working..."
 msgstr "ObraÄ?ivanje..."
 
+msgctxt "#31011"
+msgid "Recent"
+msgstr "Nedavno"
+
 msgctxt "#31013"
 msgid "Movies"
 msgstr "Filmovi"
@@ -68,6 +72,10 @@ msgctxt "#31038"
 msgid "Login"
 msgstr "Prijava"
 
+msgctxt "#31039"
+msgid "Updated:"
+msgstr "Nadopunjeno:"
+
 msgctxt "#31044"
 msgid "FAST FORWARD"
 msgstr "PREMOTAVANJE UNAPRIJED"
@@ -78,7 +86,7 @@ msgstr "PREMOTAVANJE UNAZAD"
 
 msgctxt "#31046"
 msgid "Play speed"
-msgstr "Brzina izvoÄ?enja"
+msgstr "Brzina reprodukcije"
 
 msgctxt "#31049"
 msgid "End Time"
@@ -106,7 +114,7 @@ msgstr "Zatvori popis izvoÄ?enja"
 
 msgctxt "#31058"
 msgid "System music files"
-msgstr "Glazbene datoteke sustava"
+msgstr "ZvuÄ?ne datoteke sustava"
 
 msgctxt "#31059"
 msgid "Current playlist"
@@ -130,12 +138,16 @@ msgstr "Trenutna temp."
 
 msgctxt "#31301"
 msgid "Last Updated"
-msgstr "Posljednje ažuriranje"
+msgstr "Posljednja nadopuna"
 
 msgctxt "#31303"
 msgid "Data provider"
 msgstr "Pružatelj podataka"
 
+msgctxt "#31309"
+msgid "System Memory Used:"
+msgstr "Korištenje memorije:"
+
 msgctxt "#31320"
 msgid "Last Logged In"
 msgstr "Posljednji put prijavljeni"
@@ -168,10 +180,50 @@ msgctxt "#31400"
 msgid "Change the skin · Set language and region · Change file listing options · Set up a screensaver"
 msgstr "Promijenite presvlaku · Postavite jezik i regiju · Izmijenite moguÄ?nosti popisa datoteka   · Postavite Ä?uvara zaslona"
 
+msgctxt "#31405"
+msgid "Configure & manage media sharing services · Configure & manage the weather service"
+msgstr "Prilagodite i upravljajte uslugama dijeljenja medija · Prilagodite i upravljajte uslugama vremenske prognoze"
+
+msgctxt "#31406"
+msgid "Configure display · Configure audio · Configure internet access · Configure power saving· Configure logging"
+msgstr "Prilagodite zaslon · Prilagodite zvuk · Prilagodite pristup internetu · Prilagodite štednju energije · Prilagodite zapisivanje"
+
+msgctxt "#31407"
+msgid "Manage your installed add-ons · Browse for and install add-ons from kodi.tv · Modify add-on settings"
+msgstr "Prilagodite vaše instalirane dodatke · Pregledavajte i instalirajte dodatke s kodi.tv · Prilagodite postavke dodatka"
+
+msgctxt "#31408"
+msgid "Configure actions that can be used during playback · Configure how media content is played"
+msgstr "Prilagodite radnje koje se koriste tijekom reprodukcije · Prilagodite naÄ?in reprodukcije medijskog sadržaja"
+
+msgctxt "#31409"
+msgid "Configure library sources · Show the media lists display content · Configure how library lists are navigated"
+msgstr "Prilagodite izvore zbirke · Prilagodite kako zbirka prikazuje medijski sadržaj · Prilagodite kako se upravlja prikazom zbirke"
+
+msgctxt "#31410"
+msgid "Configure skin · Configure region · Configure control · Configure screensaver · Configure master lock"
+msgstr "Prilagodite presvlaku · Prilagodite lokalizaciju · Prilagodite upravljanje · Prilagodite Ä?uvar zaslona · Prilagodite glavno zakljuÄ?avanje"
+
+msgctxt "#31411"
+msgid "Configure your profiles · Set locking options · Enable login screen"
+msgstr "Prilagodite svoje profile · Postavite moguÄ?nosti zakljuÄ?avanja · OmoguÄ?ite zaslon prijave"
+
+msgctxt "#31412"
+msgid "Display system information · Hardware statistics · Check storage availability · View network configuration"
+msgstr "Prikaz informacija sustava · Statistika hardvera · Provjera ureÄ?aja pohrane · Prikaz postavka mreže"
+
 msgctxt "#31421"
 msgid "Select your Kodi user Profile[CR]to login and continue"
 msgstr "Odaberite svoj Kodi korisniÄ?ki profil[CR]za prijavu i nastavite"
 
+msgctxt "#31548"
+msgid "Home menu"
+msgstr "PoÄ?etni izbornik"
+
+msgctxt "#31549"
+msgid "Home Add-ons"
+msgstr "PoÄ?etni dodaci"
+
 msgctxt "#31550"
 msgid "Backgrounds"
 msgstr "Pozadine"
@@ -180,14 +232,38 @@ msgctxt "#31551"
 msgid "Add-on Shortcut"
 msgstr "PreÄ?ac dodataka"
 
+msgctxt "#31552"
+msgid "SYNC"
+msgstr "USKLADI"
+
+msgctxt "#31553"
+msgid "Use Custom Background"
+msgstr "Koristi prilagoÄ?enu pozadinu"
+
+msgctxt "#31554"
+msgid "Background:"
+msgstr "Pozadina:"
+
+msgctxt "#31555"
+msgid "Configure TV settings · Change full screen info · Manage EPG data settings"
+msgstr "Prilagodite postavke televizije · Prilagodite cijelozaslonske informacije · Upravljajte postavkama EPG vodiÄ?a"
+
 msgctxt "#31556"
 msgid "Live TV"
-msgstr "TV uživo"
+msgstr "Televizija"
 
 msgctxt "#31557"
 msgid "Hide video background"
 msgstr "Sakrij video pozadinu"
 
+msgctxt "#31558"
+msgid "Hide visualization background"
+msgstr "Sakrij vizualizacije pozadine"
+
+msgctxt "#31559"
+msgid "Channel settings"
+msgstr "Postavke programa"
+
 msgctxt "#31560"
 msgid "Available groups"
 msgstr "Dostupne grupe"
@@ -203,3 +279,27 @@ msgstr "Preimenuj grupu"
 msgctxt "#31563"
 msgid "Delete Group"
 msgstr "Obriši grupu"
+
+msgctxt "#31564"
+msgid "Show hidden"
+msgstr "Prikaži skriveno"
+
+msgctxt "#31565"
+msgid "Show deleted"
+msgstr "Prikaži obrisano"
+
+msgctxt "#31901"
+msgid "There are two things to know about navigating Estouchy"
+msgstr "Postoje dvije stvari koje morate znati o upravljanju s Estouchyem"
+
+msgctxt "#31902"
+msgid "The Kodi logo functions as a 'HOME' button. Whenever you touch it, you will be taken back to the home screen."
+msgstr "Funkcija Kodi logotipa je poput 'HOME' tipke. Kada ju dodirnete, vratit Ä?ete se natrag na poÄ?etni zaslon."
+
+msgctxt "#31903"
+msgid "When you are playing audio or video, the item title will appear at the top of the screen. Touching it will take you to the fullscreen visualization or video window."
+msgstr "Kada reproducirate glazbu ili video snimku, naslov stavke Ä?e se pojaviti na vrhu zaslona. Dodir naslova Ä?e vas odvesti u prozor vizualizacije glazbe ili cijelozaslonski prikaz video snimke."
+
+msgctxt "#31904"
+msgid "Now Playing Title..."
+msgstr "Trenutno reproducirana stavka..."
diff --git a/addons/skin.estouchy/language/resource.language.nl_nl/strings.po b/addons/skin.estouchy/language/resource.language.nl_nl/strings.po
index 38ae1ce..677a271 100644
--- a/addons/skin.estouchy/language/resource.language.nl_nl/strings.po
+++ b/addons/skin.estouchy/language/resource.language.nl_nl/strings.po
@@ -216,6 +216,14 @@ msgctxt "#31421"
 msgid "Select your Kodi user Profile[CR]to login and continue"
 msgstr "Kies je Kodi gebruikersprofiel[CR]om in te loggen en door te gaan"
 
+msgctxt "#31548"
+msgid "Home menu"
+msgstr "Begin menu"
+
+msgctxt "#31549"
+msgid "Home Add-ons"
+msgstr "Begin Add-ons"
+
 msgctxt "#31550"
 msgid "Backgrounds"
 msgstr "Achtergronden"
diff --git a/addons/skin.estouchy/language/resource.language.pt_pt/strings.po b/addons/skin.estouchy/language/resource.language.pt_pt/strings.po
index c861bf0..d3b6541 100644
--- a/addons/skin.estouchy/language/resource.language.pt_pt/strings.po
+++ b/addons/skin.estouchy/language/resource.language.pt_pt/strings.po
@@ -144,6 +144,10 @@ msgctxt "#31303"
 msgid "Data provider"
 msgstr "Fornecedor de dados"
 
+msgctxt "#31309"
+msgid "System Memory Used:"
+msgstr "Memória do sistema utilizada:"
+
 msgctxt "#31320"
 msgid "Last Logged In"
 msgstr "�ltima Ligação"
@@ -212,6 +216,14 @@ msgctxt "#31421"
 msgid "Select your Kodi user Profile[CR]to login and continue"
 msgstr "Escolha o seu perfil de utilizador do Kodi[CR]para iniciar sessão e continuar"
 
+msgctxt "#31548"
+msgid "Home menu"
+msgstr "Menu de Início"
+
+msgctxt "#31549"
+msgid "Home Add-ons"
+msgstr "Add-ons de Início"
+
 msgctxt "#31550"
 msgid "Backgrounds"
 msgstr "Fundos"
diff --git a/addons/skin.estouchy/media/icon_button_shutdown.png b/addons/skin.estouchy/media/icon_button_shutdown.png
index 75c0014..0fc018c 100644
Binary files a/addons/skin.estouchy/media/icon_button_shutdown.png and b/addons/skin.estouchy/media/icon_button_shutdown.png differ
diff --git a/addons/skin.estouchy/xml/Home.xml b/addons/skin.estouchy/xml/Home.xml
index dd85973..971f04b 100644
--- a/addons/skin.estouchy/xml/Home.xml
+++ b/addons/skin.estouchy/xml/Home.xml
@@ -153,11 +153,10 @@
 				<orientation>Horizontal</orientation>
 				<itemlayout height="120" width="120">
 					<control type="image">
-						<posx>20</posx>
-						<posy>20</posy>
-						<width>80</width>
-						<height>80</height>
-						<bordersize>12</bordersize>
+						<posx>32</posx>
+						<posy>32</posy>
+						<width>56</width>
+						<height>56</height>
 						<texture>$INFO[ListItem.Icon]</texture>
 						<aspectratio>keep</aspectratio>
 					</control>
@@ -171,11 +170,10 @@
 						<texture colordiffuse="blue">roundbutton-focus.png</texture>
 					</control>
 					<control type="image">
-						<posx>20</posx>
-						<posy>20</posy>
-						<width>80</width>
-						<height>80</height>
-						<bordersize>12</bordersize>
+						<posx>32</posx>
+						<posy>32</posy>
+						<width>56</width>
+						<height>56</height>
 						<texture>$INFO[ListItem.Icon]</texture>
 						<aspectratio>keep</aspectratio>
 					</control>
diff --git a/addons/skin.estouchy/xml/Includes.xml b/addons/skin.estouchy/xml/Includes.xml
index 738b765..c16c20b 100644
--- a/addons/skin.estouchy/xml/Includes.xml
+++ b/addons/skin.estouchy/xml/Includes.xml
@@ -310,7 +310,7 @@
 			<include>Window_OpenClose_Animation</include>
 			<posx>40r</posx>
 			<posy>120</posy>
-			<visible>Control.IsVisible(60) + ![[Window.IsVisible(TVGuide) | Window.IsVisible(RadioGuide)] + Control.IsVisible(10)]</visible>
+			<visible>Control.IsVisible(60)</visible>
 			<animation effect="slide" start="40,0" end="0,0" time="400">Visible</animation>
 			<animation effect="slide" start="0,0" end="40,0" time="400">Hidden</animation>
 			<animation effect="slide" start="0,0" end="-7,0" time="0" condition="String.IsEqual(Skin.AspectRatio,4:3)">Conditional</animation>
diff --git a/addons/skin.estouchy/xml/ViewsPVR.xml b/addons/skin.estouchy/xml/ViewsPVR.xml
index 7a89c27..d3467d7 100644
--- a/addons/skin.estouchy/xml/ViewsPVR.xml
+++ b/addons/skin.estouchy/xml/ViewsPVR.xml
@@ -182,11 +182,11 @@
 			<width>$PARAM[panel-width]</width>
 			<height>550</height>
 			<onleft>2</onleft>
-			<onright>10</onright>
+			<onright>60</onright>
 			<onup>10</onup>
 			<ondown>10</ondown>
 			<viewtype label="19069">list</viewtype>
-			<pagecontrol>10</pagecontrol>
+			<pagecontrol>60</pagecontrol>
 			<scrolltime>200</scrolltime>
 			<timeblocks>40</timeblocks>
 			<rulerunit>6</rulerunit>
diff --git a/addons/skin.estuary/addon.xml b/addons/skin.estuary/addon.xml
index 2f9fe2b..656483a 100644
--- a/addons/skin.estuary/addon.xml
+++ b/addons/skin.estuary/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<addon id="skin.estuary" version="1.9.9" name="Estuary" provider-name="phil65, Ichabod Fletchman">
+<addon id="skin.estuary" version="1.9.10" name="Estuary" provider-name="phil65, Ichabod Fletchman">
 	<requires>
 		<import addon="xbmc.gui" version="5.12.0"/>
 	</requires>
@@ -14,7 +14,7 @@
 		<summary lang="af_ZA">Estuary oortreksel deur phil65. (Kodi se bestek oortreksel)</summary>
 		<summary lang="bg_BG">Estuary облик оÑ? phil65 и Piers. (Ñ?Ñ?андаÑ?Ñ?ниÑ? облик на Kodi)</summary>
 		<summary lang="ca_ES">Aparença Estuary per phil65 i Piers. (aparença predeterminada de Kodi)</summary>
-		<summary lang="cs_CZ">Vzhled Estuary od autorů phil65 a Piers. (Výchozí vzhled Kodi)</summary>
+		<summary lang="cs_CZ">Vzhled Estuary od autora phil65. (Výchozí vzhled Kodi)</summary>
 		<summary lang="da_DK">Estuary skin. Lavet af phil65. (Kodi's standard brugerflade)</summary>
 		<summary lang="de_DE">Estuary Skin von phil65 und Piers. (Kodi Standardskin)</summary>
 		<summary lang="el_GR">Το κέλÏ?Ï?οÏ? Estuary αÏ?Ï? Ï?ον phil65 και Ï?ον Pier. (Ï?Ï?οεÏ?ιλεγμένο κέλÏ?Ï?οÏ? Ï?οÏ? Kodi)</summary>
@@ -48,7 +48,7 @@
 		<summary lang="sv_SE">Estuary-skin av phil65 och Piers. (Kodi's standard-skin)</summary>
 		<summary lang="szl">SkÅ?ra Estuary ôd phil65 i Piers. (WychodnÅ? skÅ?ra Kodi)</summary>
 		<summary lang="th_TH">ส�ิ� Estuary ��ย phil65 �ละ Piers (ห��า�า�ริ�ม����อ�Kodi)</summary>
-		<summary lang="tr_TR">Estuary dıÅ? görünümü. phil65 ve Piers (Kodi'nin varsayılan dıÅ? görünümü)</summary>
+		<summary lang="tr_TR">Estuary dıÅ? görünümü. phil65 (Kodi'nin varsayılan dıÅ? görünümü)</summary>
 		<summary lang="uk_UA">Ð?бкладинка Estuary вÑ?д phil65 Ñ? Piers. (Ñ?Ñ?андаÑ?Ñ?на обкладинка Kodi)</summary>
 		<summary lang="zh_CN">phil65 å?? Piers å¼?å??ç?? Estuary ç?®è?¤ï¼?Kodi ç??é»?认ç?®è?¤ï¼?</summary>
 		<summary lang="zh_TW">phil65è??Piers 製ä½?ç??Estuaryä½?æ?¯ä¸»é¡?ï¼?Kodiç??é ?設ä½?æ?¯ä¸»é¡?ï¼?</summary>
diff --git a/addons/skin.estuary/language/resource.language.cs_cz/strings.po b/addons/skin.estuary/language/resource.language.cs_cz/strings.po
index 4465a2c..e66a428 100644
--- a/addons/skin.estuary/language/resource.language.cs_cz/strings.po
+++ b/addons/skin.estuary/language/resource.language.cs_cz/strings.po
@@ -110,7 +110,7 @@ msgstr "Typ zobrazení"
 
 msgctxt "#31025"
 msgid "No favourites found. You can add any item from media views to this list by using the context menu."
-msgstr "Nenalezeny žádné oblíbené. Jakoukoliv položku ze zobrazení médií můžete pÅ?idat na tento seznam pomocí místní nabídky."
+msgstr "Nenalezeny žádné oblíbené. Na tento seznam můžete pÅ?idat jakoukoliv položku ze zobrazení médií pomocí místní nabídky."
 
 msgctxt "#31028"
 msgid "Show fanart"
@@ -154,7 +154,7 @@ msgstr "PÅ?etoÄ?it zpÄ?t"
 
 msgctxt "#31039"
 msgid "Fast forward"
-msgstr "Rychle vpÅ?ed"
+msgstr "PÅ?etoÄ?it vpÅ?ed"
 
 msgctxt "#31041"
 msgid "Camera manufacturer"
@@ -334,7 +334,7 @@ msgstr "Sem zadejte text..."
 
 msgctxt "#31104"
 msgid "Your library is currently empty. In order to populate it with your personal media, enter \"Files\" section, add a media source and configure it. After the source has been added and indexed you will be able to browse your library."
-msgstr "VaÅ¡e knihovna je aktuálnÄ? prázdná. Abyste ji naplnili svými médii, vstupte do sekce â??Souboryâ??, pÅ?idejte zdroj medií a nakonfigurujte ho. Poté, co bude zdroje pÅ?idán a zaindexován, budete moci procházet svou knihovnu."
+msgstr "VaÅ¡e knihovna je aktuálnÄ? prázdná. Abyste ji naplnili svými médii, vstupte do sekce â??Souboryâ??, pÅ?idejte zdroj medií a nakonfigurujte ho. Poté, co bude zdroj pÅ?idán a zaindexován, budete moci procházet svou knihovnu."
 
 msgctxt "#31105"
 msgid "Add video sources and set the appropriate content type in order to populate your video libraries."
@@ -442,11 +442,11 @@ msgstr "min"
 
 msgctxt "#31134"
 msgid "Remaining"
-msgstr "Zbývající"
+msgstr "Zbývá"
 
 msgctxt "#31136"
 msgid "Click here to see latest changes..."
-msgstr "KliknÄ?te zde pro zobrazení posledních zmÄ?n..."
+msgstr "KliknÄ?te sem pro zobrazení posledních zmÄ?n..."
 
 msgctxt "#31137"
 msgid "PVR info"
@@ -474,7 +474,7 @@ msgstr "Rychlost pÅ?ehrávání"
 
 msgctxt "#31143"
 msgid "You did not set up PVR yet. In order to use PVR, choose a PVR client addon and configure it. Please visit http://kodi.wiki/view/PVR to learn more."
-msgstr "Zatím jste nenastavili PVR. Abyste mohli používat PVR, zvolte doplnÄ?k klienta PVR nakonfigurujte jej. Pokud chcete zjistit více, navÅ¡tivte http://kodi.wiki/view/PVR.";
+msgstr "Zatím jste nenastavili PVR. Abyste mohli používat PVR, zvolte doplnÄ?k klienta PVR a nakonfigurujte jej. Pokud chcete zjistit více, navÅ¡tivte http://kodi.wiki/view/PVR.";
 
 msgctxt "#31144"
 msgid "Enter add-on browser"
diff --git a/addons/skin.estuary/language/resource.language.hr_hr/strings.po b/addons/skin.estuary/language/resource.language.hr_hr/strings.po
index f4b5743..c457b21 100644
--- a/addons/skin.estuary/language/resource.language.hr_hr/strings.po
+++ b/addons/skin.estuary/language/resource.language.hr_hr/strings.po
@@ -22,11 +22,11 @@ msgstr "Trenutno se reproducira"
 
 msgctxt "#31001"
 msgid "Search..."
-msgstr "Traži..."
+msgstr "Pretaži..."
 
 msgctxt "#31002"
 msgid "Show media fanart as background"
-msgstr "Prikaži medija fanart kao pozadinu"
+msgstr "Prikaži poster obožavatelja medija kao pozadinu"
 
 msgctxt "#31003"
 msgid "Cinema mode"
@@ -70,7 +70,7 @@ msgstr "NaizmjeniÄ?ni izvoÄ?aÄ?i"
 
 msgctxt "#31014"
 msgid "Unplayed albums"
-msgstr "Neslušani albumi"
+msgstr "Neodslušani albumi"
 
 msgctxt "#31015"
 msgid "Recent recordings"
@@ -110,19 +110,19 @@ msgstr "Vrsta prikaza"
 
 msgctxt "#31025"
 msgid "No favourites found. You can add any item from media views to this list by using the context menu."
-msgstr "Omiljeno nije pronaÄ?eno. Možete dodati bilo koju stavku iz medija na ovaj popis pomoÄ?u kontekstnog izbornika."
+msgstr "Omiljeno nije pronaÄ?eno. Možete dodati bilo koju stavku iz medija na ovaj popis pomoÄ?u sadržajnog izbornika."
 
 msgctxt "#31028"
 msgid "Show fanart"
-msgstr "Prikaži fanart"
+msgstr "Prikaži poster obožavatelja"
 
 msgctxt "#31029"
 msgid "Last logged in"
-msgstr "Posljednji put prijavljen"
+msgstr "Posljednji prijavljen"
 
 msgctxt "#31030"
 msgid "System memory usage"
-msgstr "Korištenje memorije sustava"
+msgstr "Korištenje memorije"
 
 msgctxt "#31031"
 msgid "Version info"
@@ -130,7 +130,7 @@ msgstr "Informacija inaÄ?ice"
 
 msgctxt "#31032"
 msgid "Order"
-msgstr "Redoslijed"
+msgstr "Poredaj"
 
 msgctxt "#31033"
 msgid "Your rating"
@@ -146,7 +146,7 @@ msgstr "Stranice"
 
 msgctxt "#31036"
 msgid "items"
-msgstr "stavke"
+msgstr "stavka"
 
 msgctxt "#31038"
 msgid "Rewind"
@@ -166,7 +166,7 @@ msgstr "MoguÄ?nosti popisa izvoÄ?enja"
 
 msgctxt "#31043"
 msgid "Set the type and add rules to create a smart playlist. These playlists are dynamic and include all media items from your database which apply to your chosen rules."
-msgstr "Postavite vrstu i dodajte pravila za stvaranje pametne liste izvoÄ?enja. Te liste izvoÄ?enje su dinamiÄ?ke i sadrže sve medijske stavke koje odgovaraju postavljenim pravilima. "
+msgstr "Postavite vrstu i dodajte pravila za stvaranje pametnog popisa izvoÄ?enja. Ti popisi izvoÄ?enja su promjenjivi i sadrže sve medijske stavke iz vaÅ¡e baze podataka koje odgovaraju odabranim pravilima. "
 
 msgctxt "#31044"
 msgid "Add group"
@@ -186,11 +186,11 @@ msgstr "Dostupno"
 
 msgctxt "#31050"
 msgid "Press [B]OK[/B] to stop"
-msgstr "Pritisni [B]OK[/B] za kraj"
+msgstr "Pritisni [B]U redu[/B] za završetak"
 
 msgctxt "#31051"
 msgid "Toggle language"
-msgstr "Prebaci jezik"
+msgstr "Odaberi podnaslov"
 
 msgctxt "#31052"
 msgid "filtered"
@@ -202,27 +202,27 @@ msgstr "Temeljen na Arialu "
 
 msgctxt "#31054"
 msgid "Press [B]Left[/B] to rewind, or [B]Right[/B] to fast-forward"
-msgstr "Pritisni [B]Lijevo[/B] za Premotavanje unazad, ili [B]Desno[/B] za Premotavanje unaprijed"
+msgstr "Pritisni [B]Lijevu strelicu[/B] za premotavanje unazad, ili [B]Desnu strelicu[/B] za premotavanje unaprijed"
 
 msgctxt "#31056"
 msgid "Go to playlist"
-msgstr "Idi na popis za reprodukciju"
+msgstr "Idi na popis izvoÄ?enja"
 
 msgctxt "#31057"
 msgid "Show login screen on startup"
-msgstr "Prikaži zaslon prijave prilikom pokretanja"
+msgstr "Prikaži zaslon prijave pri pokretanju"
 
 msgctxt "#31058"
 msgid "Automatic Login on startup"
-msgstr "Automatska prijava prilikom pokretanja"
+msgstr "Automatska prijava pri pokretanju"
 
 msgctxt "#31061"
 msgid "Main menu items"
-msgstr "Glavne stavke izbornika"
+msgstr "Glavni izbornik"
 
 msgctxt "#31062"
 msgid "Choose weather fanart pack"
-msgstr "Izaberite fanart paket za vrijeme"
+msgstr "Odaberi paket postera obožavatelja za vrijeme"
 
 msgctxt "#31063"
 msgid "Sections"
@@ -230,11 +230,11 @@ msgstr "Dio"
 
 msgctxt "#31065"
 msgid "Video playlist"
-msgstr "Video popis za reprodukciju"
+msgstr "Video popis izvoÄ?enja"
 
 msgctxt "#31066"
 msgid "Music playlist"
-msgstr "Glazbeni popis za reprodukciju"
+msgstr "Glazbeni popis izvoÄ?enja"
 
 msgctxt "#31067"
 msgid "Event log"
@@ -250,7 +250,7 @@ msgstr "Posljednja nadopuna"
 
 msgctxt "#31071"
 msgid "by"
-msgstr "po"
+msgstr "od"
 
 msgctxt "#31072"
 msgid "Power Options"
@@ -294,11 +294,11 @@ msgstr "Video izbornik"
 
 msgctxt "#31093"
 msgid "Show weather info in top bar"
-msgstr "Prikaži informacije o vremenu u gornjoj traci"
+msgstr "Prikaži informacije vremena u gornjoj traci"
 
 msgctxt "#31095"
 msgid "Use slide animations"
-msgstr "Koristi animacije"
+msgstr "Koristi klizne animacije"
 
 msgctxt "#31096"
 msgid "Local subtitle available"
@@ -314,11 +314,11 @@ msgstr "Odaberite svoj Kodi korisniÄ?ki profil[CR]za prijavu i nastavak"
 
 msgctxt "#31099"
 msgid "IconWall"
-msgstr "Ikona zid"
+msgstr "Zid ikona"
 
 msgctxt "#31100"
 msgid "Shift"
-msgstr "Pomicanje"
+msgstr "Pomak"
 
 msgctxt "#31101"
 msgid "InfoWall"
@@ -330,15 +330,15 @@ msgstr "Zid"
 
 msgctxt "#31103"
 msgid "Enter text here..."
-msgstr "Unesite tekst ovdje..."
+msgstr "Upišite tekst ovdje..."
 
 msgctxt "#31104"
 msgid "Your library is currently empty. In order to populate it with your personal media, enter \"Files\" section, add a media source and configure it. After the source has been added and indexed you will be able to browse your library."
-msgstr "VaÅ¡a zbirka je trenutno prazna. Da bi ste ju popunili sa vaÅ¡im osobnim medijima, uÄ?ite u \"datoteke\", dodajte izvor medija i konfigurirajte ga. Nakon Å¡to je izvor dodan i indeksiran biti Ä?ete u moguÄ?nosti pregledavati vaÅ¡u zbirku"
+msgstr "VaÅ¡a zbirka je trenutno prazna. Kako biste ju popunili s vaÅ¡im osobnim medijima, uÄ?ite u \"Datoteke\" odjeljak, dodajte izvor medija i prilagodite ga. Nakon Å¡to je izvor dodan i popisan biti Ä?ete u moguÄ?nosti pregledavati svoju zbirku."
 
 msgctxt "#31105"
 msgid "Add video sources and set the appropriate content type in order to populate your video libraries."
-msgstr "Dodajte video izvor i postavite odgovarajuÄ?u vrstu sadržaja kako biste popunili svoju video zbirku."
+msgstr "Dodajte video izvor i postavite odgovarajuÄ?u vrstu sadržaja kako biste popunili svoju videoteku."
 
 msgctxt "#31106"
 msgid "Teletext"
@@ -346,19 +346,19 @@ msgstr "Teletekst"
 
 msgctxt "#31107"
 msgid "WideList"
-msgstr "Å iroka lista"
+msgstr "Å irok popis"
 
 msgctxt "#31110"
 msgid "Enter files section"
-msgstr "UÄ?ite u datoteke"
+msgstr "Otvori odjeljak datoteka"
 
 msgctxt "#31111"
 msgid "View your personal pictures or download one of the many image add-ons from the official repository."
-msgstr "Pogledajte svoje osobne slike ili preuzmite jedan od mnogih slikovnih dodataka iz službenog repozitorija."
+msgstr "Gledajte svoje osobne slike ili preuzmite jedan od mnogih slikovnih dodataka iz službenog repozitorija."
 
 msgctxt "#31112"
 msgid "Toggle audio stream"
-msgstr "Prebaci audio stream"
+msgstr "Odaberi zvuÄ?ni zapis"
 
 msgctxt "#31113"
 msgid "Search local library"
@@ -374,7 +374,7 @@ msgstr "Pretraži TheMovieDB"
 
 msgctxt "#31116"
 msgid "Remove this main menu item"
-msgstr "Ukloni ovu stavku iz glavnog izbornika"
+msgstr "Ukloni ovu stavku glavnog izbornika"
 
 msgctxt "#31117"
 msgid "Edit nodes"
@@ -382,19 +382,19 @@ msgstr "Uredi Ä?voriÅ¡ta"
 
 msgctxt "#31118"
 msgid "Enter add-on browser"
-msgstr "Pregled dodataka"
+msgstr "Otvori pregled dodataka"
 
 msgctxt "#31119"
 msgid "You do not have any add-ons installed yet. Visit our add-on browser to browse through our collection and improve your Kodi experience."
-msgstr "Nemate niti jedan dodatak instaliran. Posjetite i pregledajte našu kolekciju dodataka i poboljšajte vaše kodi iskustvo."
+msgstr "Nemate niti jedan dodatak instaliran. Posjetite naš preglednik dodataka kako bi pregledali našu kolekciju i poboljšali svoje iskustvo s Kodijem."
 
 msgctxt "#31120"
 msgid "You did not set up a weather provider yet. In order to view weather information, choose a weather provider and set up your location."
-msgstr "Još niste postavili pružatelja usluge o vremenu. Kako biste vidjeli informacije o vremenu, odaberite pružatelja usluge i konfigurirajte ga."
+msgstr "Još niste postavili pružatelja vremenske usluge. Kako biste vidjeli informacije o vremenu, odaberite pružatelja usluge i postavite svoju lokaciju."
 
 msgctxt "#31121"
 msgid "Set weather provider"
-msgstr "Postavi pružatelja vremenskih usluga"
+msgstr "Postavi pružatelja vremenske usluge"
 
 msgctxt "#31122"
 msgid "Unwatched TV Shows"
@@ -406,15 +406,15 @@ msgstr "Isti redatelj"
 
 msgctxt "#31124"
 msgid "Show images on map"
-msgstr "Prikaži slike ne karti"
+msgstr "Prikaži slike na karti"
 
 msgctxt "#31125"
 msgid "Press up for actor info"
-msgstr "Pritisni gore za informacije o glumcu"
+msgstr "Pritisni gornju strelicu za informacije o glumcu"
 
 msgctxt "#31126"
 msgid "Press OK to read plot"
-msgstr "Pritisni OK za Ä?itanje zapleta"
+msgstr "Pritisni 'U redu' za Ä?itanje kratkog sadržaja"
 
 msgctxt "#31127"
 msgid "Show icons"
@@ -426,15 +426,15 @@ msgstr "Suradnici"
 
 msgctxt "#31129"
 msgid "General settings applying to all areas of the skin."
-msgstr "OpÄ?e postavke koje se primjenjuju na sva podruÄ?ja presvlake"
+msgstr "OpÄ?e postavke koje se primjenjuju na sva podruÄ?ja presvlake."
 
 msgctxt "#31130"
 msgid "Main menu-related settings: Configure the home screen to your likings."
-msgstr "Postavke vezane za Glavni izbornik: Postavite poÄ?etni zaslon kako vam odgovara"
+msgstr "Postavke glavnog izbornika: Prilagodite poÄ?etni zaslon svojim potrebama."
 
 msgctxt "#31131"
 msgid "Choose skin fanart pack"
-msgstr "Izaberite fanart paket za presvlaku"
+msgstr "Odaberi paket postera obožavatelja za presvlaku"
 
 msgctxt "#31132"
 msgid "min"
@@ -446,7 +446,7 @@ msgstr "Preostalo"
 
 msgctxt "#31136"
 msgid "Click here to see latest changes..."
-msgstr "Pritisnite ovdje da bi vidjeli zadnje obavijesti..."
+msgstr "Pritisnite ovdje kako bi vidjeli najnovije promjene..."
 
 msgctxt "#31137"
 msgid "PVR info"
@@ -454,11 +454,11 @@ msgstr "PVR informacije"
 
 msgctxt "#31138"
 msgid "Player process info"
-msgstr "Informacije o izvoÄ?enju"
+msgstr "Informacije reproduktora"
 
 msgctxt "#31139"
 msgid "Video decoder"
-msgstr "Video dekoder"
+msgstr "Video dekôder"
 
 msgctxt "#31140"
 msgid "Pixel format"
@@ -466,19 +466,19 @@ msgstr "Format piksela"
 
 msgctxt "#31141"
 msgid "Changes for version"
-msgstr "Promjene za verziju"
+msgstr "Promjene u inaÄ?ici"
 
 msgctxt "#31142"
 msgid "Play speed"
-msgstr "Brzina izvoÄ?enja"
+msgstr "Brzina reprodukcije"
 
 msgctxt "#31143"
 msgid "You did not set up PVR yet. In order to use PVR, choose a PVR client addon and configure it. Please visit http://kodi.wiki/view/PVR to learn more."
-msgstr "JoÅ¡ niste postavili PVR. Da biste koristili PVR, odaberite jedan od ponuÄ?enih iz liste dodataka te ga konfigurirajte. Posjetite http://kodi.wiki/view/PVR kako bi saznali viÅ¡e."
+msgstr "Još niste postavili PVR. Kako biste koristili PVR, odaberite dodatak PVR klijenta i prilagodite ga. Posjetite http://kodi.wiki/view/PVR kako bi saznali više."
 
 msgctxt "#31144"
 msgid "Enter add-on browser"
-msgstr "Pregled dodataka"
+msgstr "Otvori pregled dodataka"
 
 msgctxt "#31145"
 msgid "Search add-ons"
@@ -490,7 +490,7 @@ msgstr "Kategorije"
 
 msgctxt "#31149"
 msgid "Select genre fanart pack"
-msgstr "Odaberite fanart paket za žanrove"
+msgstr "Odaberi paket postera obožavatelja za žanrove"
 
 msgctxt "#31150"
 msgid "Repository"
@@ -502,23 +502,23 @@ msgstr "Nepogledani glazbeni spotovi"
 
 msgctxt "#31152"
 msgid "Random music videos"
-msgstr "NasumiÄ?ni glazbeni spotovi"
+msgstr "NaizmjeniÄ?ni glazbeni spotovi"
 
 msgctxt "#31153"
 msgid "You do not have any add-ons of this type installed. Enter the add-on browser to download add-ons created by our community."
-msgstr "Nemate niti jedan dodatak ove vrste instaliran. UÄ?ite u preglednik dodataka kako biste preuzeli dodatke stvorene od strane naÅ¡e zajednice."
+msgstr "Nemate niti jedan dodatak ove vrste instaliran. Otvorite preglednik dodataka kako biste preuzeli dodatke stvorene od strane naše zajednice."
 
 msgctxt "#31154"
 msgid "Press OK to switch between locations"
-msgstr "Pritisni OK za prebacivanje izmeÄ?u lokacija"
+msgstr "Pritisni 'U redu' za prebacivanje izmeÄ?u lokacija"
 
 msgctxt "#31155"
 msgid "No bookmarks created yet."
-msgstr "Zabilješke još nisu stvorene"
+msgstr "Još nema stvorenih zabilješka."
 
 msgctxt "#31156"
 msgid "Choose background pattern"
-msgstr "Odaberite pozadinski uzorak"
+msgstr "Odaberi uzorak pozadine"
 
 msgctxt "#31157"
 msgid "Edit categories"
@@ -534,7 +534,7 @@ msgstr "Ilustracije"
 
 msgctxt "#31160"
 msgid "Show media flags"
-msgstr "Prikaži medijske karakteristike"
+msgstr "Prikaži medijske oznake"
 
 msgctxt "#31161"
 msgid "Numeric pad"
diff --git a/addons/skin.estuary/language/resource.language.nl_nl/strings.po b/addons/skin.estuary/language/resource.language.nl_nl/strings.po
index 07206d3..4b4fd16 100644
--- a/addons/skin.estuary/language/resource.language.nl_nl/strings.po
+++ b/addons/skin.estuary/language/resource.language.nl_nl/strings.po
@@ -120,6 +120,10 @@ msgctxt "#31029"
 msgid "Last logged in"
 msgstr "Laatst ingelogd op"
 
+msgctxt "#31030"
+msgid "System memory usage"
+msgstr "Systeem geheugen gebruik"
+
 msgctxt "#31031"
 msgid "Version info"
 msgstr "Versie info"
@@ -308,6 +312,10 @@ msgctxt "#31098"
 msgid "Select your Kodi user profile[CR]to login and continue"
 msgstr "Selecteer jouw Kodi Gebruikersprofiel[CR]om in te loggen en door te gaan"
 
+msgctxt "#31099"
+msgid "IconWall"
+msgstr "iconenmuur"
+
 msgctxt "#31100"
 msgid "Shift"
 msgstr "Scheiden"
@@ -475,3 +483,59 @@ msgstr "Ga naar add-on verkenner"
 msgctxt "#31145"
 msgid "Search add-ons"
 msgstr "Zoek add-ons"
+
+msgctxt "#31148"
+msgid "Categories"
+msgstr "categoriën"
+
+msgctxt "#31149"
+msgid "Select genre fanart pack"
+msgstr "Selecteer genre Fanart pakket"
+
+msgctxt "#31150"
+msgid "Repository"
+msgstr "depot"
+
+msgctxt "#31151"
+msgid "Unwatched music videos"
+msgstr "Niet bekeken muziek video`s"
+
+msgctxt "#31152"
+msgid "Random music videos"
+msgstr "Willekeurige muziekvideo`s"
+
+msgctxt "#31153"
+msgid "You do not have any add-ons of this type installed. Enter the add-on browser to download add-ons created by our community."
+msgstr "U heeft nog geen enkele add-on van dit type geïnstalleerd. bezoek de add-on verkenner om add-ons te downloaden gecreëerd door onze community"
+
+msgctxt "#31154"
+msgid "Press OK to switch between locations"
+msgstr "Druk OK om de schakelen tussen locatie`s"
+
+msgctxt "#31155"
+msgid "No bookmarks created yet."
+msgstr "Nog geen bladwijzer gecreëerd "
+
+msgctxt "#31156"
+msgid "Choose background pattern"
+msgstr "Kies achtergrond patroon"
+
+msgctxt "#31157"
+msgid "Edit categories"
+msgstr "Aanpassen categorien "
+
+msgctxt "#31158"
+msgid "Touch mode"
+msgstr "Aanraak modus"
+
+msgctxt "#31159"
+msgid "Artwork"
+msgstr "Artwork"
+
+msgctxt "#31160"
+msgid "Show media flags"
+msgstr "Toon media vlaggen"
+
+msgctxt "#31161"
+msgid "Numeric pad"
+msgstr "Numeriek pad"
diff --git a/addons/skin.estuary/language/resource.language.pt_pt/strings.po b/addons/skin.estuary/language/resource.language.pt_pt/strings.po
index b26bd69..3a961e5 100644
--- a/addons/skin.estuary/language/resource.language.pt_pt/strings.po
+++ b/addons/skin.estuary/language/resource.language.pt_pt/strings.po
@@ -120,6 +120,10 @@ msgctxt "#31029"
 msgid "Last logged in"
 msgstr "Ã?ltima vez ligado"
 
+msgctxt "#31030"
+msgid "System memory usage"
+msgstr "Utilização da memória do sistema"
+
 msgctxt "#31031"
 msgid "Version info"
 msgstr "Info da versão"
@@ -440,6 +444,10 @@ msgctxt "#31139"
 msgid "Video decoder"
 msgstr "Descodificador de vídeo"
 
+msgctxt "#31140"
+msgid "Pixel format"
+msgstr "Formato de píxel"
+
 msgctxt "#31141"
 msgid "Changes for version"
 msgstr "Alterações da versão"
@@ -455,3 +463,35 @@ msgstr "Entrar no navegador de add-ons"
 msgctxt "#31145"
 msgid "Search add-ons"
 msgstr "Pesquisar add-ons"
+
+msgctxt "#31148"
+msgid "Categories"
+msgstr "Categorias"
+
+msgctxt "#31150"
+msgid "Repository"
+msgstr "Repositório"
+
+msgctxt "#31151"
+msgid "Unwatched music videos"
+msgstr "Vídeos de música não vistos"
+
+msgctxt "#31152"
+msgid "Random music videos"
+msgstr "Vídeos de música aleatórios"
+
+msgctxt "#31155"
+msgid "No bookmarks created yet."
+msgstr "Ainda não foram criados marcadores."
+
+msgctxt "#31156"
+msgid "Choose background pattern"
+msgstr "Escolha o modelo de fundo"
+
+msgctxt "#31157"
+msgid "Edit categories"
+msgstr "Editar categorias"
+
+msgctxt "#31158"
+msgid "Touch mode"
+msgstr "Modo de toque"
diff --git a/addons/skin.estuary/language/resource.language.sv_se/strings.po b/addons/skin.estuary/language/resource.language.sv_se/strings.po
index 3650d68..cec310f 100644
--- a/addons/skin.estuary/language/resource.language.sv_se/strings.po
+++ b/addons/skin.estuary/language/resource.language.sv_se/strings.po
@@ -42,7 +42,7 @@ msgstr "Se i 2D"
 
 msgctxt "#31006"
 msgid "Random movies"
-msgstr "Slumpmässiga filmer"
+msgstr "Slumpvis urvalda filmer"
 
 msgctxt "#31007"
 msgid "Unwatched movies"
@@ -62,11 +62,11 @@ msgstr "Mest spelade album"
 
 msgctxt "#31012"
 msgid "Random albums"
-msgstr "Slumpmässiga album"
+msgstr "Slumpvis urvalda album"
 
 msgctxt "#31013"
 msgid "Random artists"
-msgstr "Slumpmässiga artister"
+msgstr "Slumpvis urvalda artister"
 
 msgctxt "#31014"
 msgid "Unplayed albums"
@@ -222,7 +222,7 @@ msgstr "Huvudmeny objekt"
 
 msgctxt "#31062"
 msgid "Choose weather fanart pack"
-msgstr "Välj fanart för väder"
+msgstr "Välj väder-fanart paket"
 
 msgctxt "#31063"
 msgid "Sections"
@@ -238,7 +238,7 @@ msgstr "Spellista för musik"
 
 msgctxt "#31067"
 msgid "Event log"
-msgstr "Händelselogg"
+msgstr "Eventlogg"
 
 msgctxt "#31068"
 msgid "Choose presets"
@@ -258,7 +258,7 @@ msgstr "Energialternativ"
 
 msgctxt "#31075"
 msgid "Movie sets"
-msgstr "Filmsamling"
+msgstr "Filmsamlingar"
 
 msgctxt "#31079"
 msgid "Cast not available"
@@ -398,7 +398,7 @@ msgstr "Ställ in väderleksleverantör"
 
 msgctxt "#31122"
 msgid "Unwatched TV Shows"
-msgstr "O-sedda TV-program"
+msgstr "Osedda TV-program"
 
 msgctxt "#31123"
 msgid "Same director"
@@ -502,7 +502,7 @@ msgstr "Osedda musikvideor"
 
 msgctxt "#31152"
 msgid "Random music videos"
-msgstr "Slumpvis musikvideor"
+msgstr "Slumpvis urvalda musikvideor"
 
 msgctxt "#31153"
 msgid "You do not have any add-ons of this type installed. Enter the add-on browser to download add-ons created by our community."
diff --git a/addons/skin.estuary/xml/AddonBrowser.xml b/addons/skin.estuary/xml/AddonBrowser.xml
index f3ee214..dd211bc 100644
--- a/addons/skin.estuary/xml/AddonBrowser.xml
+++ b/addons/skin.estuary/xml/AddonBrowser.xml
@@ -63,7 +63,7 @@
 			<control type="group">
 				<height>78</height>
 				<bottom>0</bottom>
-				<visible>$EXP[sidebar_focused]</visible>
+				<visible>$EXP[sidebar_visible]</visible>
 				<animation effect="fade" time="300">VisibleChange</animation>
 				<include content="LeftAlignedInfo">
 					<param name="main_label" value="$INFO[Window(AddonBrowser).Property(Updated)]" />
diff --git a/addons/skin.estuary/xml/Constants_1920.xml b/addons/skin.estuary/xml/Constants_1920.xml
index d85f2d5..f9b714b 100644
--- a/addons/skin.estuary/xml/Constants_1920.xml
+++ b/addons/skin.estuary/xml/Constants_1920.xml
@@ -7,5 +7,5 @@
 	<constant name="tvrecordings_width">1060</constant>
 	<constant name="eventloglist_width">1430</constant>
 	<constant name="playlisteditorlist_width">770</constant>
-	<constant name="playlistlist_width">904</constant>
+	<constant name="playlistlist_width">896</constant>
 </includes>
diff --git a/addons/skin.estuary/xml/Constants_2560.xml b/addons/skin.estuary/xml/Constants_2560.xml
index fea8fc5..ba83217 100644
--- a/addons/skin.estuary/xml/Constants_2560.xml
+++ b/addons/skin.estuary/xml/Constants_2560.xml
@@ -7,5 +7,5 @@
 	<constant name="tvrecordings_width">1700</constant>
 	<constant name="eventloglist_width">2070</constant>
 	<constant name="playlisteditorlist_width">1410</constant>
-	<constant name="playlistlist_width">1544</constant>
+	<constant name="playlistlist_width">1536</constant>
 </includes>
diff --git a/addons/skin.estuary/xml/DialogMusicInfo.xml b/addons/skin.estuary/xml/DialogMusicInfo.xml
index 4f895ab..08940cc 100644
--- a/addons/skin.estuary/xml/DialogMusicInfo.xml
+++ b/addons/skin.estuary/xml/DialogMusicInfo.xml
@@ -31,7 +31,7 @@
 					<height>567</height>
 					<aspectratio aligny="top">scale</aspectratio>
 					<fadetime>300</fadetime>
-					<texture background="true" fallback="DefaultAudio.png">$INFO[ListItem.Art(thumb)]</texture>
+					<texture background="true">$VAR[MusicInfoThumbVar]</texture>
 				</control>
 			</control>
 			<control type="group">
diff --git a/addons/skin.estuary/xml/Home.xml b/addons/skin.estuary/xml/Home.xml
index 3159d2c..16187cc 100644
--- a/addons/skin.estuary/xml/Home.xml
+++ b/addons/skin.estuary/xml/Home.xml
@@ -541,7 +541,7 @@
 								<texture border="21">dialogs/dialog-bg.png</texture>
 							</control>
 							<control type="label">
-								<left>300</left>
+								<left>840</left>
 								<top>60</top>
 								<aligny>center</aligny>
 								<height>24</height>
@@ -551,7 +551,7 @@
 								<label>$INFO[Weather.Location]</label>
 							</control>
 							<control type="label">
-								<left>300</left>
+								<left>840</left>
 								<top>120</top>
 								<aligny>center</aligny>
 								<height>24</height>
diff --git a/addons/skin.estuary/xml/Includes.xml b/addons/skin.estuary/xml/Includes.xml
index 03935c9..9d297c8 100644
--- a/addons/skin.estuary/xml/Includes.xml
+++ b/addons/skin.estuary/xml/Includes.xml
@@ -34,7 +34,7 @@
 	<constant name="list_y_offset">0</constant>
 	<constant name="list_item_height">80</constant>
 	<expression name="infodialog_active">Window.IsActive(musicinformation) | Window.IsActive(songinformation) | Window.IsActive(movieinformation) | Window.IsActive(addoninformation) | Window.IsActive(pvrguideinfo) | Window.IsActive(pvrrecordinginfo) | Window.IsActive(pictureinfo) | Window.IsVisible(script-script.extendedinfo-DialogVideoInfo.xml) | Window.IsVisible(script-script.extendedinfo-DialogInfo.xml) | Window.IsVisible(script-script.extendedinfo-VideoList.xml)</expression>
-	<expression name="sidebar_focused">ControlGroup(9000).HasFocus | Control.HasFocus(6130)</expression>
+	<expression name="sidebar_visible">ControlGroup(9000).HasFocus | Control.HasFocus(6130) | Window.IsActive(MyPlaylist.xml)</expression>
 	<include name="CommonScrollbars">
 		<control type="group">
 			<animation effect="fade" start="100" end="0" time="150">WindowClose</animation>
@@ -320,6 +320,7 @@
 					<font>$PARAM[font]</font>
 					<aligny>center</aligny>
 					<label>$INFO[ListItem.Label]</label>
+					<scroll>true</scroll>
 				</control>
 			</focusedlayout>
 		</definition>
diff --git a/addons/skin.estuary/xml/Includes_MediaMenu.xml b/addons/skin.estuary/xml/Includes_MediaMenu.xml
index baa5f59..650121f 100644
--- a/addons/skin.estuary/xml/Includes_MediaMenu.xml
+++ b/addons/skin.estuary/xml/Includes_MediaMenu.xml
@@ -200,7 +200,7 @@
 						<onleft>14100</onleft>
 						<onup>8</onup>
 						<ondown>6056</ondown>
-						<visible>Player.HasMedia + [$EXP[sidebar_focused]]</visible>
+						<visible>Player.HasMedia + [$EXP[sidebar_visible]]</visible>
 						<visible>!System.HasModalDialog</visible>
 						<include content="BottomMainMenuToggleItem">
 							<param name="control_id" value="14101" />
@@ -243,7 +243,7 @@
 		<include>OpenClose_Left</include>
 		<depth>DepthSideBlade</depth>
 		<left>-520</left>
-		<animation type="Conditional" condition="$EXP[sidebar_focused]" reversible="true">
+		<animation type="Conditional" condition="$EXP[sidebar_visible]" reversible="true">
 			<effect type="slide" start="0" end="520" time="400" tween="cubic" easing="out" />
 		</animation>
 		<control type="image">
@@ -251,7 +251,7 @@
 			<height>100%</height>
 			<aspectratio>scale</aspectratio>
 			<texture colordiffuse="80FFFFFF">colors/black.png</texture>
-			<visible>$EXP[sidebar_focused] + !System.HasModalDialog</visible>
+			<visible>$EXP[sidebar_visible] + !System.HasModalDialog</visible>
 			<animation effect="fade" time="200">VisibleChange</animation>
 		</control>
 		<control type="image">
@@ -271,41 +271,44 @@
 		</control>
 	</include>
 	<include name="MediaMenuNowPlaying">
-		<control type="grouplist" id="14100">
-			<animation effect="fade" start="0" end="100" time="400">WindowOpen</animation>
-			<animation effect="fade" start="100" end="0" time="300">WindowClose</animation>
-			<animation effect="fade" time="300">VisibleChange</animation>
-			<orientation>horizontal</orientation>
-			<itemgap>-17</itemgap>
-			<left>5</left>
-			<onleft>14100</onleft>
-			<width>450</width>
-			<visible>Player.HasMedia + [$EXP[sidebar_focused]]</visible>
-			<visible>!System.HasModalDialog</visible>
-			<include content="BottomMainMenuToggleItem">
-				<param name="control_id" value="14101" />
-				<param name="onclick" value="PlayerControl(Play)" />
-				<param name="icon_on" value="icons/now-playing/play.png" />
-				<param name="icon_off" value="icons/now-playing/pause.png" />
-				<param name="selected" value="Player.Paused" />
-			</include>
-			<include content="IconButton">
-				<param name="control_id" value="14102" />
-				<param name="onclick" value="Stop" />
-				<param name="onclick_2" value="SetFocus(50)" />
-				<param name="icon" value="icons/now-playing/stop.png" />
-			</include>
-			<include content="IconButton">
-				<param name="control_id" value="14104" />
-				<param name="onclick" value="PlayerControl(Next)" />
-				<param name="icon" value="icons/now-playing/next.png" />
-			</include>
-			<include content="IconButton">
-				<param name="control_id" value="14105" />
-				<param name="onclick" value="Fullscreen" />
-				<param name="icon" value="icons/now-playing/fullscreen.png" />
-			</include>
-		</control>
+        <param name="left">5</param>
+		<definition>
+			<control type="grouplist" id="14100">
+				<animation effect="fade" start="0" end="100" time="400">WindowOpen</animation>
+				<animation effect="fade" start="100" end="0" time="300">WindowClose</animation>
+				<animation effect="fade" time="300">VisibleChange</animation>
+				<orientation>horizontal</orientation>
+				<itemgap>-17</itemgap>
+				<left>$PARAM[left]</left>
+				<onleft>14100</onleft>
+				<width>450</width>
+				<visible>Player.HasMedia + [$EXP[sidebar_visible]]</visible>
+				<visible>!System.HasModalDialog</visible>
+				<include content="BottomMainMenuToggleItem">
+					<param name="control_id" value="14101" />
+					<param name="onclick" value="PlayerControl(Play)" />
+					<param name="icon_on" value="icons/now-playing/play.png" />
+					<param name="icon_off" value="icons/now-playing/pause.png" />
+					<param name="selected" value="Player.Paused" />
+				</include>
+				<include content="IconButton">
+					<param name="control_id" value="14102" />
+					<param name="onclick" value="Stop" />
+					<param name="onclick_2" value="SetFocus(50)" />
+					<param name="icon" value="icons/now-playing/stop.png" />
+				</include>
+				<include content="IconButton">
+					<param name="control_id" value="14104" />
+					<param name="onclick" value="PlayerControl(Next)" />
+					<param name="icon" value="icons/now-playing/next.png" />
+				</include>
+				<include content="IconButton">
+					<param name="control_id" value="14105" />
+					<param name="onclick" value="Fullscreen" />
+					<param name="icon" value="icons/now-playing/fullscreen.png" />
+				</include>
+			</control>
+		</definition>
 	</include>
 	<include name="MediaMenuListCommon">
 		<definition>
@@ -345,7 +348,6 @@
 			</control>
 			<control type="button" id="19">
 				<visible>Container.CanFilter + !Container.CanFilterAdvanced</visible>
-				<visible>!Container.Content()</visible>
 				<include>MediaMenuItemsCommon</include>
 				<label>$LOCALIZE[137]</label>
 			</control>
diff --git a/addons/skin.estuary/xml/MusicOSD.xml b/addons/skin.estuary/xml/MusicOSD.xml
index 73dee70..bf74ff7 100644
--- a/addons/skin.estuary/xml/MusicOSD.xml
+++ b/addons/skin.estuary/xml/MusicOSD.xml
@@ -173,7 +173,8 @@
 			</control>
 		</control>
 		<control type="group">
-			<top>960</top>
+			<bottom>0</bottom>
+			<height>120</height>
 			<animation effect="fade" start="0" end="100" time="250">WindowOpen</animation>
 			<animation effect="fade" start="100" end="0" time="250">WindowClose</animation>
 			<control type="button" id="87">
diff --git a/addons/skin.estuary/xml/MyPlaylist.xml b/addons/skin.estuary/xml/MyPlaylist.xml
index 51361f0..f66dc10 100644
--- a/addons/skin.estuary/xml/MyPlaylist.xml
+++ b/addons/skin.estuary/xml/MyPlaylist.xml
@@ -10,9 +10,9 @@
 			<control type="group">
 				<include>OpenClose_Left</include>
 				<control type="fixedlist" id="50">
-					<left>402</left>
+					<left>410</left>
 					<top>list_y_offset</top>
-					<right>594</right>
+					<right>586</right>
 					<bottom>list_y_offset</bottom>
 					<scrolltime tween="cubic" easing="out">500</scrolltime>
 					<orientation>vertical</orientation>
@@ -79,7 +79,7 @@
 				<control type="group">
 					<depth>DepthContentPanel</depth>
 					<include content="ContentPanel">
-						<param name="width" value="462" />
+						<param name="width" value="470" />
 					</include>
 					<control type="grouplist" id="700">
 						<orientation>vertical</orientation>
@@ -90,9 +90,9 @@
 						<ondown>700</ondown>
 						<onleft>50</onleft>
 						<onright>50</onright>
-						<width>402</width>
+						<width>410</width>
 						<control type="radiobutton" id="20">
-							<width>402</width>
+							<width>410</width>
 							<height>110</height>
 							<align>left</align>
 							<aligny>top</aligny>
@@ -115,6 +115,9 @@
 							<param name="control_id" value="22" />
 							<param name="label" value="$LOCALIZE[192]" />
 						</include>
+						<include content="MediaMenuNowPlaying">
+							<param name="left" value="-5" />
+						</include>
 					</control>
 				</control>
 			</control>
diff --git a/addons/skin.estuary/xml/MyVideoNav.xml b/addons/skin.estuary/xml/MyVideoNav.xml
index 8b2b8f8..ea67f8e 100644
--- a/addons/skin.estuary/xml/MyVideoNav.xml
+++ b/addons/skin.estuary/xml/MyVideoNav.xml
@@ -138,7 +138,7 @@
 						<include>MediaMenuItemsCommon</include>
 						<label>$LOCALIZE[31056]</label>
 						<onclick>ActivateWindow(videoplaylist)</onclick>
-						<visible>IntegerGreaterThan(Playlist.Length(video),0)</visible>
+						<visible>Integer.IsGreater(Playlist.Length(video),0)</visible>
 					</control>
 					<control type="button" id="621">
 						<description>Get more</description>
diff --git a/addons/skin.estuary/xml/Variables.xml b/addons/skin.estuary/xml/Variables.xml
index a1f306b..f41d2bd 100644
--- a/addons/skin.estuary/xml/Variables.xml
+++ b/addons/skin.estuary/xml/Variables.xml
@@ -65,6 +65,12 @@
 		<value condition="ListItem.IsFolder + String.IsEmpty(ListItem.Thumb)">DefaultFolderSquare.png</value>
 		<value>$INFO[ListItem.Thumb]</value>
 	</variable>
+	<variable name="MusicInfoThumbVar">
+		<value condition="!String.IsEmpty(Listitem.Art(thumb))">$INFO[Listitem.Art(thumb)]</value>
+		<value condition="String.IsEqual(listitem.dbtype,artist)">DefaultArtist.png</value>
+		<value condition="String.IsEqual(listitem.dbtype,album)">DefaultAlbumCover.png</value>
+		<value>DefaultAudio.png</value>
+	</variable>
 	<variable name="InfoWallThumbVar">
 		<value condition="!String.IsEmpty(Listitem.Art(poster))">$INFO[Listitem.Art(poster)]</value>
 		<value>$INFO[ListItem.Icon]</value>
diff --git a/addons/skin.estuary/xml/View_51_Poster.xml b/addons/skin.estuary/xml/View_51_Poster.xml
index 25ffb60..3fb4209 100644
--- a/addons/skin.estuary/xml/View_51_Poster.xml
+++ b/addons/skin.estuary/xml/View_51_Poster.xml
@@ -112,6 +112,7 @@
 						<autoscroll time="3000" delay="7000" repeat="5000">!System.HasModalDialog + Skin.HasSetting(AutoScroll)</autoscroll>
 						<label>$INFO[ListItem.Plot]</label>
 						<shadowcolor>text_shadow</shadowcolor>
+						<visible>!ListItem.IsCollection</visible>
 					</control>
 				</control>
 			</control>
diff --git a/addons/skin.estuary/xml/View_55_WideList.xml b/addons/skin.estuary/xml/View_55_WideList.xml
index 7ae0346..c567df7 100644
--- a/addons/skin.estuary/xml/View_55_WideList.xml
+++ b/addons/skin.estuary/xml/View_55_WideList.xml
@@ -37,7 +37,7 @@
 						<aligny>center</aligny>
 						<label>$INFO[ListItem.Year]</label>
 						<shadowcolor>text_shadow</shadowcolor>
-						<visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(movies)</visible>
+						<visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(movies) + !Container.Content(videos)</visible>
 					</control>
 					<control type="image">
 						<left>35</left>
@@ -45,7 +45,7 @@
 						<width>32</width>
 						<height>32</height>
 						<texture>$VAR[ListWatchedIconVar]</texture>
-						<visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | String.IsEmpty(ListItem.Year)</visible>
+						<visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | Container.Content(videos) | String.IsEmpty(ListItem.Year)</visible>
 					</control>
 					<control type="label">
 						<left>105</left>
@@ -78,7 +78,7 @@
 						<label>$INFO[ListItem.Year]</label>
 						<textcolor>button_focus</textcolor>
 						<shadowcolor>text_shadow</shadowcolor>
-						<visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(movies)</visible>
+						<visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(movies) + !Container.Content(videos)</visible>
 					</control>
 					<control type="image">
 						<left>35</left>
@@ -86,7 +86,7 @@
 						<width>32</width>
 						<height>32</height>
 						<texture colordiffuse="grey">$VAR[ListWatchedIconVar]</texture>
-						<visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | String.IsEmpty(ListItem.Year)</visible>
+						<visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | Container.Content(videos) | String.IsEmpty(ListItem.Year)</visible>
 					</control>
 					<control type="label">
 						<left>105</left>
diff --git a/cmake/scripts/rbpi/ExtraTargets.cmake b/cmake/scripts/rbpi/ExtraTargets.cmake
deleted file mode 120000
index e757c60..0000000
--- a/cmake/scripts/rbpi/ExtraTargets.cmake
+++ /dev/null
@@ -1 +0,0 @@
-../linux/ExtraTargets.cmake
\ No newline at end of file
diff --git a/codegenerator.mk b/codegenerator.mk
index 5f8bdd9..dc93280 100644
--- a/codegenerator.mk
+++ b/codegenerator.mk
@@ -69,3 +69,4 @@ else
 #build json builder - ".." because makefile is in the parent dir of "bin"
 	$(MAKE) -C $(abspath $(@D)/..)
 endif
+$(shell touch $(TOPDIR)/xbmc/cores/AudioEngine/AEDefines_override.h)
diff --git a/configure.ac b/configure.ac
index 7a10705..0609390 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([kodi], [16.9.903], [http://trac.kodi.tv])
+AC_INIT([kodi], [17.0.000], [http://trac.kodi.tv])
 AC_CONFIG_HEADERS([xbmc/config.h])
 AH_TOP([#pragma once])
 m4_include([m4/ax_prog_cc_for_build.m4])
diff --git a/debian/changelog b/debian/changelog
index 5d937d1..f28bd11 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,27 @@
+kodi (2:17.0+dfsg1-2) UNRELEASED; urgency=medium
+
+  * Apply patches to additional tarballs using quilt series file
+    (Closes: #854463)
+
+ -- Balint Reczey <balint@balintreczey.hu>  Wed, 08 Feb 2017 13:33:33 +0100
+
+kodi (2:17.0+dfsg1-1) experimental; urgency=medium
+
+  * Imported Upstream version 17.0+dfsg1
+    See: https://kodi.tv/kodi17/
+
+ -- Balint Reczey <balint@balintreczey.hu>  Mon, 06 Feb 2017 19:33:08 +0100
+
+kodi (2:17.0~rc4+dfsg1-1) experimental; urgency=medium
+
+  * Imported Upstream version 17.0~rc4+dfsg1
+    See: https://kodi.tv/kodi-v17-0-krypton-release-candidate-4/
+  * Refresh patches
+  * Remove spaces around '=' in service file.
+    Also convert service file to use Unix line ending
+
+ -- Balint Reczey <balint@balintreczey.hu>  Sun, 05 Feb 2017 01:27:27 +0100
+
 kodi (2:17.0~rc3+dfsg1-2) unstable; urgency=medium
 
   * Bump debhelper compat level to 10.
diff --git a/debian/kodi.service b/debian/kodi.service
index de85126..467885b 100644
--- a/debian/kodi.service
+++ b/debian/kodi.service
@@ -1,16 +1,16 @@
-[Unit]
-Description = Kodi Open Source Home Theatre
-After = remote-fs.target
-After = syslog.target
- 
-[Service]
-User = kodi
-Group = kodi
-Type = simple
-Restart = always
-RestartSec=5
-KillMode=process
-ExecStart = /usr/bin/xinit /usr/bin/kodi-standalone -- :0
- 
-[Install]
-WantedBy = multi-user.target
+[Unit]
+Description=Kodi Open Source Home Theatre
+After=remote-fs.target
+After=syslog.target
+
+[Service]
+User=kodi
+Group=kodi
+Type=simple
+Restart=always
+RestartSec=5
+KillMode=process
+ExecStart=/usr/bin/xinit /usr/bin/kodi-standalone -- :0
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/patches/0010-Autotools-Fake-empty-AE-override.patch b/debian/patches/0010-Autotools-Fake-empty-AE-override.patch
deleted file mode 100644
index 25bbde4..0000000
--- a/debian/patches/0010-Autotools-Fake-empty-AE-override.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From db26dd8f619d76cf459b87c2e003e3cd33b96b79 Mon Sep 17 00:00:00 2001
-From: fritsch <Peter.Fruehberger@gmail.com>
-Date: Sun, 8 Jan 2017 20:09:21 +0100
-Subject: [PATCH] Autotools: Fake empty AE override
-
----
- xbmc/cores/AudioEngine/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/xbmc/cores/AudioEngine/Makefile.in b/xbmc/cores/AudioEngine/Makefile.in
-index 9a4e998..9a3d486 100644
---- a/xbmc/cores/AudioEngine/Makefile.in
-+++ b/xbmc/cores/AudioEngine/Makefile.in
-@@ -83,6 +83,6 @@ SRCS += Utils/AELimiter.cpp
- SRCS += Encoders/AEEncoderFFmpeg.cpp
- 
- LIB   = audioengine.a
--
-+$(shell touch AEDefines_override.h)
- include @abs_top_srcdir@/Makefile.include
- -include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))
--- 
-2.1.4
-
diff --git a/debian/patches/libdvdnav-0001-xbmc-dvdnav-allow-get-set-vm-state.patch b/debian/patches/libdvdnav-0001-xbmc-dvdnav-allow-get-set-vm-state.patch
index 7b9351c..2bd9a8e 100644
--- a/debian/patches/libdvdnav-0001-xbmc-dvdnav-allow-get-set-vm-state.patch
+++ b/debian/patches/libdvdnav-0001-xbmc-dvdnav-allow-get-set-vm-state.patch
@@ -12,8 +12,8 @@ Subject: [PATCH 01/10] [xbmc][dvdnav] allow get/set vm state
 
 diff --git a/src/dvdnav_internal.h b/src/dvdnav_internal.h
 index 534ccb8..6d936e9 100644
---- a/src/dvdnav_internal.h
-+++ b/src/dvdnav_internal.h
+--- a/libdvdnav-5-0-3/src/dvdnav_internal.h
++++ b/libdvdnav-5-0-3/src/dvdnav_internal.h
 @@ -222,6 +222,18 @@ struct dvdnav_s {
  /* converts a dvd_time_t to PTS ticks */
  int64_t dvdnav_convert_time(dvd_time_t *time);
@@ -35,8 +35,8 @@ index 534ccb8..6d936e9 100644
  #ifdef __GNUC__
 diff --git a/src/searching.c b/src/searching.c
 index f638b61..fd28fb3 100644
---- a/src/searching.c
-+++ b/src/searching.c
+--- a/libdvdnav-5-0-3/src/searching.c
++++ b/libdvdnav-5-0-3/src/searching.c
 @@ -731,6 +731,64 @@ fail:
    return retval;
  }
@@ -104,8 +104,8 @@ index f638b61..fd28fb3 100644
              int32_t *admap_len) {
 diff --git a/src/vm/vm.c b/src/vm/vm.c
 index 869dd05..35d08d5 100644
---- a/src/vm/vm.c
-+++ b/src/vm/vm.c
+--- a/libdvdnav-5-0-3/src/vm/vm.c
++++ b/libdvdnav-5-0-3/src/vm/vm.c
 @@ -1104,3 +1104,44 @@ void vm_ifo_close(ifo_handle_t *ifo)
  {
    ifoClose(ifo);
@@ -153,8 +153,8 @@ index 869dd05..35d08d5 100644
 +}
 diff --git a/src/vm/vm.h b/src/vm/vm.h
 index e4b01c2..a6fdbf9 100644
---- a/src/vm/vm.h
-+++ b/src/vm/vm.h
+--- a/libdvdnav-5-0-3/src/vm/vm.h
++++ b/libdvdnav-5-0-3/src/vm/vm.h
 @@ -161,6 +161,9 @@ subp_attr_t  vm_get_subp_attr(vm_t *vm, int streamN);
  ifo_handle_t *vm_get_title_ifo(vm_t *vm, uint32_t title);
  void vm_ifo_close(ifo_handle_t *ifo);
diff --git a/debian/patches/libdvdnav-0002-xbmc-dvdnav-expose-dvdnav_get_vm-dvdnav_get_button_i.patch b/debian/patches/libdvdnav-0002-xbmc-dvdnav-expose-dvdnav_get_vm-dvdnav_get_button_i.patch
index 804dc3d..821d126 100644
--- a/debian/patches/libdvdnav-0002-xbmc-dvdnav-expose-dvdnav_get_vm-dvdnav_get_button_i.patch
+++ b/debian/patches/libdvdnav-0002-xbmc-dvdnav-expose-dvdnav_get_vm-dvdnav_get_button_i.patch
@@ -11,8 +11,8 @@ Subject: [PATCH 02/10] [xbmc][dvdnav] expose dvdnav_get_vm,
 
 diff --git a/src/dvdnav.c b/src/dvdnav.c
 index ae267d5..39c11dd 100644
---- a/src/dvdnav.c
-+++ b/src/dvdnav.c
+--- a/libdvdnav-5-0-3/src/dvdnav.c
++++ b/libdvdnav-5-0-3/src/dvdnav.c
 @@ -1273,3 +1273,55 @@ user_ops_t dvdnav_get_restrictions(dvdnav_t* this) {
  
    return ops.ops_struct;
@@ -72,8 +72,8 @@ index ae267d5..39c11dd 100644
 \ No newline at end of file
 diff --git a/src/dvdnav/dvdnav.h b/src/dvdnav/dvdnav.h
 index 8d68102..9f82b0f 100644
---- a/src/dvdnav/dvdnav.h
-+++ b/src/dvdnav/dvdnav.h
+--- a/libdvdnav-5-0-3/src/dvdnav/dvdnav.h
++++ b/libdvdnav-5-0-3/src/dvdnav/dvdnav.h
 @@ -699,6 +699,7 @@ int8_t dvdnav_is_domain_vtsm(dvdnav_t *self);
   */
  int8_t dvdnav_is_domain_vts(dvdnav_t *self);
diff --git a/debian/patches/libdvdnav-0003-xbmc-dvdnav-detection-of-dvd-name.patch b/debian/patches/libdvdnav-0003-xbmc-dvdnav-detection-of-dvd-name.patch
index b6fb500..c96343d 100644
--- a/debian/patches/libdvdnav-0003-xbmc-dvdnav-detection-of-dvd-name.patch
+++ b/debian/patches/libdvdnav-0003-xbmc-dvdnav-detection-of-dvd-name.patch
@@ -9,8 +9,8 @@ Subject: [PATCH 03/10] [xbmc][dvdnav] detection of dvd name
 
 diff --git a/src/vm/vm.c b/src/vm/vm.c
 index 35d08d5..7ff285d 100644
---- a/src/vm/vm.c
-+++ b/src/vm/vm.c
+--- a/libdvdnav-5-0-3/src/vm/vm.c
++++ b/libdvdnav-5-0-3/src/vm/vm.c
 @@ -409,6 +409,13 @@ int vm_reset(vm_t *vm, const char *dvdroot,
      if(dvd_read_name(vm->dvd_name, vm->dvd_serial, dvdroot) != 1) {
        fprintf(MSG_OUT, "libdvdnav: vm: dvd_read_name failed\n");
diff --git a/debian/patches/libdvdnav-0004-xbmc-dvdnav-skip-cell-when-unrecoverable.patch b/debian/patches/libdvdnav-0004-xbmc-dvdnav-skip-cell-when-unrecoverable.patch
index f25e271..9c272cd 100644
--- a/debian/patches/libdvdnav-0004-xbmc-dvdnav-skip-cell-when-unrecoverable.patch
+++ b/debian/patches/libdvdnav-0004-xbmc-dvdnav-skip-cell-when-unrecoverable.patch
@@ -9,8 +9,8 @@ Subject: [PATCH 04/10] [xbmc][dvdnav] skip cell when unrecoverable
 
 diff --git a/src/dvdnav.c b/src/dvdnav.c
 index 39c11dd..3b61059 100644
---- a/src/dvdnav.c
-+++ b/src/dvdnav.c
+--- a/libdvdnav-5-0-3/src/dvdnav.c
++++ b/libdvdnav-5-0-3/src/dvdnav.c
 @@ -564,6 +564,10 @@ dvdnav_status_t dvdnav_get_next_cache_block(dvdnav_t *this, uint8_t **buf,
          /* Decode nav into pci and dsi. Then get next VOBU info. */
          if(!dvdnav_decode_packet(*buf, &this->dsi, &this->pci)) {
diff --git a/debian/patches/libdvdnav-0005-xbmc-dvdnav-added-reading-of-VTS_TMAPT-and-TITLE_C_A.patch b/debian/patches/libdvdnav-0005-xbmc-dvdnav-added-reading-of-VTS_TMAPT-and-TITLE_C_A.patch
index 6fd6dd5..db3a662 100644
--- a/debian/patches/libdvdnav-0005-xbmc-dvdnav-added-reading-of-VTS_TMAPT-and-TITLE_C_A.patch
+++ b/debian/patches/libdvdnav-0005-xbmc-dvdnav-added-reading-of-VTS_TMAPT-and-TITLE_C_A.patch
@@ -10,8 +10,8 @@ Subject: [PATCH 05/10] [xbmc][dvdnav] added reading of VTS_TMAPT and
 
 diff --git a/src/vm/vm.c b/src/vm/vm.c
 index 7ff285d..1794ce7 100644
---- a/src/vm/vm.c
-+++ b/src/vm/vm.c
+--- a/libdvdnav-5-0-3/src/vm/vm.c
++++ b/libdvdnav-5-0-3/src/vm/vm.c
 @@ -252,6 +252,15 @@ int ifoOpenNewVTSI(vm_t *vm, dvd_reader_t *dvd, int vtsN) {
      fprintf(MSG_OUT, "libdvdnav: ifoRead_TITLE_VOBU_ADMAP vtsi failed\n");
      return 0;
diff --git a/debian/patches/libdvdnav-0006-xbmc-dvdnav-various-safeguards.patch b/debian/patches/libdvdnav-0006-xbmc-dvdnav-various-safeguards.patch
index be54c37..229eec5 100644
--- a/debian/patches/libdvdnav-0006-xbmc-dvdnav-various-safeguards.patch
+++ b/debian/patches/libdvdnav-0006-xbmc-dvdnav-various-safeguards.patch
@@ -10,8 +10,8 @@ Subject: [PATCH 06/10] [xbmc][dvdnav] various safeguards
 
 diff --git a/src/dvdnav.c b/src/dvdnav.c
 index 3b61059..c188420 100644
---- a/src/dvdnav.c
-+++ b/src/dvdnav.c
+--- a/libdvdnav-5-0-3/src/dvdnav.c
++++ b/libdvdnav-5-0-3/src/dvdnav.c
 @@ -1265,6 +1265,11 @@ user_ops_t dvdnav_get_restrictions(dvdnav_t* this) {
  
    ops.ops_int = 0;
@@ -26,8 +26,8 @@ index 3b61059..c188420 100644
      return ops.ops_struct;
 diff --git a/src/read_cache.c b/src/read_cache.c
 index 1b2862d..1e1c37d 100644
---- a/src/read_cache.c
-+++ b/src/read_cache.c
+--- a/libdvdnav-5-0-3/src/read_cache.c
++++ b/libdvdnav-5-0-3/src/read_cache.c
 @@ -335,7 +335,7 @@ dvdnav_status_t dvdnav_free_cache_block(dvdnav_t *self, unsigned char *buf) {
    pthread_mutex_lock(&cache->lock);
    for (i = 0; i < READ_CACHE_CHUNKS; i++) {
diff --git a/debian/patches/libdvdnav-0007-xbmc-dvdnav-disallow-time-search-when-navigation-pro.patch b/debian/patches/libdvdnav-0007-xbmc-dvdnav-disallow-time-search-when-navigation-pro.patch
index 1ab5e5e..e520168 100644
--- a/debian/patches/libdvdnav-0007-xbmc-dvdnav-disallow-time-search-when-navigation-pro.patch
+++ b/debian/patches/libdvdnav-0007-xbmc-dvdnav-disallow-time-search-when-navigation-pro.patch
@@ -10,8 +10,8 @@ Subject: [PATCH 07/10] [xbmc][dvdnav] disallow time search when navigation
 
 diff --git a/src/searching.c b/src/searching.c
 index fd28fb3..1c9ed6f 100644
---- a/src/searching.c
-+++ b/src/searching.c
+--- a/libdvdnav-5-0-3/src/searching.c
++++ b/libdvdnav-5-0-3/src/searching.c
 @@ -121,6 +121,12 @@ dvdnav_status_t dvdnav_time_search(dvdnav_t *this,
      return DVDNAV_STATUS_ERR;
    }
diff --git a/debian/patches/libdvdnav-0008-xbmc-dvdnav-additional-debug-log.patch b/debian/patches/libdvdnav-0008-xbmc-dvdnav-additional-debug-log.patch
index fb6ddd8..17ff085 100644
--- a/debian/patches/libdvdnav-0008-xbmc-dvdnav-additional-debug-log.patch
+++ b/debian/patches/libdvdnav-0008-xbmc-dvdnav-additional-debug-log.patch
@@ -9,8 +9,8 @@ Subject: [PATCH 08/10] [xbmc][dvdnav] additional debug log
 
 diff --git a/src/searching.c b/src/searching.c
 index 1c9ed6f..1271f87 100644
---- a/src/searching.c
-+++ b/src/searching.c
+--- a/libdvdnav-5-0-3/src/searching.c
++++ b/libdvdnav-5-0-3/src/searching.c
 @@ -208,6 +208,7 @@ dvdnav_status_t dvdnav_sector_search(dvdnav_t *this,
  
    result = dvdnav_get_position(this, &target, &length);
diff --git a/debian/patches/libdvdnav-0009-xbmc-dvdnav-add-timemap-to-time-search.patch b/debian/patches/libdvdnav-0009-xbmc-dvdnav-add-timemap-to-time-search.patch
index 215a6ab..fd3bf38 100644
--- a/debian/patches/libdvdnav-0009-xbmc-dvdnav-add-timemap-to-time-search.patch
+++ b/debian/patches/libdvdnav-0009-xbmc-dvdnav-add-timemap-to-time-search.patch
@@ -9,8 +9,8 @@ Subject: [PATCH 09/10] [xbmc][dvdnav] add timemap to time search
 
 diff --git a/src/searching.c b/src/searching.c
 index 1271f87..ba7481b 100644
---- a/src/searching.c
-+++ b/src/searching.c
+--- a/libdvdnav-5-0-3/src/searching.c
++++ b/libdvdnav-5-0-3/src/searching.c
 @@ -142,24 +142,105 @@ dvdnav_status_t dvdnav_time_search(dvdnav_t *this,
        last_cell_nr = state->pgc->nr_of_cells;
    }
diff --git a/debian/patches/libdvdnav-0010-xbmc-dvdnav-expose-dvdnav_jump_to_sector_by_time.patch b/debian/patches/libdvdnav-0010-xbmc-dvdnav-expose-dvdnav_jump_to_sector_by_time.patch
index 6cf074a..6029e9c 100644
--- a/debian/patches/libdvdnav-0010-xbmc-dvdnav-expose-dvdnav_jump_to_sector_by_time.patch
+++ b/debian/patches/libdvdnav-0010-xbmc-dvdnav-expose-dvdnav_jump_to_sector_by_time.patch
@@ -9,8 +9,8 @@ Subject: [PATCH 10/10] [xbmc][dvdnav] expose dvdnav_jump_to_sector_by_time
 
 diff --git a/src/dvdnav/dvdnav.h b/src/dvdnav/dvdnav.h
 index 9f82b0f..731c0ee 100644
---- a/src/dvdnav/dvdnav.h
-+++ b/src/dvdnav/dvdnav.h
+--- a/libdvdnav-5-0-3/src/dvdnav/dvdnav.h
++++ b/libdvdnav-5-0-3/src/dvdnav/dvdnav.h
 @@ -382,6 +382,14 @@ dvdnav_status_t dvdnav_sector_search(dvdnav_t *self,
  int64_t dvdnav_get_current_time(dvdnav_t *self);
  
diff --git a/debian/patches/libdvdread-0001-xbmc-libdvdread-added-defines-includes.patch b/debian/patches/libdvdread-0001-xbmc-libdvdread-added-defines-includes.patch
index f5e1dd6..5f0893d 100644
--- a/debian/patches/libdvdread-0001-xbmc-libdvdread-added-defines-includes.patch
+++ b/debian/patches/libdvdread-0001-xbmc-libdvdread-added-defines-includes.patch
@@ -10,8 +10,8 @@ Subject: [PATCH 1/3] [xbmc][libdvdread] added defines/includes
 
 diff --git a/src/dvd_input.h b/src/dvd_input.h
 index f981d45..3d33eb1 100644
---- a/src/dvd_input.h
-+++ b/src/dvd_input.h
+--- a/libdvdread-5-0-3/src/dvd_input.h
++++ b/libdvdread-5-0-3/src/dvd_input.h
 @@ -34,6 +34,13 @@ typedef struct dvd_input_s *dvd_input_t;
  #if defined( __MINGW32__ )
  #   undef  lseek
@@ -28,8 +28,8 @@ index f981d45..3d33eb1 100644
  #   undef  stat
 diff --git a/src/dvd_reader.c b/src/dvd_reader.c
 index 4e112d3..5cc06d6 100644
---- a/src/dvd_reader.c
-+++ b/src/dvd_reader.c
+--- a/libdvdread-5-0-3/src/dvd_reader.c
++++ b/libdvdread-5-0-3/src/dvd_reader.c
 @@ -33,6 +33,9 @@
  #include <limits.h>         /* PATH_MAX */
  #include <dirent.h>         /* opendir, readdir */
diff --git a/debian/patches/libdvdread-0002-xbmc-libdvdread-don-t-do-symlink-resolution-on-kodi.patch b/debian/patches/libdvdread-0002-xbmc-libdvdread-don-t-do-symlink-resolution-on-kodi.patch
index a1555f7..536ff2d 100644
--- a/debian/patches/libdvdread-0002-xbmc-libdvdread-don-t-do-symlink-resolution-on-kodi.patch
+++ b/debian/patches/libdvdread-0002-xbmc-libdvdread-don-t-do-symlink-resolution-on-kodi.patch
@@ -9,8 +9,8 @@ Subject: [PATCH 2/3] [xbmc][libdvdread] don't do symlink resolution on kodi
 
 diff --git a/src/dvd_reader.c b/src/dvd_reader.c
 index 5cc06d6..3c31a1c 100644
---- a/src/dvd_reader.c
-+++ b/src/dvd_reader.c
+--- a/libdvdread-5-0-3/src/dvd_reader.c
++++ b/libdvdread-5-0-3/src/dvd_reader.c
 @@ -432,8 +432,9 @@ static dvd_reader_t *DVDOpenCommon( const char *ppath,
      if( !(path_copy = strdup( path ) ) )
        goto DVDOpen_error;
diff --git a/debian/patches/libdvdread-0003-xbmc-libdvdread-kodi-VFS-doesn-t-support-opendir-use.patch b/debian/patches/libdvdread-0003-xbmc-libdvdread-kodi-VFS-doesn-t-support-opendir-use.patch
index c12a60f..e73ac72 100644
--- a/debian/patches/libdvdread-0003-xbmc-libdvdread-kodi-VFS-doesn-t-support-opendir-use.patch
+++ b/debian/patches/libdvdread-0003-xbmc-libdvdread-kodi-VFS-doesn-t-support-opendir-use.patch
@@ -10,8 +10,8 @@ Subject: [PATCH 3/3] [xbmc][libdvdread] kodi VFS doesn't support opendir, use
 
 diff --git a/src/dvd_reader.c b/src/dvd_reader.c
 index 3c31a1c..3c5ec90 100644
---- a/src/dvd_reader.c
-+++ b/src/dvd_reader.c
+--- a/libdvdread-5-0-3/src/dvd_reader.c
++++ b/libdvdread-5-0-3/src/dvd_reader.c
 @@ -692,6 +692,16 @@ static dvd_file_t *DVDOpenFileUDF( dvd_reader_t *dvd, const char *filename,
   */
  static int findDirFile( const char *path, const char *file, char *filename )
diff --git a/debian/patches/libdvdread-debian-0001-libdvdcss.patch b/debian/patches/libdvdread-debian-0001-libdvdcss.patch
index 78ad091..d0bc2e3 100644
--- a/debian/patches/libdvdread-debian-0001-libdvdcss.patch
+++ b/debian/patches/libdvdread-debian-0001-libdvdcss.patch
@@ -7,8 +7,8 @@ Print information about the CSS README.
  src/dvd_input.c | 9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)
 
---- a/src/dvd_input.c
-+++ b/src/dvd_input.c
+--- a/libdvdread-5-0-3/src/dvd_input.c
++++ b/libdvdread-5-0-3/src/dvd_input.c
 @@ -366,7 +366,14 @@
      return 1;
  
diff --git a/debian/patches/libdvdread-debian-0006-descriptor.patch b/debian/patches/libdvdread-debian-0006-descriptor.patch
index f0dbb10..287448b 100644
--- a/debian/patches/libdvdread-debian-0006-descriptor.patch
+++ b/debian/patches/libdvdread-debian-0006-descriptor.patch
@@ -25,8 +25,8 @@ Closes: #663512
  src/dvd_udf.c | 37 ++++++++++++++++++++++++++++++++++---
  1 file changed, 34 insertions(+), 3 deletions(-)
 
---- a/src/dvd_udf.c
-+++ b/src/dvd_udf.c
+--- a/libdvdread-5-0-3/src/dvd_udf.c
++++ b/libdvdread-5-0-3/src/dvd_udf.c
 @@ -82,6 +82,8 @@
    uint32_t AccessType;
    uint32_t Start;
diff --git a/debian/patches/libdvdread-extra-0001-Use-real-dlopen-for-libdvdcss.patch b/debian/patches/libdvdread-extra-0001-Use-real-dlopen-for-libdvdcss.patch
index acb4e61..ac7b8b0 100644
--- a/debian/patches/libdvdread-extra-0001-Use-real-dlopen-for-libdvdcss.patch
+++ b/debian/patches/libdvdread-extra-0001-Use-real-dlopen-for-libdvdcss.patch
@@ -9,8 +9,8 @@ Subject: [PATCH] Use real dlopen() for libdvdcss
 
 diff --git a/src/dvd_input.c b/src/dvd_input.c
 index d28efe7..ec3ce67 100644
---- a/src/dvd_input.c
-+++ b/src/dvd_input.c
+--- a/libdvdread-5-0-3/src/dvd_input.c
++++ b/libdvdread-5-0-3/src/dvd_input.c
 @@ -19,6 +19,8 @@
   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
   */
diff --git a/debian/patches/series b/debian/patches/series
index 9c531b2..2c93c98 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,7 +1,6 @@
 0001-c-pluff-Fix-format-string-warnings.patch
 0003-Revert-droid-fix-builds-with-AML-disabled.patch
 0004-Allocate-and-free-AVFrames-with-the-proper-FFmpeg-AP.patch
-0010-Autotools-Fake-empty-AE-override.patch
 01_reproducible_build.patch
 02_allow_all_arches.patch
 03-privacy.patch
@@ -15,3 +14,19 @@
 13-fix-tests.patch
 14-ignore-test-results.patch
 15-dont-use-openssl.patch
+libdvdnav-0001-xbmc-dvdnav-allow-get-set-vm-state.patch
+libdvdnav-0002-xbmc-dvdnav-expose-dvdnav_get_vm-dvdnav_get_button_i.patch
+libdvdnav-0003-xbmc-dvdnav-detection-of-dvd-name.patch
+libdvdnav-0004-xbmc-dvdnav-skip-cell-when-unrecoverable.patch
+libdvdnav-0005-xbmc-dvdnav-added-reading-of-VTS_TMAPT-and-TITLE_C_A.patch
+libdvdnav-0006-xbmc-dvdnav-various-safeguards.patch
+libdvdnav-0007-xbmc-dvdnav-disallow-time-search-when-navigation-pro.patch
+libdvdnav-0008-xbmc-dvdnav-additional-debug-log.patch
+libdvdnav-0009-xbmc-dvdnav-add-timemap-to-time-search.patch
+libdvdnav-0010-xbmc-dvdnav-expose-dvdnav_jump_to_sector_by_time.patch
+libdvdread-0001-xbmc-libdvdread-added-defines-includes.patch
+libdvdread-0002-xbmc-libdvdread-don-t-do-symlink-resolution-on-kodi.patch
+libdvdread-0003-xbmc-libdvdread-kodi-VFS-doesn-t-support-opendir-use.patch
+libdvdread-debian-0001-libdvdcss.patch
+libdvdread-debian-0006-descriptor.patch
+libdvdread-extra-0001-Use-real-dlopen-for-libdvdcss.patch
diff --git a/debian/rules b/debian/rules
index c4cc1a9..64aff94 100755
--- a/debian/rules
+++ b/debian/rules
@@ -83,10 +83,6 @@ override_dh_clean:
 	find . -name config.status -o -name config.cache -o -name config.log \
 		-exec rm -f "{}" \;
 	rm -rf tools/depends/target; \
-	ls $(CURDIR)/debian/patches/libdvdnav-* | tac | xargs cat | patch -R --no-backup-if-mismatch -r - -s -p1 \
-		-d $(DVDNAV_COMPONENT) || true
-	ls $(CURDIR)/debian/patches/libdvdread-* | tac | xargs cat | patch -R --no-backup-if-mismatch -r - -s -p1 \
-		-d $(DVDREAD_COMPONENT) || true
 	rm -rf $(CURDIR)/addons/webinterface.default
 	rm -f debian/dh-addon/*.1
 
@@ -103,8 +99,6 @@ DEJAVUSANS=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
 endif
 
 override_dh_auto_configure: configure
-	cat $(CURDIR)/debian/patches/libdvdnav-* | patch -p1 -d $(DVDNAV_COMPONENT)
-	cat $(CURDIR)/debian/patches/libdvdread-* | patch -p1 -d $(DVDREAD_COMPONENT)
 	cp -r $(CURDIR)/webinterface-default $(CURDIR)/addons/webinterface.default
 	sed -i 's/DEB_VERSION/"'$(VERSION)'"/' xbmc/Application.cpp xbmc/utils/SystemInfo.cpp
 	fontforge -script $(CURDIR)/debian/mergefonts.ff \
@@ -199,7 +193,7 @@ override_dh_gencontrol-arch:
 override_dh_gencontrol-indep:
 	dh_gencontrol -i
 
-# extract and patch customized libdvdread and libdvdnav and webinterface from 17.0 beta5
+# extract customized additional tarballs
 extract-components:
 	tar -xf $(CURDIR)/../kodi_"$(UPSTREAM_VERSION)".orig-$(DVDNAV_COMPONENT).tar.bz2 && \
 		mv libdvdnav-* $(CURDIR)/$(DVDNAV_COMPONENT)
diff --git a/media/Splash.png b/media/Splash.png
index fc6a4e0..72a1764 100644
Binary files a/media/Splash.png and b/media/Splash.png differ
diff --git a/media/banner.png b/media/banner.png
index e67c5cc..e3a0b26 100644
Binary files a/media/banner.png and b/media/banner.png differ
diff --git a/media/icon120x120.png b/media/icon120x120.png
index 45bdb7f..ea99e64 100644
Binary files a/media/icon120x120.png and b/media/icon120x120.png differ
diff --git a/media/icon256x256.png b/media/icon256x256.png
index 87f1bf4..d958660 100644
Binary files a/media/icon256x256.png and b/media/icon256x256.png differ
diff --git a/project/cmake/CMakeLists.txt b/project/cmake/CMakeLists.txt
index aecda36..504e4c0 100644
--- a/project/cmake/CMakeLists.txt
+++ b/project/cmake/CMakeLists.txt
@@ -103,7 +103,7 @@ list(APPEND DEPLIBS ${CMAKE_THREAD_LIBS_INIT})
 
 # Required dependencies
 set(required_deps Sqlite3 FreeType PCRE Cpluff LibDvd
-                  TinyXML Python Yajl
+                  TinyXML Python Yajl Cdio
                   Lzo2 Fribidi TagLib FFMPEG CrossGUID)
 if(NOT WIN32)
   list(APPEND required_deps ZLIB)
@@ -171,7 +171,6 @@ endif()
 
 if(ENABLE_OPTICAL)
   list(APPEND DEP_DEFINES -DHAS_DVD_DRIVE)
-  core_require_dep(Cdio)
 endif()
 
 if(ENABLE_LIRC)
diff --git a/project/cmake/addons/bootstrap/CMakeLists.txt b/project/cmake/addons/bootstrap/CMakeLists.txt
index c20b97e..66b7e3d 100644
--- a/project/cmake/addons/bootstrap/CMakeLists.txt
+++ b/project/cmake/addons/bootstrap/CMakeLists.txt
@@ -50,7 +50,6 @@ function(bootstrap_repo repo_id repo_url repo_revision)
                                       -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
                                       -DPROJECT_SOURCE_DIR=<SOURCE_DIR>
                                       -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-                                      -DADDONS_TO_BUILD=${ADDONS_TO_BUILD}
                                       -P ${PROJECT_SOURCE_DIR}/Bootstrap.cmake
                       )
 endfunction()
diff --git a/project/cmake/addons/bootstrap/repositories/binary-addons.txt b/project/cmake/addons/bootstrap/repositories/binary-addons.txt
index 7439983..a27f719 100644
--- a/project/cmake/addons/bootstrap/repositories/binary-addons.txt
+++ b/project/cmake/addons/bootstrap/repositories/binary-addons.txt
@@ -1 +1 @@
-binary-addons https://github.com/xbmc/repo-binary-addons.git Krypton
+binary-addons https://github.com/xbmc/repo-binary-addons.git 17.0-Krypton
diff --git a/project/cmake/installdata/common/common.txt b/project/cmake/installdata/common/common.txt
index c1e52f0..a9d1923 100644
--- a/project/cmake/installdata/common/common.txt
+++ b/project/cmake/installdata/common/common.txt
@@ -2,7 +2,6 @@ media/*
 sounds/*
 system/keymaps/*
 system/library/*
-system/players/VideoPlayer/etc/*
 system/shaders/*
 system/settings/*
 userdata/*
diff --git a/project/cmake/installdata/ios/fontconfig.txt b/project/cmake/installdata/ios/fontconfig.txt
new file mode 100644
index 0000000..1f1bd9d
--- /dev/null
+++ b/project/cmake/installdata/ios/fontconfig.txt
@@ -0,0 +1 @@
+system/players/VideoPlayer/etc/*
diff --git a/project/cmake/modules/FindLibDvd.cmake b/project/cmake/modules/FindLibDvd.cmake
index 59c6f96..a083ddc 100644
--- a/project/cmake/modules/FindLibDvd.cmake
+++ b/project/cmake/modules/FindLibDvd.cmake
@@ -123,9 +123,9 @@ if(NOT WIN32)
       set_target_properties(dvdcss PROPERTIES FOLDER "External Projects")
     endif()
 
-    set(DVDREAD_CFLAGS "-D_XBMC")
+    set(DVDREAD_CFLAGS "-D_XBMC -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
     if(ENABLE_DVDCSS)
-      set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
+      set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H")
     endif()
 
     set(DVDREAD_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a)
diff --git a/project/cmake/scripts/common/Macros.cmake b/project/cmake/scripts/common/Macros.cmake
index 17ab1aa..d8cdce9 100644
--- a/project/cmake/scripts/common/Macros.cmake
+++ b/project/cmake/scripts/common/Macros.cmake
@@ -584,6 +584,7 @@ function(core_find_git_rev stamp)
   else()
     find_package(Git)
     if(GIT_FOUND AND EXISTS ${CORE_SOURCE_DIR}/.git)
+      execute_process(COMMAND ${GIT_EXECUTABLE} update-index --ignore-submodules --refresh -q)
       execute_process(COMMAND ${GIT_EXECUTABLE} diff-files --ignore-submodules --quiet --
                       RESULT_VARIABLE status_code
                       WORKING_DIRECTORY ${CORE_SOURCE_DIR})
@@ -653,9 +654,9 @@ macro(core_find_versions)
   set(APP_VERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR})
   if(APP_VERSION_TAG)
     set(APP_VERSION ${APP_VERSION}-${APP_VERSION_TAG})
+    string(TOLOWER ${APP_VERSION_TAG} APP_VERSION_TAG_LC)
   endif()
   string(REPLACE "." "," FILE_VERSION ${APP_ADDON_API}.0)
-  string(TOLOWER ${APP_VERSION_TAG} APP_VERSION_TAG_LC)
   file(STRINGS ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h guilib_version REGEX "^.*GUILIB_API_VERSION (.*)$")
   string(REGEX REPLACE ".*\"(.*)\"" "\\1" guilib_version ${guilib_version})
   file(STRINGS ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h guilib_version_min REGEX "^.*GUILIB_MIN_API_VERSION (.*)$")
diff --git a/project/cmake/scripts/rbpi/ExtraTargets.cmake b/project/cmake/scripts/rbpi/ExtraTargets.cmake
new file mode 120000
index 0000000..e757c60
--- /dev/null
+++ b/project/cmake/scripts/rbpi/ExtraTargets.cmake
@@ -0,0 +1 @@
+../linux/ExtraTargets.cmake
\ No newline at end of file
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index c3804da..f28f5da 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -581,6 +581,11 @@
     </category>
     <category id="pictures" label="14217" help="38105">
       <group id="1" label="108">
+        <setting id="pictures.usetags" type="boolean" label="38207" help="38208">
+          <level>1</level>
+          <default>true</default>
+          <control type="toggle" />
+        </setting>
         <setting id="slideshow.staytime" type="integer" label="12378" help="36312">
           <level>0</level>
           <default>5</default>
@@ -665,13 +670,24 @@
           <control type="spinner" format="integer" delayed="true"/>
         </setting>
         <setting id="subtitles.font" type="string" label="14089" help="36185">
-          <level>3</level>
+          <level>1</level>
           <default>arial.ttf</default>
           <constraints>
             <options>fonts</options>
           </constraints>
           <control type="list" format="string" />
         </setting>
+        <setting id="subtitles.charset" type="string" parent="subtitles.font" label="735" help="36189">
+          <level>1</level>
+          <default>DEFAULT</default>
+          <constraints>
+            <options>charsets</options>
+          </constraints>
+          <dependencies>
+            <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
+          </dependencies>
+          <control type="list" format="string" />
+        </setting>
         <setting id="subtitles.height" type="integer" parent="subtitles.font" label="289" help="36186">
           <level>3</level>
           <default>28</default>
@@ -721,17 +737,6 @@
           </dependencies>
           <control type="list" format="string" />
         </setting>
-        <setting id="subtitles.charset" type="string" parent="subtitles.font" label="735" help="36189">
-          <level>3</level>
-          <default>DEFAULT</default>
-          <constraints>
-            <options>charsets</options>
-          </constraints>
-          <dependencies>
-            <dependency type="enable" on="property" name="IsUsingTTFSubtitles" setting="subtitles.font" />
-          </dependencies>
-          <control type="list" format="string" />
-        </setting>
         <setting id="subtitles.overrideassfonts" type="boolean" label="21368" help="36190">
           <level>3</level>
           <default>false</default>
diff --git a/tools/android/packaging/Makefile.in b/tools/android/packaging/Makefile.in
index b34fa6c..fb8b20b 100644
--- a/tools/android/packaging/Makefile.in
+++ b/tools/android/packaging/Makefile.in
@@ -117,6 +117,7 @@ res:
 	cp -fp media/drawable-mdpi/ic_launcher.png xbmc/res/drawable-mdpi/ic_launcher.png
 	cp -fp media/drawable-xhdpi/ic_launcher.png xbmc/res/drawable-xhdpi/ic_launcher.png
 	cp -fp media/drawable-xxhdpi/ic_launcher.png xbmc/res/drawable-xxhdpi/ic_launcher.png
+	cp -fp $(CORE_SOURCE_DIR)/media/Splash.png xbmc/res/drawable-xxxhdpi/splash.png
 	cp -fp media/drawable-xxxhdpi/ic_launcher.png xbmc/res/drawable-xxxhdpi/ic_launcher.png
 	cp -fp media/drawable-xhdpi/banner.png xbmc/res/drawable-xhdpi/banner.png
 	cp xbmc/strings.xml xbmc/res/values/
diff --git a/tools/android/packaging/media/drawable-xhdpi/banner.png b/tools/android/packaging/media/drawable-xhdpi/banner.png
index e67c5cc..e3a0b26 100644
Binary files a/tools/android/packaging/media/drawable-xhdpi/banner.png and b/tools/android/packaging/media/drawable-xhdpi/banner.png differ
diff --git a/tools/darwin/packaging/media/osx/background/DiskImageBackgroundKodi.png b/tools/darwin/packaging/media/osx/background/DiskImageBackgroundKodi.png
index a41c8f2..a13c658 100644
Binary files a/tools/darwin/packaging/media/osx/background/DiskImageBackgroundKodi.png and b/tools/darwin/packaging/media/osx/background/DiskImageBackgroundKodi.png differ
diff --git a/version.txt b/version.txt
index 12205dc..3cad8e8 100644
--- a/version.txt
+++ b/version.txt
@@ -3,9 +3,9 @@ COMPANY_NAME XBMC-Foundation
 WEBSITE http://kodi.tv
 VERSION_MAJOR 17
 VERSION_MINOR 0
-VERSION_TAG RC3
-VERSION_CODE 169903
-ADDON_API 16.9.903
+VERSION_TAG
+VERSION_CODE 170000
+ADDON_API 17.0.000
 
 # Notes:
 # Change AC_INIT in configure.ac
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index 620366e..c6ef0c0 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -960,6 +960,10 @@ bool CApplication::InitDirectoriesOSX()
   else
     userHome = "/root";
 
+  std::string binaddonAltDir;
+  if (getenv("KODI_BINADDON_PATH"))
+    binaddonAltDir = getenv("KODI_BINADDON_PATH");
+
   std::string appPath = CUtil::GetHomePath();
   setenv("KODI_HOME", appPath.c_str(), 0);
 
@@ -978,6 +982,7 @@ bool CApplication::InitDirectoriesOSX()
   {
     // map our special drives
     CSpecialProtocol::SetXBMCBinPath(appPath);
+    CSpecialProtocol::SetXBMCAltBinAddonPath(binaddonAltDir);
     CSpecialProtocol::SetXBMCPath(appPath);
     #if defined(TARGET_DARWIN_IOS)
       std::string appName = CCompileInfo::GetAppName();
@@ -1015,6 +1020,7 @@ bool CApplication::InitDirectoriesOSX()
     URIUtils::AddSlashAtEnd(appPath);
 
     CSpecialProtocol::SetXBMCBinPath(appPath);
+    CSpecialProtocol::SetXBMCAltBinAddonPath(binaddonAltDir);
     CSpecialProtocol::SetXBMCPath(appPath);
     CSpecialProtocol::SetHomePath(URIUtils::AddFileToFolder(appPath, "portable_data"));
     CSpecialProtocol::SetMasterProfilePath(URIUtils::AddFileToFolder(appPath, "portable_data/userdata"));
@@ -4649,6 +4655,11 @@ const std::string& CApplication::CurrentFile()
   return m_itemCurrentFile->GetPath();
 }
 
+std::shared_ptr<CFileItem> CApplication::CurrentFileItemPtr()
+{
+  return m_itemCurrentFile;
+}
+
 CFileItem& CApplication::CurrentFileItem()
 {
   return *m_itemCurrentFile;
diff --git a/xbmc/Application.h b/xbmc/Application.h
index 580fdce..8d5876e 100644
--- a/xbmc/Application.h
+++ b/xbmc/Application.h
@@ -164,6 +164,7 @@ public:
   void ReloadSkin(bool confirm = false);
   const std::string& CurrentFile();
   CFileItem& CurrentFileItem();
+  std::shared_ptr<CFileItem> CurrentFileItemPtr();
   void SetCurrentFileItem(const CFileItem &item);
   CFileItem& CurrentUnstackedItem();
   virtual bool OnMessage(CGUIMessage& message) override;
diff --git a/xbmc/ContextMenuManager.cpp b/xbmc/ContextMenuManager.cpp
index 4329c54..9268872 100644
--- a/xbmc/ContextMenuManager.cpp
+++ b/xbmc/ContextMenuManager.cpp
@@ -43,7 +43,13 @@ CContextMenuManager::CContextMenuManager(CAddonMgr& addonMgr)
 
 CContextMenuManager::~CContextMenuManager()
 {
+  Deinit();
+}
+
+void CContextMenuManager::Deinit()
+{
   m_addonMgr.Events().Unsubscribe(this);
+  m_items.clear();
 }
 
 CContextMenuManager& CContextMenuManager::GetInstance()
diff --git a/xbmc/ContextMenuManager.h b/xbmc/ContextMenuManager.h
index 3a96b8a..7f613b1 100644
--- a/xbmc/ContextMenuManager.h
+++ b/xbmc/ContextMenuManager.h
@@ -40,6 +40,7 @@ public:
   static CContextMenuManager& GetInstance();
 
   void Init();
+  void Deinit();
 
   ContextMenuView GetItems(const CFileItem& item, const CContextMenuItem& root = MAIN) const;
 
diff --git a/xbmc/URL.cpp b/xbmc/URL.cpp
index 4d506d8..95fe914 100644
--- a/xbmc/URL.cpp
+++ b/xbmc/URL.cpp
@@ -705,7 +705,7 @@ std::string CURL::Encode(const std::string& strURLData)
     if (StringUtils::isasciialphanum(kar) || kar == '-' || kar == '.' || kar == '_' || kar == '!' || kar == '(' || kar == ')')
       strResult.push_back(kar);
     else
-      strResult += StringUtils::Format("%%%2.2X", (unsigned int)((unsigned char)kar));
+      strResult += StringUtils::Format("%%%2.2x", (unsigned int)((unsigned char)kar));
   }
 
   return strResult;
diff --git a/xbmc/addons/AddonDatabase.cpp b/xbmc/addons/AddonDatabase.cpp
index 4750b42..d6c4e85 100644
--- a/xbmc/addons/AddonDatabase.cpp
+++ b/xbmc/addons/AddonDatabase.cpp
@@ -133,7 +133,7 @@ int CAddonDatabase::GetMinSchemaVersion() const
 
 int CAddonDatabase::GetSchemaVersion() const
 {
-  return 26;
+  return 27;
 }
 
 void CAddonDatabase::CreateTables()
@@ -146,6 +146,7 @@ void CAddonDatabase::CreateTables()
       "version TEXT NOT NULL,"
       "name TEXT NOT NULL,"
       "summary TEXT NOT NULL,"
+      "news TEXT NOT NULL,"
       "description TEXT NOT NULL)");
 
   CLog::Log(LOGINFO, "create repo table");
@@ -301,6 +302,10 @@ void CAddonDatabase::UpdateTables(int version)
         "summary TEXT NOT NULL,"
         "description TEXT NOT NULL)");
   }
+  if (version < 27)
+  {
+    m_pDS->exec("ALTER TABLE addons ADD news TEXT NOT NULL DEFAULT ''");
+  }
 }
 
 void CAddonDatabase::SyncInstalled(const std::set<std::string>& ids,
@@ -478,7 +483,7 @@ bool CAddonDatabase::FindByAddonId(const std::string& addonId, ADDON::VECADDONS&
     if (NULL == m_pDS.get()) return false;
 
     std::string sql = PrepareSQL(
-        "SELECT addons.version, addons.name, addons.summary, addons.description, addons.metadata,"
+        "SELECT addons.version, addons.name, addons.summary, addons.description, addons.metadata, addons.news,"
         "repo.addonID AS repoID FROM addons "
         "JOIN addonlinkrepo ON addonlinkrepo.idAddon=addons.id "
         "JOIN repo ON repo.id=addonlinkrepo.idRepo "
@@ -498,7 +503,8 @@ bool CAddonDatabase::FindByAddonId(const std::string& addonId, ADDON::VECADDONS&
       builder.SetSummary(m_pDS->fv(2).get_asString());
       builder.SetDescription(m_pDS->fv(3).get_asString());
       DeserializeMetadata(m_pDS->fv(4).get_asString(), builder);
-      builder.SetOrigin(m_pDS->fv(5).get_asString());
+      builder.SetChangelog(m_pDS->fv(5).get_asString());
+      builder.SetOrigin(m_pDS->fv(6).get_asString());
 
       auto addon = builder.Build();
       if (addon)
@@ -792,14 +798,15 @@ bool CAddonDatabase::UpdateRepositoryContent(const std::string& repository, cons
     for (const auto& addon : addons)
     {
       m_pDS->exec(PrepareSQL(
-          "INSERT INTO addons (id, metadata, addonID, version, name, summary, description) "
-          "VALUES (NULL, '%s', '%s', '%s', '%s','%s', '%s')",
+          "INSERT INTO addons (id, metadata, addonID, version, name, summary, description, news) "
+          "VALUES (NULL, '%s', '%s', '%s', '%s','%s', '%s','%s')",
           SerializeMetadata(*addon).c_str(),
           addon->ID().c_str(),
           addon->Version().asString().c_str(),
           addon->Name().c_str(),
           addon->Summary().c_str(),
-          addon->Description().c_str()));
+          addon->Description().c_str(),
+          addon->ChangeLog().c_str()));
 
       auto idAddon = m_pDS->lastinsertid();
       if (idAddon <= 0)
diff --git a/xbmc/addons/FilesystemInstaller.cpp b/xbmc/addons/FilesystemInstaller.cpp
index bd4a931..81b83e4 100644
--- a/xbmc/addons/FilesystemInstaller.cpp
+++ b/xbmc/addons/FilesystemInstaller.cpp
@@ -26,8 +26,35 @@
 #include "utils/StringUtils.h"
 #include "utils/URIUtils.h"
 
+#ifdef TARGET_POSIX
+#include "XTimeUtils.h"
+#endif
+
 using namespace XFILE;
 
+namespace
+{
+
+bool renameOrRetry(const std::string & source, const std::string & dest, const char * description)
+{
+  auto count = 1;
+  auto result = false;
+  do
+  {
+    result = CFile::Rename(source, dest);
+    if (!result)
+    {
+      CLog::Log(LOGERROR, "Failed to move %s addon files from '%s' to '%s', retrying in 500ms",
+			          description, source.c_str(), dest.c_str());
+      Sleep(500);
+    }
+  } while (!result && count++ < 4);
+
+  return result;
+}
+
+} // end namespace unnamed
+
 CFilesystemInstaller::CFilesystemInstaller()
 {
   m_addonFolder = CSpecialProtocol::TranslatePath("special://home/addons/");
@@ -52,18 +79,12 @@ bool CFilesystemInstaller::InstallToFilesystem(const std::string& archive, const
   bool hasOldData = CDirectory::Exists(addonFolder);
   if (hasOldData)
   {
-    if (!CFile::Rename(addonFolder, oldAddonData))
-    {
-      CLog::Log(LOGERROR, "Failed to move old addon files from '%s' to '%s'", addonFolder.c_str(), oldAddonData.c_str());
+    if (!renameOrRetry(addonFolder, oldAddonData, "old"))
       return false;
-    }
   }
 
-  if (!CFile::Rename(newAddonData, addonFolder))
-  {
-    CLog::Log(LOGERROR, "Failed to move new addon files from '%s' to '%s'", newAddonData.c_str(), addonFolder.c_str());
+  if (!renameOrRetry(newAddonData, addonFolder, "new"))
     return false;
-  }
 
   if (hasOldData)
   {
diff --git a/xbmc/addons/PVRClient.cpp b/xbmc/addons/PVRClient.cpp
index d85a00d..1ab7381 100644
--- a/xbmc/addons/PVRClient.cpp
+++ b/xbmc/addons/PVRClient.cpp
@@ -101,6 +101,24 @@ void CPVRClient::OnEnabled()
   CPVRManager::GetInstance().Clients()->UpdateAddons();
 }
 
+void CPVRClient::StopRunningInstance()
+{
+  const ADDON::AddonPtr addon(GetRunningInstance());
+  if (addon)
+  {
+    // stop the pvr manager and stop and unload the running pvr addon
+    PVR::CPVRManager::GetInstance().Stop();
+    CPVRManager::GetInstance().Clients()->StopClient(addon, false);
+  }
+}
+
+void CPVRClient::OnPreInstall()
+{
+  // note: this method is also called on update; thus stop and unload possibly running instance
+  StopRunningInstance();
+  CAddon::OnPreInstall();
+}
+
 void CPVRClient::OnPostInstall(bool update, bool modal)
 {
   CAddon::OnPostInstall(update, modal);
@@ -109,8 +127,7 @@ void CPVRClient::OnPostInstall(bool update, bool modal)
 
 void CPVRClient::OnPreUnInstall()
 {
-  // stop the pvr manager, so running pvr add-ons are stopped and closed
-  PVR::CPVRManager::GetInstance().Stop();
+  StopRunningInstance();
   CAddon::OnPreUnInstall();
 }
 
diff --git a/xbmc/addons/PVRClient.h b/xbmc/addons/PVRClient.h
index 8262ed5..1f3a47c 100644
--- a/xbmc/addons/PVRClient.h
+++ b/xbmc/addons/PVRClient.h
@@ -72,6 +72,7 @@ namespace PVR
 
     virtual void OnDisabled() override;
     virtual void OnEnabled() override;
+    virtual void OnPreInstall() override;
     virtual void OnPostInstall(bool update, bool modal) override;
     virtual void OnPreUnInstall() override;
     virtual void OnPostUnInstall() override;
@@ -706,6 +707,11 @@ namespace PVR
      */
     bool CanPlayChannel(const CPVRChannelPtr &channel) const;
 
+    /*!
+     * @brief Stop this instance, if it is currently running.
+     */
+    void StopRunningInstance();
+
     bool LogError(const PVR_ERROR error, const char *strMethod) const;
     void LogException(const std::exception &e, const char *strFunctionName) const;
 
diff --git a/xbmc/cores/AudioEngine/Makefile.in b/xbmc/cores/AudioEngine/Makefile.in
index 9a4e998..edb6b11 100644
--- a/xbmc/cores/AudioEngine/Makefile.in
+++ b/xbmc/cores/AudioEngine/Makefile.in
@@ -83,6 +83,5 @@ SRCS += Utils/AELimiter.cpp
 SRCS += Encoders/AEEncoderFFmpeg.cpp
 
 LIB   = audioengine.a
-
 include @abs_top_srcdir@/Makefile.include
 -include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp
index 7149b34..1698b2f 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp
@@ -469,7 +469,10 @@ bool CAESinkAUDIOTRACK::Initialize(AEAudioFormat &format, std::string &device)
       Deinitialize();
       return false;
     }
-    CLog::Log(LOGDEBUG, "CAESinkAUDIOTRACK::Initialize returned: m_sampleRate %u; format:%s; min_buffer_size %u; m_frames %u; m_frameSize %u; channels: %d", m_sink_sampleRate, CAEUtil::DataFormatToStr(m_format.m_dataFormat), m_min_buffer_size, m_format.m_frames, m_format.m_frameSize, m_format.m_channelLayout.Count());
+    const char* method = m_passthrough ? (m_info.m_wantsIECPassthrough ? "IEC (PT)" : "RAW (PT)") : "PCM";
+    CLog::Log(LOGNOTICE, "CAESinkAUDIOTRACK::Initializing with: m_sampleRate: %u format: %s (AE) method: %s stream-type: %s min_buffer_size: %u m_frames: %u m_frameSize: %u channels: %d",
+                          m_sink_sampleRate, CAEUtil::DataFormatToStr(m_format.m_dataFormat), method, m_passthrough ? CAEUtil::StreamTypeToStr(m_format.m_streamInfo.m_type) : "PCM-STREAM",
+                          m_min_buffer_size, m_format.m_frames, m_format.m_frameSize, m_format.m_channelLayout.Count());
   }
   format = m_format;
 
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp
index 92bdd83..7500ead 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecAndroidMediaCodec.cpp
@@ -685,6 +685,8 @@ void CDVDVideoCodecAndroidMediaCodec::Dispose()
       xbmc_jnienv()->ExceptionClear();
   }
   ReleaseSurfaceTexture();
+  if (m_render_surface)
+    CXBMCApp::get()->clearVideoView();
 
   SAFE_DELETE(m_bitstream);
   s_instances--;
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index 4129d3d..df2445d 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -596,7 +596,12 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
     return VC_ERROR;
 
   if (pData)
+  {
     m_iLastKeyframe++;
+    // put a limit on convergence count to avoid huge mem usage on streams without keyframes
+    if (m_iLastKeyframe > 300)
+      m_iLastKeyframe = 300;
+  }
 
   if (m_pHardware)
   {
@@ -703,6 +708,9 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
 
   if (!m_started)
   {
+    if (m_iLastKeyframe >= 300 && m_pDecodedFrame->pict_type == AV_PICTURE_TYPE_I)
+      m_started = true;
+
     av_frame_unref(m_pDecodedFrame);
     return VC_BUFFER;
   }
@@ -712,10 +720,6 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
   else
     m_interlaced = false;
 
-  // put a limit on convergence count to avoid huge mem usage on streams without keyframes
-  if (m_iLastKeyframe > 300)
-    m_iLastKeyframe = 300;
-
   //! @todo check if this work-around is still required
   if(m_pCodecContext->codec_id == AV_CODEC_ID_SVQ3)
     m_started = true;
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.h
index 2170515..da28645 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.h
@@ -147,7 +147,7 @@ protected:
 
   // ID3DResource overrides
   void OnCreateDevice() override  {}
-  void OnDestroyDevice() override { CSingleLock lock(m_section); m_state = DXVA_LOST;  m_event.Reset(); }
+  void OnDestroyDevice(bool fatal) override { CSingleLock lock(m_section); m_state = DXVA_LOST;  m_event.Reset(); }
   void OnLostDevice() override    { CSingleLock lock(m_section); m_state = DXVA_LOST;  m_event.Reset(); }
   void OnResetDevice() override   { CSingleLock lock(m_section); m_state = DXVA_RESET; m_event.Set();   }
 
diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.cpp b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
index e2b77c3..bd11cd8 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayer.cpp
+++ b/xbmc/cores/VideoPlayer/VideoPlayer.cpp
@@ -2013,7 +2013,8 @@ void CVideoPlayer::HandlePlaySpeed()
                  (m_CurrentAudio.packets == 0 && m_CurrentVideo.packets > threshold);
 
     if (m_CurrentAudio.syncState == IDVDStreamPlayer::SYNC_WAITSYNC &&
-        m_CurrentAudio.avsync == CCurrentStream::AV_SYNC_CONT)
+        (m_CurrentAudio.avsync == CCurrentStream::AV_SYNC_CONT ||
+         m_CurrentVideo.syncState == IDVDStreamPlayer::SYNC_INSYNC))
     {
       m_CurrentAudio.syncState = IDVDStreamPlayer::SYNC_INSYNC;
       m_CurrentAudio.avsync = CCurrentStream::AV_SYNC_NONE;
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h
index 60be085..4a3dafd 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h
@@ -64,7 +64,7 @@ public:
 
   // ID3DResource overrides
   void OnCreateDevice() override  {}
-  void OnDestroyDevice() override { CSingleLock lock(m_section); UnInit(); }
+  void OnDestroyDevice(bool fatal) override { CSingleLock lock(m_section); UnInit(); }
   void OnLostDevice() override    { CSingleLock lock(m_section); UnInit(); }
   void OnResetDevice() override   { CSingleLock lock(m_section); Close();  }
 
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererMediaCodecSurface.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererMediaCodecSurface.cpp
index a7287c6..8fefc1c 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererMediaCodecSurface.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererMediaCodecSurface.cpp
@@ -143,6 +143,11 @@ bool CRendererMediaCodecSurface::RenderHook(int index)
         srcRect.x2 *= 2.0;
       break;
 
+      case RENDER_STEREO_MODE_MONO:
+        dstRect.y2 = dstRect.y2 * (dstRect.y2 / m_sourceRect.y2);
+        dstRect.x2 = dstRect.x2 * (dstRect.x2 / m_sourceRect.x2);
+      break;
+
       default:
       break;
     }
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRendererDX.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRendererDX.cpp
index d5e36af..d9afae7 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRendererDX.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRendererDX.cpp
@@ -164,6 +164,10 @@ void COverlayQuadsDX::Render(SRenderState &state)
   if (m_count == 0)
     return;
 
+  ID3D11Buffer* vertexBuffer = m_vertex.Get();
+  if (vertexBuffer == nullptr)
+    return;
+
   ID3D11DeviceContext* pContext = g_Windowing.Get3D11Context();
   CGUIShaderDX* pGUIShader = g_Windowing.GetGUIShader();
 
@@ -186,7 +190,6 @@ void COverlayQuadsDX::Render(SRenderState &state)
   const unsigned stride = sizeof(Vertex);
   const unsigned offset = 0;
 
-  ID3D11Buffer* vertexBuffer = m_vertex.Get();
   // Set the vertex buffer to active in the input assembler so it can be rendered.
   pContext->IASetVertexBuffers(0, 1, &vertexBuffer, &stride, &offset);
   // Set the type of primitive that should be rendered from this vertex buffer, in this case triangles.
@@ -329,6 +332,10 @@ void COverlayImageDX::Load(uint32_t* rgba, int width, int height, int stride)
 
 void COverlayImageDX::Render(SRenderState &state)
 {
+  ID3D11Buffer* vertexBuffer = m_vertex.Get();
+  if (vertexBuffer == nullptr)
+    return;
+
   ID3D11DeviceContext* pContext = g_Windowing.Get3D11Context();
   CGUIShaderDX* pGUIShader = g_Windowing.GetGUIShader();
 
@@ -353,7 +360,6 @@ void COverlayImageDX::Render(SRenderState &state)
   const unsigned stride = m_vertex.GetStride();
   const unsigned offset = 0;
 
-  ID3D11Buffer* vertexBuffer = m_vertex.Get();
   pContext->IASetVertexBuffers(0, 1, &vertexBuffer, &stride, &offset);
   pContext->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
 
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp
index a50e9b1..9bf0310 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp
@@ -507,7 +507,7 @@ void CRenderCaptureDX::OnLostDevice()
   SetState(CAPTURESTATE_FAILED);
 }
 
-void CRenderCaptureDX::OnDestroyDevice()
+void CRenderCaptureDX::OnDestroyDevice(bool fatal)
 {
   CleanupDX();
   SetState(CAPTURESTATE_FAILED);
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.h b/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.h
index 640461f..9f9565f 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.h
@@ -210,7 +210,7 @@ class CRenderCaptureDX : public CRenderCaptureBase, public ID3DResource
     void EndRender();
     void ReadOut();
     
-    virtual void OnDestroyDevice();
+    virtual void OnDestroyDevice(bool fatal);
     virtual void OnLostDevice();
     virtual void OnCreateDevice() {};
 
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
index 17c428c..420b5b5 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp
@@ -236,8 +236,8 @@ bool CRenderManager::Configure(DVDVideoPicture& picture, float fps, unsigned fla
     m_NumberBuffers  = buffers;
     m_renderState = STATE_CONFIGURING;
     m_stateEvent.Reset();
-
-    CheckEnableClockSync();
+    m_clockSync.Reset();
+    m_dvdClock.SetVsyncAdjust(0);
 
     CSingleLock lock2(m_presentlock);
     m_presentstep = PRESENT_READY;
@@ -318,7 +318,7 @@ bool CRenderManager::Configure()
     m_renderedOverlay = false;
     m_renderDebug = false;
     m_clockSync.Reset();
-    CheckEnableClockSync();
+    m_dvdClock.SetVsyncAdjust(0);
 
     m_renderState = STATE_CONFIGURED;
 
@@ -383,6 +383,8 @@ void CRenderManager::FrameMove()
         CApplicationMessenger::GetInstance().PostMsg(TMSG_SWITCHTOFULLSCREEN);
       }
     }
+
+    CheckEnableClockSync();
   }
   {
     CSingleLock lock2(m_presentlock);
@@ -1080,8 +1082,6 @@ void CRenderManager::UpdateResolution()
         RESOLUTION res = CResolutionUtils::ChooseBestResolution(m_fps, m_width, CONF_FLAGS_STEREO_MODE_MASK(m_flags));
         g_graphicsContext.SetVideoResolution(res);
         UpdateDisplayLatency();
-
-        CheckEnableClockSync();
       }
       m_bTriggerUpdateResolution = false;
       m_playerPort->VideoParamsChange();
diff --git a/xbmc/dialogs/GUIDialogProgress.cpp b/xbmc/dialogs/GUIDialogProgress.cpp
index 39d339c..485d6bf 100644
--- a/xbmc/dialogs/GUIDialogProgress.cpp
+++ b/xbmc/dialogs/GUIDialogProgress.cpp
@@ -160,7 +160,8 @@ void CGUIDialogProgress::SetProgressAdvance(int nSteps/*=1*/)
   if (m_iCurrent>m_iMax)
     m_iCurrent=0;
 
-  SetPercentage((m_iCurrent*100)/m_iMax);
+  if (m_iMax > 0)
+    SetPercentage((m_iCurrent*100)/m_iMax);
 }
 
 bool CGUIDialogProgress::Abort()
diff --git a/xbmc/epg/EpgContainer.cpp b/xbmc/epg/EpgContainer.cpp
index 85820b1..f597fa0 100644
--- a/xbmc/epg/EpgContainer.cpp
+++ b/xbmc/epg/EpgContainer.cpp
@@ -411,12 +411,24 @@ CEpgInfoTagPtr CEpgContainer::GetTagById(const CPVRChannelPtr &channel, unsigned
 {
   CEpgInfoTagPtr retval;
 
-  if (!channel || iBroadcastId == EPG_TAG_INVALID_UID)
+  if (iBroadcastId == EPG_TAG_INVALID_UID)
     return retval;
 
-  const CEpgPtr epg(channel->GetEPG());
-  if (epg)
-    retval = epg->GetTagByBroadcastId(iBroadcastId);
+  if (channel)
+  {
+    const CEpgPtr epg(channel->GetEPG());
+    if (epg)
+      retval = epg->GetTagByBroadcastId(iBroadcastId);
+  }
+  else
+  {
+    for (const auto &epgEntry : m_epgs)
+    {
+      retval = epgEntry.second->GetTagByBroadcastId(iBroadcastId);
+      if (retval)
+        break;
+    }
+  }
 
   return retval;
 }
diff --git a/xbmc/filesystem/FavouritesDirectory.cpp b/xbmc/filesystem/FavouritesDirectory.cpp
index fc42ed3..dd50787 100644
--- a/xbmc/filesystem/FavouritesDirectory.cpp
+++ b/xbmc/filesystem/FavouritesDirectory.cpp
@@ -197,8 +197,13 @@ std::string CFavouritesDirectory::GetExecutePath(const CFileItem &item, const st
       execute = StringUtils::Format("ActivateWindow(%s,%s,return)", contextWindow.c_str(), StringUtils::Paramify(item.GetPath()).c_str());
   }
   //! @todo STRING_CLEANUP
-  else if (item.IsScript() && item.GetPath().size() > 9) // plugin://<foo>
+  else if (item.IsScript() && item.GetPath().size() > 9) // script://<foo>
     execute = StringUtils::Format("RunScript(%s)", StringUtils::Paramify(item.GetPath().substr(9)).c_str());
+  else if (item.IsAddonsPath() && item.GetPath().size() > 9) // addons://<foo>
+  {
+    CURL url(item.GetPath());
+    execute = StringUtils::Format("RunAddon(%s)", url.GetFileName().c_str());
+  }
   else if (item.IsAndroidApp() && item.GetPath().size() > 26) // androidapp://sources/apps/<foo>
     execute = StringUtils::Format("StartAndroidActivity(%s)", StringUtils::Paramify(item.GetPath().substr(26)).c_str());
   else  // assume a media file
diff --git a/xbmc/filesystem/PluginDirectory.cpp b/xbmc/filesystem/PluginDirectory.cpp
index caff5c3..76eaf43 100644
--- a/xbmc/filesystem/PluginDirectory.cpp
+++ b/xbmc/filesystem/PluginDirectory.cpp
@@ -227,7 +227,7 @@ void CPluginDirectory::EndOfDirectory(int handle, bool success, bool replaceList
     return;
 
   // set cache to disc
-  dir->m_listItems->SetCacheToDisc(CFileItemList::CACHE_NEVER);
+  dir->m_listItems->SetCacheToDisc(cacheToDisc ? CFileItemList::CACHE_IF_SLOW : CFileItemList::CACHE_NEVER);
 
   dir->m_success = success;
   dir->m_listItems->SetReplaceListing(replaceListing);
diff --git a/xbmc/filesystem/win32/Win32File.cpp b/xbmc/filesystem/win32/Win32File.cpp
index 9389d74..60ab2da 100644
--- a/xbmc/filesystem/win32/Win32File.cpp
+++ b/xbmc/filesystem/win32/Win32File.cpp
@@ -403,6 +403,11 @@ bool CWin32File::Rename(const CURL& urlCurrentName, const CURL& urlNewName)
     return false;
 
   const bool result = (MoveFileExW(curNameW.c_str(), newNameW.c_str(), MOVEFILE_COPY_ALLOWED) != 0);
+  if (!result)
+  {
+    CLog::LogW(LOGERROR, L"Failed to rename file/directory %s to %s, Error: %s",
+      curNameW.c_str(), newNameW.c_str(), CLog::Win32ErrorToString(GetLastError()));
+  }
   if (m_smbFile)
     m_lastSMBFileErr = GetLastError(); // set real error state
 
diff --git a/xbmc/guilib/D3DResource.cpp b/xbmc/guilib/D3DResource.cpp
index a5aaab7..8a8d585 100644
--- a/xbmc/guilib/D3DResource.cpp
+++ b/xbmc/guilib/D3DResource.cpp
@@ -383,18 +383,15 @@ void CD3DTexture::SaveTexture()
   }
 }
 
-void CD3DTexture::OnDestroyDevice()
+void CD3DTexture::OnDestroyDevice(bool fatal)
 {
-  SaveTexture();
+  if (!fatal)
+    SaveTexture();
   SAFE_RELEASE(m_texture);
   SAFE_RELEASE(m_textureView);
   SAFE_RELEASE(m_renderTarget);
 }
 
-void CD3DTexture::OnLostDevice()
-{
-}
-
 void CD3DTexture::RestoreTexture()
 {
   // yay, we're back - make a new copy of the texture
@@ -416,10 +413,6 @@ void CD3DTexture::OnCreateDevice()
   RestoreTexture();
 }
 
-void CD3DTexture::OnResetDevice()
-{
-}
-
 unsigned int CD3DTexture::GetMemoryUsage(unsigned int pitch) const
 {
   switch (m_format)
@@ -533,10 +526,10 @@ bool CD3DEffect::Create(const std::string &effectString, DefinesMap* defines)
 void CD3DEffect::Release()
 {
   g_Windowing.Unregister(this);
-  OnDestroyDevice();
+  OnDestroyDevice(false);
 }
 
-void CD3DEffect::OnDestroyDevice()
+void CD3DEffect::OnDestroyDevice(bool fatal)
 {
   SAFE_RELEASE(m_effect);
   m_techniquie = nullptr;
@@ -790,8 +783,14 @@ bool CD3DBuffer::Unmap()
   return false;
 }
 
-void CD3DBuffer::OnDestroyDevice()
+void CD3DBuffer::OnDestroyDevice(bool fatal)
 {
+  if (fatal)
+  {
+    SAFE_RELEASE(m_buffer);
+    return;
+  }
+
   ID3D11Device* pDevice = g_Windowing.Get3D11Device();
   ID3D11DeviceContext* pContext = g_Windowing.GetImmediateContext();
 
@@ -1005,7 +1004,7 @@ void CD3DVertexShader::OnCreateDevice()
     m_inited = CreateInternal();
 }
 
-void CD3DVertexShader::OnDestroyDevice()
+void CD3DVertexShader::OnDestroyDevice(bool fatal)
 {
   ReleaseShader();
 }
@@ -1130,7 +1129,7 @@ void CD3DPixelShader::OnCreateDevice()
     m_inited = CreateInternal();
 }
 
-void CD3DPixelShader::OnDestroyDevice()
+void CD3DPixelShader::OnDestroyDevice(bool fatal)
 {
   ReleaseShader();
 }
diff --git a/xbmc/guilib/D3DResource.h b/xbmc/guilib/D3DResource.h
index cf0a0b9..8a51efd 100644
--- a/xbmc/guilib/D3DResource.h
+++ b/xbmc/guilib/D3DResource.h
@@ -58,10 +58,11 @@ class ID3DResource
 public:
   virtual ~ID3DResource() {};
 
-  virtual void OnDestroyDevice()=0;
+  virtual void OnDestroyDevice(bool fatal)=0;
   virtual void OnCreateDevice()=0;
   virtual void OnLostDevice() {};
   virtual void OnResetDevice() {};
+  virtual void OnDestroyDevice() { OnDestroyDevice(false); }
 };
 
 class CD3DHelper
@@ -137,10 +138,8 @@ public:
   static void DrawQuad(const CRect &coords, color_t color, unsigned numViews, ID3D11ShaderResourceView **view, const CRect *texCoords,
     SHADER_METHOD options = SHADER_METHOD_RENDER_TEXTURE_BLEND);
 
-  virtual void OnDestroyDevice();
-  virtual void OnCreateDevice();
-  virtual void OnLostDevice();
-  virtual void OnResetDevice();
+  void OnDestroyDevice(bool fatal) override;
+  void OnCreateDevice() override;
 
 private:
   unsigned int GetMemoryUsage(unsigned int pitch) const;
@@ -191,8 +190,8 @@ public:
 
   ID3DX11Effect *Get() const { return m_effect; };
 
-  virtual void OnDestroyDevice();
-  virtual void OnCreateDevice();
+  void OnDestroyDevice(bool fatal) override;
+  void OnCreateDevice() override;
 
 private:
   bool         CreateEffect();
@@ -218,8 +217,8 @@ public:
   DXGI_FORMAT GetFormat() { return m_format; }
   ID3D11Buffer* Get() const { return m_buffer; };
 
-  virtual void OnDestroyDevice();
-  virtual void OnCreateDevice();
+  void OnDestroyDevice(bool fatal) override;
+  void OnCreateDevice() override;
 private:
   bool CreateBuffer(const void *pData);
   D3D11_BIND_FLAG  m_type;
@@ -247,8 +246,8 @@ public:
   void Release();
   bool IsInited() { return m_inited; }
 
-  virtual void OnDestroyDevice();
-  virtual void OnCreateDevice();
+  void OnDestroyDevice(bool fatal) override;
+  void OnCreateDevice() override;
 
 private:
   bool CreateInternal();
@@ -275,8 +274,8 @@ public:
   void Release();
   bool IsInited() { return m_inited; }
 
-  virtual void OnDestroyDevice();
-  virtual void OnCreateDevice();
+  void OnDestroyDevice(bool fatal) override;
+  void OnCreateDevice() override;
 
 private:
   bool CreateInternal();
diff --git a/xbmc/guilib/GUIFontTTFDX.cpp b/xbmc/guilib/GUIFontTTFDX.cpp
index f87abf7..8d2b028 100644
--- a/xbmc/guilib/GUIFontTTFDX.cpp
+++ b/xbmc/guilib/GUIFontTTFDX.cpp
@@ -348,7 +348,7 @@ void CGUIFontTTFDX::CreateStaticIndexBuffer(void)
 bool CGUIFontTTFDX::m_staticIndexBufferCreated = false;
 ID3D11Buffer* CGUIFontTTFDX::m_staticIndexBuffer = nullptr;
 
-void CGUIFontTTFDX::OnDestroyDevice(void)
+void CGUIFontTTFDX::OnDestroyDevice(bool fatal)
 {
   SAFE_RELEASE(m_staticIndexBuffer);
   m_staticIndexBufferCreated = false;
diff --git a/xbmc/guilib/GUIFontTTFDX.h b/xbmc/guilib/GUIFontTTFDX.h
index c66ce34..4b906ae 100644
--- a/xbmc/guilib/GUIFontTTFDX.h
+++ b/xbmc/guilib/GUIFontTTFDX.h
@@ -44,21 +44,21 @@ public:
   CGUIFontTTFDX(const std::string& strFileName);
   virtual ~CGUIFontTTFDX(void);
 
-  virtual bool FirstBegin();
-  virtual void LastEnd();
-  virtual CVertexBuffer CreateVertexBuffer(const std::vector<SVertex> &vertices) const;
-  virtual void DestroyVertexBuffer(CVertexBuffer &bufferHandle) const;
+  bool FirstBegin() override;
+  void LastEnd() override;
+  CVertexBuffer CreateVertexBuffer(const std::vector<SVertex> &vertices) const override;
+  void DestroyVertexBuffer(CVertexBuffer &bufferHandle) const override;
 
-  virtual void OnDestroyDevice();
-  virtual void OnCreateDevice();
+  void OnDestroyDevice(bool fatal) override;
+  void OnCreateDevice() override;
 
   static void CreateStaticIndexBuffer(void);
   static void DestroyStaticIndexBuffer(void);
 
 protected:
-  virtual CBaseTexture* ReallocTexture(unsigned int& newHeight);
-  virtual bool CopyCharToTexture(FT_BitmapGlyph bitGlyph, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2);
-  virtual void DeleteHardwareTexture();
+  CBaseTexture* ReallocTexture(unsigned int& newHeight) override;
+  bool CopyCharToTexture(FT_BitmapGlyph bitGlyph, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2) override;
+  void DeleteHardwareTexture() override;
 
 private:
   bool UpdateDynamicVertexBuffer(const SVertex* pSysMem, unsigned int count);
diff --git a/xbmc/guilib/Resolution.cpp b/xbmc/guilib/Resolution.cpp
index b86110c..8c19be8 100644
--- a/xbmc/guilib/Resolution.cpp
+++ b/xbmc/guilib/Resolution.cpp
@@ -224,11 +224,13 @@ RESOLUTION CResolutionUtils::FindClosestResolution(float fps, int width, bool is
       // evaluate all higher modes and evalute them
       // concerning dimension and refreshrate weight
       // skip lower resolutions
+      // don't change resolutions when 3D is wanted
       if ((width < orig.iScreenWidth) || // orig res large enough
          (info.iScreenWidth < orig.iScreenWidth) || // new res is smaller
          (info.iScreenHeight < orig.iScreenHeight) || // new height would be smaller
          (info.dwFlags & D3DPRESENTFLAG_MODEMASK) != (curr.dwFlags & D3DPRESENTFLAG_MODEMASK) || // don't switch to interlaced modes
-         (info.iScreen != curr.iScreen)) // skip not current displays
+         (info.iScreen != curr.iScreen) || // skip not current displays
+         is3D) // skip res changing when doing 3D
       {
         continue;
       }
diff --git a/xbmc/input/joysticks/KeymapHandler.cpp b/xbmc/input/joysticks/KeymapHandler.cpp
index 7d2f459..ca14cc5 100644
--- a/xbmc/input/joysticks/KeymapHandler.cpp
+++ b/xbmc/input/joysticks/KeymapHandler.cpp
@@ -139,6 +139,25 @@ bool CKeymapHandler::SendDigitalAction(unsigned int keyId, unsigned int holdTime
   CAction action(CButtonTranslator::GetInstance().GetAction(g_windowManager.GetActiveWindowID(), CKey(keyId, holdTimeMs)));
   if (action.GetID() > 0)
   {
+    //! @todo Add "holdtime" parameter to joystick.xml. For now we MUST only
+    // send held actions for basic navigation commands!
+    if (holdTimeMs > 0)
+    {
+      switch (action.GetID())
+      {
+      case ACTION_MOVE_LEFT:
+      case ACTION_MOVE_RIGHT:
+      case ACTION_MOVE_UP:
+      case ACTION_MOVE_DOWN:
+      case ACTION_PAGE_UP:
+      case ACTION_PAGE_DOWN:
+        break;
+
+      default:
+        return true;
+      }
+    }
+
     CInputManager::GetInstance().QueueAction(action);
     return true;
   }
diff --git a/xbmc/interfaces/json-rpc/PVROperations.cpp b/xbmc/interfaces/json-rpc/PVROperations.cpp
index 0ebca75..6fbd6e2 100644
--- a/xbmc/interfaces/json-rpc/PVROperations.cpp
+++ b/xbmc/interfaces/json-rpc/PVROperations.cpp
@@ -337,34 +337,12 @@ JSONRPC_STATUS CPVROperations::GetTimerDetails(const std::string &method, ITrans
   return OK;
 }
 
-CFileItemPtr CPVROperations::GetBroadcastFromBroadcastid(unsigned int broadcastid)
-{
-  EpgSearchFilter filter;
-  filter.Reset();
-  filter.m_iUniqueBroadcastId = broadcastid;
-
-  CFileItemList broadcasts;
-  int resultSize = g_EpgContainer.GetEPGSearch(broadcasts, filter);
-
-  if (resultSize != 1)
-    return CFileItemPtr();
-
-  return broadcasts.Get(0);
-}
-
 JSONRPC_STATUS CPVROperations::AddTimer(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
 {
   if (!g_PVRManager.IsStarted())
     return FailedToExecute;
 
-  CFileItemPtr broadcast = CPVROperations::GetBroadcastFromBroadcastid(parameterObject["broadcastid"].asUnsignedInteger());
-  if (!broadcast)
-    return InvalidParams;
-
-  if (!broadcast->HasEPGInfoTag())
-    return InvalidParams;
-
-  CEpgInfoTagPtr epgTag = broadcast->GetEPGInfoTag();
+  const CEpgInfoTagPtr epgTag = g_EpgContainer.GetTagById(CPVRChannelPtr(), parameterObject["broadcastid"].asUnsignedInteger());
 
   if (!epgTag)
     return InvalidParams;
@@ -406,14 +384,7 @@ JSONRPC_STATUS CPVROperations::ToggleTimer(const std::string &method, ITransport
   if (!g_PVRManager.IsStarted())
     return FailedToExecute;
 
-  CFileItemPtr broadcast = CPVROperations::GetBroadcastFromBroadcastid(parameterObject["broadcastid"].asUnsignedInteger());
-  if (!broadcast)
-    return InvalidParams;
-
-  if (!broadcast->HasEPGInfoTag())
-    return InvalidParams;
-
-  CEpgInfoTagPtr epgTag = broadcast->GetEPGInfoTag();
+  const CEpgInfoTagPtr epgTag = g_EpgContainer.GetTagById(CPVRChannelPtr(), parameterObject["broadcastid"].asUnsignedInteger());
 
   if (!epgTag)
     return InvalidParams;
diff --git a/xbmc/interfaces/json-rpc/PVROperations.h b/xbmc/interfaces/json-rpc/PVROperations.h
index 96c262b..12ab532 100644
--- a/xbmc/interfaces/json-rpc/PVROperations.h
+++ b/xbmc/interfaces/json-rpc/PVROperations.h
@@ -51,7 +51,5 @@ namespace JSONRPC
   private:
     static JSONRPC_STATUS GetPropertyValue(const std::string &property, CVariant &result);
     static void FillChannelGroupDetails(const PVR::CPVRChannelGroupPtr &channelGroup, const CVariant &parameterObject, CVariant &result, bool append = false);
-
-    static CFileItemPtr GetBroadcastFromBroadcastid(unsigned int broadcastid);
   };
 }
diff --git a/xbmc/interfaces/legacy/ModuleXbmcplugin.h b/xbmc/interfaces/legacy/ModuleXbmcplugin.h
index 2237ccd..081e27b 100644
--- a/xbmc/interfaces/legacy/ModuleXbmcplugin.h
+++ b/xbmc/interfaces/legacy/ModuleXbmcplugin.h
@@ -131,8 +131,8 @@ namespace XBMCAddon
     /// @param updateListing        [opt] bool - True=this folder should
     ///                             update the current listing/False=Folder
     ///                             is a subfolder(Default).
-    /// @param cacheToDisc          [opt] bool - True=Allow folder to be cached
-    ///                             (default)/False=this folder
+    /// @param cacheToDisc          [opt] bool - True=Folder will cache if
+    ///                             extended time(default)/False=this folder
     ///                             will never cache to disc.
     ///
     ///
diff --git a/xbmc/music/dialogs/GUIDialogMusicOSD.cpp b/xbmc/music/dialogs/GUIDialogMusicOSD.cpp
index 865d29b..c8c2b95 100644
--- a/xbmc/music/dialogs/GUIDialogMusicOSD.cpp
+++ b/xbmc/music/dialogs/GUIDialogMusicOSD.cpp
@@ -91,7 +91,7 @@ bool CGUIDialogMusicOSD::OnAction(const CAction &action)
         for (int i = 1; i <= 10; i++)
           dialog->Add(StringUtils::Format("%s: %i", g_localizeStrings.Get(563).c_str(), i));
 
-        auto track = std::make_shared<CFileItem>(g_application.CurrentFileItem());
+        auto track = g_application.CurrentFileItemPtr();
         dialog->SetSelected(track->GetMusicInfoTag()->GetUserrating());
 
         dialog->Open();
diff --git a/xbmc/pictures/GUIWindowPictures.cpp b/xbmc/pictures/GUIWindowPictures.cpp
index 4b5ec50..5be32ff 100644
--- a/xbmc/pictures/GUIWindowPictures.cpp
+++ b/xbmc/pictures/GUIWindowPictures.cpp
@@ -203,7 +203,7 @@ void CGUIWindowPictures::OnPrepareFileItems(CFileItemList& items)
     if (StringUtils::EqualsNoCase(items[i]->GetLabel(), "folder.jpg"))
       items.Remove(i);
 
-  if (items.GetFolderCount() == items.Size())
+  if (items.GetFolderCount()==items.Size() || !CSettings::GetInstance().GetBool(CSettings::SETTING_PICTURES_USETAGS))
     return;
 
   // Start the music info loader thread
diff --git a/xbmc/pictures/PictureInfoLoader.cpp b/xbmc/pictures/PictureInfoLoader.cpp
index dd33472..05304f9 100644
--- a/xbmc/pictures/PictureInfoLoader.cpp
+++ b/xbmc/pictures/PictureInfoLoader.cpp
@@ -43,6 +43,7 @@ void CPictureInfoLoader::OnLoaderStart()
   m_mapFileItems->SetFastLookup(true);
 
   m_tagReads = 0;
+  m_loadTags = CSettings::GetInstance().GetBool(CSettings::SETTING_PICTURES_USETAGS);
 
   if (m_pProgressCallback)
     m_pProgressCallback->SetProgressMax(m_pVecItems->GetFileCount());
@@ -87,8 +88,11 @@ bool CPictureInfoLoader::LoadItemLookup(CFileItem* pItem)
   if (pItem->HasPictureInfoTag())
     return false;
 
-  pItem->GetPictureInfoTag()->Load(pItem->GetPath());
-  m_tagReads++;
+  if (m_loadTags)
+  { // Nothing found, load tag from file
+    pItem->GetPictureInfoTag()->Load(pItem->GetPath());
+    m_tagReads++;
+  }
 
   return true;
 }
diff --git a/xbmc/pictures/PictureInfoLoader.h b/xbmc/pictures/PictureInfoLoader.h
index 000b54f..2a022ff 100644
--- a/xbmc/pictures/PictureInfoLoader.h
+++ b/xbmc/pictures/PictureInfoLoader.h
@@ -39,5 +39,6 @@ protected:
 
   CFileItemList* m_mapFileItems;
   unsigned int m_tagReads;
+  bool m_loadTags;
 };
 
diff --git a/xbmc/platform/android/activity/XBMCApp.cpp b/xbmc/platform/android/activity/XBMCApp.cpp
index 1912d9a..cc8b650 100644
--- a/xbmc/platform/android/activity/XBMCApp.cpp
+++ b/xbmc/platform/android/activity/XBMCApp.cpp
@@ -44,6 +44,8 @@
 #include "platform/xbmc.h"
 #include "windowing/WinEvents.h"
 #include "guilib/GUIWindowManager.h"
+#include "guilib/GraphicContext.h"
+#include "settings/DisplaySettings.h"
 #include "utils/log.h"
 #include "messaging/ApplicationMessenger.h"
 #include "utils/StringUtils.h"
@@ -548,7 +550,7 @@ CRect CXBMCApp::MapRenderToDroid(const CRect& srcRect)
   float scaleY = 1.0;
 
   CJNIRect r = m_xbmcappinstance->getVideoViewSurfaceRect();
-  RESOLUTION_INFO renderRes = g_graphicsContext.GetResInfo(g_graphicsContext.GetVideoResolution());
+  RESOLUTION_INFO renderRes = CDisplaySettings::GetInstance().GetResolutionInfo(g_graphicsContext.GetVideoResolution());
   scaleX = (double)r.width() / renderRes.iWidth;
   scaleY = (double)r.height() / renderRes.iHeight;
 
diff --git a/xbmc/pvr/PVRManager.cpp b/xbmc/pvr/PVRManager.cpp
index d885931..53f3571 100644
--- a/xbmc/pvr/PVRManager.cpp
+++ b/xbmc/pvr/PVRManager.cpp
@@ -424,6 +424,13 @@ void CPVRManager::Stop(void)
   if (IsStopped())
     return;
 
+  /* stop playback if needed */
+  if (IsPlaying())
+  {
+    CLog::Log(LOGNOTICE,"PVRManager - %s - stopping PVR playback", __FUNCTION__);
+    CApplicationMessenger::GetInstance().SendMsg(TMSG_MEDIA_STOP);
+  }
+
   SetState(ManagerStateStopping);
 
   m_pendingUpdates.Stop();
@@ -433,13 +440,6 @@ void CPVRManager::Stop(void)
 
   CLog::Log(LOGNOTICE, "PVRManager - stopping");
 
-  /* stop playback if needed */
-  if (IsPlaying())
-  {
-    CLog::Log(LOGNOTICE,"PVRManager - %s - stopping PVR playback", __FUNCTION__);
-    CApplicationMessenger::GetInstance().SendMsg(TMSG_MEDIA_STOP);
-  }
-
   /* stop all update threads */
   SetState(ManagerStateInterrupted);
 
diff --git a/xbmc/pvr/addons/PVRClients.cpp b/xbmc/pvr/addons/PVRClients.cpp
index a524f10..7fea6d3 100644
--- a/xbmc/pvr/addons/PVRClients.cpp
+++ b/xbmc/pvr/addons/PVRClients.cpp
@@ -179,9 +179,13 @@ int CPVRClients::GetFirstConnectedClientID(void)
 int CPVRClients::EnabledClientAmount(void) const
 {
   int iReturn(0);
-  CSingleLock lock(m_critSection);
+  PVR_CLIENTMAP clientMap;
+  {
+    CSingleLock lock(m_critSection);
+    clientMap = m_clientMap;
+  }
 
-  for (const auto &client : m_clientMap)
+  for (const auto &client : clientMap)
     if (!CAddonMgr::GetInstance().IsAddonDisabled(client.second->ID()))
       ++iReturn;
 
@@ -190,7 +194,13 @@ int CPVRClients::EnabledClientAmount(void) const
 
 bool CPVRClients::HasEnabledClients(void) const
 {
-  for (const auto &client : m_clientMap)
+  PVR_CLIENTMAP clientMap;
+  {
+    CSingleLock lock(m_critSection);
+    clientMap = m_clientMap;
+  }
+
+  for (const auto &client : clientMap)
     if (!CAddonMgr::GetInstance().IsAddonDisabled(client.second->ID()))
       return true;
   return false;
@@ -198,8 +208,9 @@ bool CPVRClients::HasEnabledClients(void) const
 
 bool CPVRClients::StopClient(AddonPtr client, bool bRestart)
 {
-  /* stop playback */
-  CApplicationMessenger::GetInstance().SendMsg(TMSG_MEDIA_STOP);
+  /* stop playback if needed */
+  if (IsPlaying())
+    CApplicationMessenger::GetInstance().SendMsg(TMSG_MEDIA_STOP);
 
   CSingleLock lock(m_critSection);
   int iId = GetClientId(client);
@@ -209,8 +220,13 @@ bool CPVRClients::StopClient(AddonPtr client, bool bRestart)
     if (bRestart)
       mappedClient->ReCreate();
     else
-      mappedClient->Destroy();
+    {
+      const auto it = m_clientMap.find(iId);
+      if (it != m_clientMap.end())
+        m_clientMap.erase(it);
 
+      mappedClient->Destroy();
+    }
     return true;
   }
 
diff --git a/xbmc/rendering/dx/RenderSystemDX.cpp b/xbmc/rendering/dx/RenderSystemDX.cpp
index 21c571d..f83d212 100644
--- a/xbmc/rendering/dx/RenderSystemDX.cpp
+++ b/xbmc/rendering/dx/RenderSystemDX.cpp
@@ -29,6 +29,7 @@
 #include "guilib/GUIShaderDX.h"
 #include "guilib/GUITextureD3D.h"
 #include "guilib/GUIWindowManager.h"
+#include "messaging/ApplicationMessenger.h"
 #include "settings/AdvancedSettings.h"
 #include "threads/SingleLock.h"
 #include "utils/MathUtils.h"
@@ -418,7 +419,14 @@ void CRenderSystemDX::DeleteDevice()
 
   // tell any shared resources
   for (std::vector<ID3DResource *>::iterator i = m_resources.begin(); i != m_resources.end(); ++i)
-    (*i)->OnDestroyDevice();
+  {
+    // the most of resources like textures and buffers try to 
+    // receive and save their status from current device.
+    // m_nDeviceStatus contains the last device status and
+    // DXGI_ERROR_DEVICE_REMOVED means that we have no possibility
+    // to use the device anymore, tell all resouces about this.
+    (*i)->OnDestroyDevice(DXGI_ERROR_DEVICE_REMOVED == m_nDeviceStatus);
+  }
 
   if (m_pSwapChain)
     m_pSwapChain->SetFullscreenState(false, nullptr);
@@ -1284,6 +1292,8 @@ bool CRenderSystemDX::BeginRender()
     {
       OnDeviceLost();
       OnDeviceReset();
+      if (m_bRenderCreated)
+        KODI::MESSAGING::CApplicationMessenger::GetInstance().PostMsg(TMSG_EXECUTE_BUILT_IN, -1, -1, nullptr, "ReloadSkin");
     }
     return false;
   }
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
index 9940b6a..6e13ba6 100644
--- a/xbmc/settings/Settings.cpp
+++ b/xbmc/settings/Settings.cpp
@@ -296,6 +296,7 @@ const std::string CSettings::SETTING_AUDIOCDS_SETTINGS = "audiocds.settings";
 const std::string CSettings::SETTING_AUDIOCDS_EJECTONRIP = "audiocds.ejectonrip";
 const std::string CSettings::SETTING_MYMUSIC_SONGTHUMBINVIS = "mymusic.songthumbinvis";
 const std::string CSettings::SETTING_MYMUSIC_DEFAULTLIBVIEW = "mymusic.defaultlibview";
+const std::string CSettings::SETTING_PICTURES_USETAGS = "pictures.usetags";
 const std::string CSettings::SETTING_PICTURES_GENERATETHUMBS = "pictures.generatethumbs";
 const std::string CSettings::SETTING_PICTURES_SHOWVIDEOS = "pictures.showvideos";
 const std::string CSettings::SETTING_PICTURES_DISPLAYRESOLUTION = "pictures.displayresolution";
diff --git a/xbmc/settings/Settings.h b/xbmc/settings/Settings.h
index 482f61d..269a3a7 100644
--- a/xbmc/settings/Settings.h
+++ b/xbmc/settings/Settings.h
@@ -253,6 +253,7 @@ public:
   static const std::string SETTING_AUDIOCDS_EJECTONRIP;
   static const std::string SETTING_MYMUSIC_SONGTHUMBINVIS;
   static const std::string SETTING_MYMUSIC_DEFAULTLIBVIEW;
+  static const std::string SETTING_PICTURES_USETAGS;
   static const std::string SETTING_PICTURES_GENERATETHUMBS;
   static const std::string SETTING_PICTURES_SHOWVIDEOS;
   static const std::string SETTING_PICTURES_DISPLAYRESOLUTION;
diff --git a/xbmc/test/TestTextureUtils.cpp b/xbmc/test/TestTextureUtils.cpp
index 917eca7..c9764ad 100644
--- a/xbmc/test/TestTextureUtils.cpp
+++ b/xbmc/test/TestTextureUtils.cpp
@@ -35,12 +35,12 @@ typedef struct
   const char *out;
 } TestFiles;
 
-const TestFiles test_files[] = {{ "/path/to/image/file.jpg", "", "", "image://%2Fpath%2Fto%2Fimage%2Ffile.jpg/" },
-                                { "/path/to/image/file.jpg", "", "size=thumb", "image://%2Fpath%2Fto%2Fimage%2Ffile.jpg/transform?size=thumb" },
-                                { "/path/to/video/file.mkv", "video", "", "image://video@%2Fpath%2Fto%2Fvideo%2Ffile.mkv/" },
-                                { "/path/to/music/file.mp3", "music", "", "image://music@%2Fpath%2Fto%2Fmusic%2Ffile.mp3/" },
-                                { "image://%2Fpath%2Fto%2Fimage%2Ffile.jpg/", "", "", "image://%2Fpath%2Fto%2Fimage%2Ffile.jpg/" },
-                                { "image://%2Fpath%2Fto%2Fimage%2Ffile.jpg/transform?size=thumb", "", "size=thumb", "image://%2Fpath%2Fto%2Fimage%2Ffile.jpg/transform?size=thumb" }};
+const TestFiles test_files[] = {{ "/path/to/image/file.jpg", "", "", "image://%2fpath%2fto%2fimage%2ffile.jpg/" },
+                                { "/path/to/image/file.jpg", "", "size=thumb", "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb" },
+                                { "/path/to/video/file.mkv", "video", "", "image://video@%2fpath%2fto%2fvideo%2ffile.mkv/" },
+                                { "/path/to/music/file.mp3", "music", "", "image://music@%2fpath%2fto%2fmusic%2ffile.mp3/" },
+                                { "image://%2fpath%2fto%2fimage%2ffile.jpg/", "", "", "image://%2fpath%2fto%2fimage%2ffile.jpg/" },
+                                { "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb", "", "size=thumb", "image://%2fpath%2fto%2fimage%2ffile.jpg/transform?size=thumb" }};
 
 
 class TestTextureUtils :
diff --git a/xbmc/utils/StringUtils.cpp b/xbmc/utils/StringUtils.cpp
index d30fbf2..1ba6407 100644
--- a/xbmc/utils/StringUtils.cpp
+++ b/xbmc/utils/StringUtils.cpp
@@ -944,6 +944,8 @@ long StringUtils::TimeStringToSeconds(const std::string &timeString)
 
 std::string StringUtils::SecondsToTimeString(long lSeconds, TIME_FORMAT format)
 {
+  bool isNegative = lSeconds < 0;
+  lSeconds = abs(lSeconds);
   int hh = lSeconds / 3600;
   lSeconds = lSeconds % 3600;
   int mm = lSeconds / 60;
@@ -960,6 +962,8 @@ std::string StringUtils::SecondsToTimeString(long lSeconds, TIME_FORMAT format)
     strHMS += StringUtils::Format(strHMS.empty() ? "%2.2i" : ":%2.2i", mm);
   if (format & TIME_FORMAT_SS)
     strHMS += StringUtils::Format(strHMS.empty() ? "%2.2i" : ":%2.2i", ss);
+  if (isNegative)
+    strHMS = "-" + strHMS;
   return strHMS;
 }
 
diff --git a/xbmc/utils/test/TestURIUtils.cpp b/xbmc/utils/test/TestURIUtils.cpp
index 19ab5fe..6b95a6b 100644
--- a/xbmc/utils/test/TestURIUtils.cpp
+++ b/xbmc/utils/test/TestURIUtils.cpp
@@ -452,7 +452,7 @@ TEST_F(TestURIUtils, CreateArchivePath)
 {
   std::string ref, var;
 
-  ref = "zip://%2Fpath%2Fto%2F/file";
+  ref = "zip://%2fpath%2fto%2f/file";
   var = URIUtils::CreateArchivePath("zip", CURL("/path/to/"), "file").Get();
   EXPECT_STREQ(ref.c_str(), var.c_str());
 }
@@ -546,8 +546,8 @@ TEST_F(TestURIUtils, GetRealPath)
   EXPECT_STRCASEEQ(ref.c_str(), URIUtils::GetRealPath("rar://%2fpath%2fto%2fsome%2f..%2frar/subpath/to/file").c_str());
 
   // test rar/zip path in rar/zip path
-  ref ="zip://rar%3A%2F%2F%252Fpath%252Fto%252Frar%2Fpath%2Fto%2Fzip/subpath/to/file";
-  EXPECT_STRCASEEQ(ref.c_str(), URIUtils::GetRealPath("zip://rar%3A%2F%2F%252Fpath%252Fto%252Fsome%252F..%252Frar%2Fpath%2Fto%2Fsome%2F..%2Fzip/subpath/to/some/../file").c_str());
+  ref ="zip://rar%3a%2f%2f%252Fpath%252Fto%252Frar%2fpath%2fto%2fzip/subpath/to/file";
+  EXPECT_STRCASEEQ(ref.c_str(), URIUtils::GetRealPath("zip://rar%3a%2f%2f%252Fpath%252Fto%252Fsome%252F..%252Frar%2fpath%2fto%2fsome%2f..%2fzip/subpath/to/some/../file").c_str());
 }
 
 TEST_F(TestURIUtils, UpdateUrlEncoding)
diff --git a/xbmc/utils/win32/Win32Log.cpp b/xbmc/utils/win32/Win32Log.cpp
index ef5264c..05d46bc 100644
--- a/xbmc/utils/win32/Win32Log.cpp
+++ b/xbmc/utils/win32/Win32Log.cpp
@@ -18,7 +18,11 @@
 *
 */
 
+
 #include "Win32Log.h"
+
+#include <string>
+
 #include "utils/StringUtils.h"
 #include "utils/CharsetConverter.h"
 
@@ -63,3 +67,17 @@ void CWin32Log::LogFunctionW(int loglevel, const char* functionName, const wchar
     }
   }
 }
+
+std::wstring CWin32Log::Win32ErrorToString(int errorCode)
+{
+  LPWSTR message = nullptr;
+  auto result = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+    nullptr, errorCode, 0, message, 0, nullptr);
+  if (result == 0)
+    return std::wstring();
+
+  std::wstring formattedMessage(message, result);
+  HeapFree(GetProcessHeap(), 0, message);
+
+  return formattedMessage;
+}
diff --git a/xbmc/utils/win32/Win32Log.h b/xbmc/utils/win32/Win32Log.h
index 53ee0fe..a4719bd 100644
--- a/xbmc/utils/win32/Win32Log.h
+++ b/xbmc/utils/win32/Win32Log.h
@@ -33,6 +33,7 @@ class CWin32Log : public CLog
 public:
   static void LogW(int loglevel, PRINTF_FORMAT_STRING const wchar_t *format, ...);
   static void LogFunctionW(int loglevel, IN_OPT_STRING const char* functionName, PRINTF_FORMAT_STRING const wchar_t* format, ...);
+  static std::wstring Win32ErrorToString(int errorCode);
 #define LogFW(loglevel,format,...) LogFunctionW((loglevel),__FUNCTION__,(format),##__VA_ARGS__)
 };
 
diff --git a/xbmc/windows/GUIMediaWindow.cpp b/xbmc/windows/GUIMediaWindow.cpp
index aaa956b..33dc522 100644
--- a/xbmc/windows/GUIMediaWindow.cpp
+++ b/xbmc/windows/GUIMediaWindow.cpp
@@ -503,7 +503,10 @@ bool CGUIMediaWindow::OnMessage(CGUIMessage& message)
           resetHistory = true;
         }
         if (resetHistory)
+        {  
+          m_vecItems->RemoveDiscCache(GetID());
           SetHistoryForPath(m_vecItems->GetPath());
+        }
       }
       if (message.GetParam1() != WINDOW_INVALID)
       { // first time to this window - make sure we set the root path
diff --git a/xbmc/windows/GUIWindowLoginScreen.cpp b/xbmc/windows/GUIWindowLoginScreen.cpp
index 5efb4b2..63fb648 100644
--- a/xbmc/windows/GUIWindowLoginScreen.cpp
+++ b/xbmc/windows/GUIWindowLoginScreen.cpp
@@ -272,6 +272,8 @@ CFileItemPtr CGUIWindowLoginScreen::GetCurrentListItem(int offset)
 
 void CGUIWindowLoginScreen::LoadProfile(unsigned int profile)
 {
+  CServiceBroker::GetContextMenuManager().Deinit();
+
   // stop service addons and give it some time before we start it again
   ADDON::CAddonMgr::GetInstance().StopServices(true);
 
@@ -322,6 +324,9 @@ void CGUIWindowLoginScreen::LoadProfile(unsigned int profile)
   JSONRPC::CJSONRPC::Initialize();
 #endif
 
+  // Restart context menu manager
+  CServiceBroker::GetContextMenuManager().Init();
+
   // restart PVR services
   CServiceBroker::GetPVRManager().Reinit();
 

Reply to: