[SCM] kodi/master: Imported Upstream version 15.1+dfsg1

rbalint at users.alioth.debian.org rbalint at users.alioth.debian.org
Mon Aug 17 20:13:55 UTC 2015


The following commit has been merged in the master branch:
commit 7bfd492f6ecac76781009aa43e551081a3280640
Author: Balint Reczey <balint at balintreczey.hu>
Date:   Mon Aug 17 18:21:57 2015 +0200

    Imported Upstream version 15.1+dfsg1

diff --git a/Kodi.xcodeproj/project.pbxproj b/Kodi.xcodeproj/project.pbxproj
index ce5a7f7..ae7d472 100644
--- a/Kodi.xcodeproj/project.pbxproj
+++ b/Kodi.xcodeproj/project.pbxproj
@@ -272,6 +272,9 @@
 		3994427F1A8DD96F006C39E9 /* VideoLibraryQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3994427D1A8DD96F006C39E9 /* VideoLibraryQueue.cpp */; };
 		399442801A8DD96F006C39E9 /* VideoLibraryQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3994427D1A8DD96F006C39E9 /* VideoLibraryQueue.cpp */; };
 		399442811A8DD96F006C39E9 /* VideoLibraryQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3994427D1A8DD96F006C39E9 /* VideoLibraryQueue.cpp */; };
+		4260D5C71B67BB8F003F6F2D /* GUIWindowSplash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4260D5C51B67BB8F003F6F2D /* GUIWindowSplash.cpp */; };
+		4260D5C81B67BB8F003F6F2D /* GUIWindowSplash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4260D5C51B67BB8F003F6F2D /* GUIWindowSplash.cpp */; };
+		4260D5C91B67BB8F003F6F2D /* GUIWindowSplash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4260D5C51B67BB8F003F6F2D /* GUIWindowSplash.cpp */; };
 		42DAC16E1A6E789E0066B4C8 /* PVRActionListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42DAC16C1A6E789E0066B4C8 /* PVRActionListener.cpp */; };
 		42DAC16F1A6E789E0066B4C8 /* PVRActionListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42DAC16C1A6E789E0066B4C8 /* PVRActionListener.cpp */; };
 		42DAC1701A6E789E0066B4C8 /* PVRActionListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42DAC16C1A6E789E0066B4C8 /* PVRActionListener.cpp */; };
@@ -3607,6 +3610,8 @@
 		3994426A1A8DD920006C39E9 /* VideoLibraryScanningJob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoLibraryScanningJob.h; sourceTree = "<group>"; };
 		3994427D1A8DD96F006C39E9 /* VideoLibraryQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VideoLibraryQueue.cpp; sourceTree = "<group>"; };
 		3994427E1A8DD96F006C39E9 /* VideoLibraryQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoLibraryQueue.h; sourceTree = "<group>"; };
+		4260D5C51B67BB8F003F6F2D /* GUIWindowSplash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GUIWindowSplash.cpp; sourceTree = "<group>"; };
+		4260D5C61B67BB8F003F6F2D /* GUIWindowSplash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUIWindowSplash.h; sourceTree = "<group>"; };
 		42DAC16B1A6E780C0066B4C8 /* IActionListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IActionListener.h; sourceTree = "<group>"; };
 		42DAC16C1A6E789E0066B4C8 /* PVRActionListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PVRActionListener.cpp; sourceTree = "<group>"; };
 		42DAC16D1A6E789E0066B4C8 /* PVRActionListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVRActionListener.h; sourceTree = "<group>"; };
@@ -6671,6 +6676,8 @@
 				E38E18260D25F9FA00618676 /* GUIWindowScreensaver.h */,
 				7C89619013B6A16F003631FE /* GUIWindowScreensaverDim.cpp */,
 				7C89619113B6A16F003631FE /* GUIWindowScreensaverDim.h */,
+				4260D5C51B67BB8F003F6F2D /* GUIWindowSplash.cpp */,
+				4260D5C61B67BB8F003F6F2D /* GUIWindowSplash.h */,
 				E38E18370D25F9FA00618676 /* GUIWindowStartup.cpp */,
 				E38E18380D25F9FA00618676 /* GUIWindowStartup.h */,
 				E38E18390D25F9FA00618676 /* GUIWindowSystemInfo.cpp */,
@@ -10590,6 +10597,7 @@
 				18B7C7C61294222E009E7A26 /* GUIIncludes.cpp in Sources */,
 				18B7C7C71294222E009E7A26 /* GUIInfoTypes.cpp in Sources */,
 				18B7C7C81294222E009E7A26 /* GUILabel.cpp in Sources */,
+				4260D5C71B67BB8F003F6F2D /* GUIWindowSplash.cpp in Sources */,
 				18B7C7C91294222E009E7A26 /* GUILabelControl.cpp in Sources */,
 				18B7C7CA1294222E009E7A26 /* GUIListContainer.cpp in Sources */,
 				18B7C7CB1294222E009E7A26 /* GUIListGroup.cpp in Sources */,
@@ -11559,6 +11567,7 @@
 				DFF0F2B817528350002DA3A4 /* imagefactory.cpp in Sources */,
 				DFF0F2B917528350002DA3A4 /* IWindowManagerCallback.cpp in Sources */,
 				DFF0F2BA17528350002DA3A4 /* JpegIO.cpp in Sources */,
+				4260D5C91B67BB8F003F6F2D /* GUIWindowSplash.cpp in Sources */,
 				DFF0F2BC17528350002DA3A4 /* LocalizeStrings.cpp in Sources */,
 				DFF0F2BD17528350002DA3A4 /* MatrixGLES.cpp in Sources */,
 				DFF0F2BE17528350002DA3A4 /* Shader.cpp in Sources */,
@@ -13024,6 +13033,7 @@
 				E499156A174E65AB00741B6D /* ButtonTranslator.cpp in Sources */,
 				E499156B174E65AB00741B6D /* InertialScrollingHandler.cpp in Sources */,
 				E499156D174E65AB00741B6D /* KeyboardStat.cpp in Sources */,
+				4260D5C81B67BB8F003F6F2D /* GUIWindowSplash.cpp in Sources */,
 				E499156E174E65AB00741B6D /* SDLJoystick.cpp in Sources */,
 				E499156F174E65AC00741B6D /* XBMC_keytable.cpp in Sources */,
 				E4991574174E661400741B6D /* WinEventsIOS.mm in Sources */,
diff --git a/addons/metadata.album.universal/addon.xml b/addons/metadata.album.universal/addon.xml
index f462b2e..9a23a05 100644
--- a/addons/metadata.album.universal/addon.xml
+++ b/addons/metadata.album.universal/addon.xml
@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.album.universal"
        name="Universal Album Scraper"
-       version="2.4.0"
+       version="2.5.0"
        provider-name="Olympia, XBMC Foundation">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
     <import addon="metadata.common.allmusic.com" version="3.1.0"/>
-    <import addon="metadata.common.amazon.de" version="1.0.2"/>
     <import addon="metadata.common.fanart.tv" version="3.1.0"/>
     <import addon="metadata.common.musicbrainz.org" version="2.0.2"/>
     <import addon="metadata.common.theaudiodb.com" version="1.8.1"/>
diff --git a/addons/metadata.album.universal/albumuniversal.xml b/addons/metadata.album.universal/albumuniversal.xml
index c7d025e..c70f78b 100644
--- a/addons/metadata.album.universal/albumuniversal.xml
+++ b/addons/metadata.album.universal/albumuniversal.xml
@@ -33,10 +33,10 @@
 				<expression repeat="yes">id="([^"]*)"><title>([^<]*)</title><status>Official</status>(?:<packaging>[^<]*</packaging>)?<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group(?:\stype="[^"]*")*\sid="[^"]*">(?:<primary-type>[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type>[^<]*</secondary-type>)+</secondary-type-list>)*</release-group><date>(\d{4})[^<]*</date>(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+)</expression>
 			</RegExp>
 			<RegExp input="$$1" output="<entity><year>\5-\4-T#\6</year><artist>\3</artist><title>\2</title><url cache="mb-\1-album.xml">http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings</url></entity>" dest="5+">
-				<expression repeat="yes">id="([^"]*)" ext:score="[^"]*"><title>([^<]*)</title><status>Official</status>(?:<packaging>[^<]*</packaging>)?<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"\stype="Album">(?:<primary-type>[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type>[^<]*</secondary-type>)+</secondary-type-list>)*</release-group><date>(\d{4})[^<]*</date>(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+)</expression>
+				<expression repeat="yes">id="([^"]*)" ext:score="[^"]*"><title>([^<]*)</title><status>Official</status>(?:<disambiguation>[^<]*</disambiguation>)*(?:<packaging>[^<]*</packaging>)?<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"\stype="Album">(?:<primary-type>[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type>[^<]*</secondary-type>)+</secondary-type-list>)*</release-group><date>(\d{4})[^<]*</date>(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+)</expression>
 			</RegExp>
 			<RegExp input="$$1" output="<entity><year>\5-\4-T#\6</year><artist>\3</artist><title>\2</title><url cache="mb-\1-album.xml">http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings</url></entity>" dest="5+">
-				<expression repeat="yes">id="([^"]*)" ext:score="[^"]*"><title>([^<]*)</title><status>Official</status>(?:<packaging>[^<]*</packaging>)?<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*<)*/script></text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"(?:\stype="[^"]*")*>(?:<primary-type>[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type>[^<]*</secondary-type>)+</secondary-type-list>)*</release-group><date>(\d{4})[^<]*</date>(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+)</expression>
+				<expression repeat="yes">id="([^"]*)" ext:score="[^"]*"><title>([^<]*)</title><status>Official</status>(?:<disambiguation>[^<]*</disambiguation>)*(?:<packaging>[^<]*</packaging>)?<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*<)*/script></text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\sid="[^"]*"(?:\stype="[^"]*")*>(?:<primary-type>[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type>[^<]*</secondary-type>)+</secondary-type-list>)*</release-group><date>(\d{4})[^<]*</date>(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+)</expression>
 			</RegExp>
 			<RegExp input="$$1" output="<entity><year>\5-\4-T#\6</year><artist>\3</artist><title>\2</title><url cache="mb-\1-album.xml">http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings</url></entity>" dest="5+">
 				<expression repeat="yes">id="([^"]*)"><title>([^<]*)</title><status>(?!Official)[^<]*</status>(?:<disambiguation>[^<]*</disambiguation>)*(?:<packaging>[^<]*</packaging>)?<text-representation>(?:<language>[^<]*</language>)*(?:<script>[^<]*</script>)*</text-representation><artist-credit><name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>([^<]*)</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>(?:<name-credit(?:>)*(?:\sjoinphrase="[^"]*">)*(?:<name>[^<]*</name)*(?:>)*<artist\sid="[^"]*"><name>[^<]*</name>(?:<sort-name>[^<]*</sort-name>)*(?:<disambiguation>[^<]*</disambiguation>)*(?:<alias-list>(?:<alias[^<]*</alias>)*</alias-list>)*</artist></name-credit>)*</artist-credit><release-group\stype="Album"\sid="[^"]*">(?:<primary-type>[^<]*</primary-type>)*(?:<secondary-type-list>(?:<secondary-type>[^<]*</secondary-type>)+</secondary-type-list>)*</release-group><date>(\d{4})[^<]*</date>(?:<country>)*([^<]*)?.*?<track-list\scount="(\d+)</expression>
@@ -61,15 +61,18 @@
 			</RegExp>
 			<!--MBID - release group-->
 			<RegExp input="$$1" output="\1" dest="4">
-				<expression><release-group type="[^"]*" id="([^"]*)"</expression>
+				<expression><release-group\stype="[^"]*"\sid="([^"]*)"</expression>
+			</RegExp>
+			<RegExp input="$$1" output="\1" dest="4+">
+				<expression><release-group\sid="([^"]*)"\stype="[^"]*"</expression>
 			</RegExp>
 			<!--Album title-->
 			<RegExp input="$$1" output="\1" dest="7">
-				<expression trim="1"><release id="[^"]*"><title>([^<]*)<</expression>
+				<expression trim="1"><release\sid="[^"]*"><title>([^<]*)<</expression>
 			</RegExp>
 			<!--Artist name-->
 			<RegExp input="$$1" output="\1" dest="8">
-				<expression trim="1"><release id="[^"]*"><title>[^<]*<.*?<artist id="[^"]*"><name>([^<]*)<</expression>
+				<expression trim="1"><release\sid="[^"]*"><title>[^<]*<.*?<artist\sid="[^"]*"><name>([^<]*)<</expression>
 			</RegExp>
 			<RegExp input="$$3" output="<chain function="GetMBAlbumTitleByMBID">\1</chain>" dest="5">
 				<expression noclean="1">(.+)</expression>
@@ -95,9 +98,6 @@
 			<RegExp input="$INFO[albumreviewsource]" output="<chain function="GetTADBAlbumReviewByMBID">$$4</chain>" dest="5+">
 				<expression>TheAudioDb.com</expression>
 			</RegExp>
-			<RegExp input="$INFO[albumreviewsource]" output="<url function="GetAmazonDEAlbumReview">http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels</url>" dest="5+">
-				<expression>amazon.de</expression>
-			</RegExp>
 			<RegExp input="$INFO[albumratingsource]" output="<chain function="GetMBAlbumRatingByMBID">$$3</chain>" dest="5+">
 				<expression>MusicBrainz</expression>
 			</RegExp>
@@ -122,14 +122,14 @@
 			<RegExp input="$INFO[albumthemessource]" output="<url function="GetAMGAlbumThemes" cache="mb-$$4-rg.xml">http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels</url>" dest="5+">
 				<expression>allmusic.com</expression>
 			</RegExp>
-			<RegExp conditional="fanarttvalbumthumbs" input="$$1" output="<chain function="GetFanartTvAlbumThumbsByMBID">$$4</chain>" dest="5+">
-				<expression noclean="1" />
+			<RegExp conditional="fanarttvalbumthumbs" input="$$4" output="<chain function="GetFanartTvAlbumThumbsByMBID">\1</chain>" dest="5+">
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
-			<RegExp conditional="tadbalbumthumbs" input="$$1" output="<chain function="GetTADBAlbumThumbsByMBID">$$4</chain>" dest="5+">
-				<expression noclean="1" />
+			<RegExp conditional="tadbalbumthumbs" input="$$4" output="<chain function="GetTADBAlbumThumbsByMBID">\1</chain>" dest="5+">
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
-			<RegExp conditional="allmusicalbumthumbs" input="$$1" output="<url function="GetAMGAlbumThumbs" cache="mb-$$4-rg.xml">http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels</url>" dest="5+">
-				<expression noclean="1" />
+			<RegExp conditional="allmusicalbumthumbs" input="$$4" output="<url function="GetAMGAlbumThumbs" cache="mb-\1-rg.xml">http://musicbrainz.org/ws/2/release-group/\1?inc=url-rels</url>" dest="5+">
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<expression noclean="1" />
 		</RegExp>
@@ -189,13 +189,4 @@
 		</RegExp>
 	</GetAMGAlbumThumbs>
 
-	<GetAmazonDEAlbumReview dest="5">
-		<RegExp input="$$2" output="<details>\1</details>" dest="5">
-			<RegExp input="$$1" output="<chain function="GetAmazonDEAlbumReviewByASIN">\1</chain>" dest="2">
-				<expression noclean="1">http://www.amazon.de/gp/product/([^<]*)</expression>
-			</RegExp>
-			<expression noclean="1" />
-		</RegExp>
-	</GetAmazonDEAlbumReview>
-
 </scraper>
diff --git a/addons/metadata.album.universal/changelog.txt b/addons/metadata.album.universal/changelog.txt
index 20dfa1d..4099a48 100644
--- a/addons/metadata.album.universal/changelog.txt
+++ b/addons/metadata.album.universal/changelog.txt
@@ -1,3 +1,19 @@
+[B]2.5.0[/B]
+Removed: amazon.de review
+
+[B]2.4.4[/B]
+Fixed: Won't scrape MBID randomly
+Re-introduced: Proper scraping of "Official" releases that may have a "disambiguation" attribute in musicbrainz.
+
+[B]2.4.3[/B]
+Changed: Don't query artwork when mbid is missing (workaround - proper fix is needed)
+
+[B]2.4.2[/B]
+Fixed: Revert changes done in 2.4.1
+
+[B]2.4.1[/B]
+Fixed: Proper scraping of "Official" releases that may have a "disambiguation" attribute in musicbrainz.
+
 [B]2.4.0[/B]
 Changed: Language is now a selection list
 
diff --git a/addons/metadata.album.universal/resources/settings.xml b/addons/metadata.album.universal/resources/settings.xml
index 719f5bb..83c97d0 100644
--- a/addons/metadata.album.universal/resources/settings.xml
+++ b/addons/metadata.album.universal/resources/settings.xml
@@ -2,7 +2,7 @@
 <settings>
   <category label="128">
     <setting type="lsep" label="General Settings"/>
-      <setting label="30002" type="labelenum" values="TheAudioDb.com|amazon.de|None" id="albumreviewsource" default="TheAudioDb.com"/>
+      <setting label="30002" type="labelenum" values="TheAudioDb.com|None" id="albumreviewsource" default="TheAudioDb.com"/>
       <setting label="30003" type="select" values="cn|de|en|es|fr|hu|il|it|jp|nl|no|pl|pt|ru|se" id="tadbalbumlanguage" default="en" visible="eq(-1,0)"/>
       <setting type="sep"/>
       <setting label="30004" type="labelenum" values="MusicBrainz|allmusic.com|TheAudioDb.com|None" id="albumratingsource" default="MusicBrainz"/>
diff --git a/addons/metadata.artists.universal/addon.xml b/addons/metadata.artists.universal/addon.xml
index 89d1cad..73d5d2e 100644
--- a/addons/metadata.artists.universal/addon.xml
+++ b/addons/metadata.artists.universal/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.artists.universal"
        name="Universal Artist Scraper"
-       version="3.6.0"
+       version="3.6.1"
        provider-name="Olympia, XBMC Foundation">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
diff --git a/addons/metadata.artists.universal/artistuniversal.xml b/addons/metadata.artists.universal/artistuniversal.xml
index b67027f..7328695 100644
--- a/addons/metadata.artists.universal/artistuniversal.xml
+++ b/addons/metadata.artists.universal/artistuniversal.xml
@@ -49,7 +49,10 @@
 		<RegExp input="$$5" output="<details>\1</details>" dest="3">
 			<!--MBID - Artist-->
 			<RegExp input="$$1" output="\1" dest="8">
-				<expression noclean="1"><artist(?:\stype="[^"]*")* id="([^"]*)"><name>([^<]*)</expression>
+				<expression noclean="1"><artist(?:\stype="[^"]*")*\sid="([^"]*)"><name>([^<]*)</expression>
+			</RegExp>
+			<RegExp input="$$1" output="\1" dest="8+">
+				<expression noclean="1"><artist\sid="([^"]*)"(?:\stype="[^"]*")*><name>([^<]*)</expression>
 			</RegExp>
 			<!--AMGID - Artist-->
 			<RegExp input="$$1" output="\2" dest="9">
@@ -59,22 +62,22 @@
 				<expression noclean="1"><artist(?:\stype="[^"]*")* id="([^"]*)"><name>([^<]*)</expression>
 			</RegExp>
 			<RegExp input="$$8" conditional="fanarttvthumbs" output="<chain function="GetFanartTvArtistThumbsByMBID">\1</chain>" dest="5+">
-				<expression/>
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<RegExp input="$$8" conditional="tadbthumbs" output="<chain function="GetTADBArtistThumbsByMBID">$$8</chain>" dest="5+">
-				<expression/>
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<RegExp input="$$8" conditional="htbthumbs" output="<chain function="GetHTBThumbsByMBID">\1</chain>" dest="5+">
-				<expression/>
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<RegExp input="$$8" conditional="fanarttvfanart" output="<chain function="GetFanartTvArtistFanartsByMBID">\1</chain>" dest="5+">
-				<expression/>
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<RegExp input="$$8" conditional="tadbfanart" output="<chain function="GetTADBArtistFanartsByMBID">$$8</chain>" dest="5+">
-				<expression/>
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<RegExp input="$$8" conditional="htbfanart" output="<chain function="GetHTBFanartByMBID">\1</chain>" dest="5+">
-				<expression/>
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<RegExp input="$$9" output="<chain function="GetAMGData">\1</chain>" dest="5+">
 				<expression noclean="1">(.+)</expression>
@@ -140,7 +143,7 @@
 				<expression>allmusic.com</expression>
 			</RegExp>
 			<RegExp input="$$9" conditional="allmusicartistthumbs" output="<chain function="GetAMGArtistThumbsByAMGID">\1</chain>" dest="2+">
-				<expression/>
+				<expression noclean="1">(.+)</expression>
 			</RegExp>
 			<expression noclean="1" />
 		</RegExp>
diff --git a/addons/metadata.artists.universal/changelog.txt b/addons/metadata.artists.universal/changelog.txt
index 5b6ef28..7c3cd46 100644
--- a/addons/metadata.artists.universal/changelog.txt
+++ b/addons/metadata.artists.universal/changelog.txt
@@ -1,3 +1,6 @@
+[B]3.6.1[/B]
+Fixed: Won't scrape MBID randomly
+
 [B]3.6.0[/B]
 Changed: Language is now a selection list
 
diff --git a/addons/metadata.common.amazon.de/addon.xml b/addons/metadata.common.amazon.de/addon.xml
deleted file mode 100644
index f8d0e8c..0000000
--- a/addons/metadata.common.amazon.de/addon.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="metadata.common.amazon.de"
-       name="Amazon.de Scraper Library"
-       version="1.0.3"
-       provider-name="XBMC Foundation">
-  <requires>
-    <import addon="xbmc.metadata" version="2.1.0"/>
-  </requires>
-  <extension point="xbmc.metadata.scraper.library"
-             library="amazonde.xml"/>
-  <extension point="xbmc.addon.metadata">
-    <platform>all</platform>
-    <summary lang="en">amazon.de Scraper Library</summary>
-    <description lang="en">Download Music information from amazon.de</description>
-  </extension>
-</addon>
diff --git a/addons/metadata.common.amazon.de/amazonde.xml b/addons/metadata.common.amazon.de/amazonde.xml
deleted file mode 100644
index 7591164..0000000
--- a/addons/metadata.common.amazon.de/amazonde.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scraperfunctions>
-	<GetAmazonDEAlbumReviewByASIN dest="5">
-		<RegExp input="$$1" output="<details><url function="ParseAmazonDEAlbumReview">http://www.amazon.de/exec/obidos/ASIN/\1</url></details>" dest="5">
-			<expression noclean="1">(.+)</expression>
-		</RegExp>
-	</GetAmazonDEAlbumReviewByASIN>
-	<ParseAmazonDEAlbumReview dest="5">
-		<RegExp input="$$2" output="<details>\1</details>" dest="5">
-			<RegExp input="$$1" output="<review>\1</review>" dest="2">
-				<expression fixchars="1">Kurzbeschreibung</h3>\s*<div class="productDescriptionWrapper">(.*?)<div class</expression>
-			</RegExp>
-			<expression noclean="1">(.+)</expression>
-		</RegExp>
-	</ParseAmazonDEAlbumReview>
-</scraperfunctions>
diff --git a/addons/metadata.common.amazon.de/icon.png b/addons/metadata.common.amazon.de/icon.png
deleted file mode 100644
index 8dae713..0000000
Binary files a/addons/metadata.common.amazon.de/icon.png and /dev/null differ
diff --git a/addons/metadata.common.hdtrailers.net/addon.xml b/addons/metadata.common.hdtrailers.net/addon.xml
deleted file mode 100644
index 592c469..0000000
--- a/addons/metadata.common.hdtrailers.net/addon.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="metadata.common.hdtrailers.net"
-       name="HD-Trailers common scraper functions"
-       version="2.0.5"
-       provider-name="Olympia">
-  <requires>
-    <import addon="xbmc.metadata" version="2.1.0"/>
-  </requires>
-  <extension point="xbmc.metadata.scraper.library"
-             library="hdtrailers.xml"/>
-  <extension point="xbmc.addon.metadata">
-    <summary lang="en">HD-Trailers.net Scraper Library</summary>
-    <summary lang="de">Scraper für Trailer von HD-Trailers.net</summary>
-    <summary lang="es">Scraper de Trailers de HD-Trailers.net</summary>
-    <summary lang="fr">Scraper HD-Trailers.net pour les bande-annonces</summary>
-    <summary lang="hu">HD-Trailers.net leolvasó-könyvtár</summary>
-    <summary lang="nl">HD-Trailers.net Scraper Collectie</summary>
-    <summary lang="pl">Scraper zwiastunów HD-Trailers.net</summary>
-    <summary lang="pt">Scraper de trailers de HD-Trailers.net</summary>
-    <summary lang="ru">Обработчик для трейлеров с HD-Trailers.net</summary>
-    <summary lang="zh">HD-Trailers.net刮削器代码库</summary>
-    <description lang="en">Download Movie Trailers from www.hd-trailers.net</description>
-    <description lang="de">Downloade Trailer von www.hd-trailers.net</description>
-    <description lang="es">Descarga trailers de www.hd-trailers.net</description>
-    <description lang="fr">Télécharge les bande-annonces de films depuis www.hd-trailers.net</description>
-    <description lang="hu">Filmelőzetesek letöltése a www.hd-trailers.net-ről</description>
-    <description lang="nl">Download trailers van www.hd-trailers.net</description>
-    <description lang="pl">Pobieraj zwiastuny filmowe z www.hd-trailers.net</description>
-    <description lang="pt">Descarregar trailers de www.hd-trailers.net</description>
-    <description lang="ru">Загружать трейлеры с www.hd-trailers.net</description>
-    <description lang="zh">从www.hd-trailers.net下载电影预告片</description>
-    <platform>all</platform>
-  </extension>
-</addon>
diff --git a/addons/metadata.common.hdtrailers.net/hdtrailers.xml b/addons/metadata.common.hdtrailers.net/hdtrailers.xml
deleted file mode 100644
index e0a0d77..0000000
--- a/addons/metadata.common.hdtrailers.net/hdtrailers.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scraperfunctions>
-	<GetHDTrailersnet480p dest="3">
-		<RegExp input="$$6" output="<details><url function="Parse480pTrailer" cache="hd-trailers-\1.xml">http://xbmc.hd-trailers.net/movie/\1</url></details>" dest="3">
-			<RegExp input="$$1" output="\1-" dest="6">
-				<expression repeat="yes" trim="1">([\w]+)</expression>
-			</RegExp>
-			<expression noclean="1" />
-		</RegExp>
-	</GetHDTrailersnet480p>
-	<GetHDTrailersnet720p dest="3">
-		<RegExp input="$$6" output="<details><url function="Parse720pTrailer" cache="hd-trailers-\1.xml">http://xbmc.hd-trailers.net/movie/\1</url></details>" dest="3">
-			<RegExp input="$$1" output="\1-" dest="6">
-				<expression repeat="yes" trim="1">([\w]+)</expression>
-			</RegExp>
-			<expression noclean="1" />
-		</RegExp>
-	</GetHDTrailersnet720p>
-	<GetHDTrailersnet1080p dest="3">
-		<RegExp input="$$6" output="<details><url function="Parse1080pTrailer" cache="hd-trailers-\1.xml">http://xbmc.hd-trailers.net/movie/\1</url></details>" dest="3">
-			<RegExp input="$$1" output="\1-" dest="6">
-				<expression repeat="yes" trim="1">([\w]+)</expression>
-			</RegExp>
-			<expression noclean="1" />
-		</RegExp>
-	</GetHDTrailersnet1080p>
-	<Parse480pTrailer dest="5">
-		<RegExp input="$$6" output="<details>\1</details>" dest="5">
-			<!--fetch 480p trailer link from hdtrailers.net-->
-			<RegExp input="$$1" output="<trailer>http://pdl.stream.aol.com/\1</trailer>" dest="6">
-				<expression noclean="1">http://pdl\.stream\.aol\.com/([^"]*?_480p_dl.mov)"\srel="lightbox\[res480p</expression>
-			</RegExp>
-			<expression noclean="1" />
-		</RegExp>
-	</Parse480pTrailer>
-	<Parse720pTrailer dest="5">
-		<RegExp input="$$6" output="<details>\1</details>" dest="5">
-			<!--Fallback to fetch 480p trailer link if 720p is not available-->
-			<RegExp input="$$1" output="<trailer>http://pdl.stream.aol.com/\1</trailer>" dest="6">
-				<expression noclean="1">http://pdl\.stream\.aol\.com/([^"]*?_480p_dl.mov)"\srel="lightbox\[res480p</expression>
-			</RegExp>
-			<!--Fetch 720p trailer link from hdtrailers.net-->
-			<RegExp input="$$1" output="<trailer>http://pdl.stream.aol.com/\1</trailer>" dest="6">
-				<expression noclean="1">http://pdl\.stream\.aol\.com/([^"]*?_720p_dl.mov)"\srel="lightbox\[res720p</expression>
-			</RegExp>
-			<expression noclean="1" />
-		</RegExp>
-	</Parse720pTrailer>
-	<Parse1080pTrailer dest="5">
-		<RegExp input="$$6" output="<details>\1</details>" dest="5">
-			<!--Fallback to fetch 480p trailer link if 720p and 1080p are not available-->
-			<RegExp input="$$1" output="<trailer>http://pdl.stream.aol.com/\1</trailer>" dest="6">
-				<expression noclean="1">http://pdl\.stream\.aol\.com/([^"]*?_480p_dl.mov)"\srel="lightbox\[res480p</expression>
-			</RegExp>
-			<!--Fetch 720p trailer link from hdtrailers.net-->
-			<RegExp input="$$1" output="<trailer>http://pdl.stream.aol.com/\1</trailer>" dest="6">
-				<expression noclean="1">http://pdl\.stream\.aol\.com/([^"]*?_720p_dl.mov)"\srel="lightbox\[res720p</expression>
-			</RegExp>
-			<!--Fetch 1080p trailer link from hdtrailers.net-->
-			<RegExp input="$$1" output="<trailer>http://pdl.stream.aol.com/\1</trailer>" dest="6">
-				<expression noclean="1">http://pdl\.stream\.aol\.com/([^"]*?_1080p_dl.mov)"\srel="lightbox\[res1080p</expression>
-			</RegExp>
-			<expression noclean="1" />
-		</RegExp>
-	</Parse1080pTrailer>
-</scraperfunctions>
\ No newline at end of file
diff --git a/addons/metadata.common.hdtrailers.net/icon.png b/addons/metadata.common.hdtrailers.net/icon.png
deleted file mode 100644
index 1657e57..0000000
Binary files a/addons/metadata.common.hdtrailers.net/icon.png and /dev/null differ
diff --git a/addons/metadata.common.musicbrainz.org/addon.xml b/addons/metadata.common.musicbrainz.org/addon.xml
index 995e280..e542774 100644
--- a/addons/metadata.common.musicbrainz.org/addon.xml
+++ b/addons/metadata.common.musicbrainz.org/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.musicbrainz.org"
        name="MusicBrainz Scraper Library"
-        version="2.0.3"
+        version="2.0.4"
        provider-name="XBMC Foundation">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
diff --git a/addons/metadata.common.musicbrainz.org/musicbrainz.xml b/addons/metadata.common.musicbrainz.org/musicbrainz.xml
index 9f73aa3..61e39e4 100644
--- a/addons/metadata.common.musicbrainz.org/musicbrainz.xml
+++ b/addons/metadata.common.musicbrainz.org/musicbrainz.xml
@@ -10,8 +10,8 @@
 			<RegExp input="" output="" dest="2">
 				<expression />
 			</RegExp>
-			<RegExp input="$$1" output="<album><year>\4</year><title>\2</title><label>\1</label></album>" dest="2">
-				<expression repeat="yes" clear="yes" fixchars="1,2,3" noclean="1,2,3"> type="Album" id="([^"]*)"><title>([^<]*)</title><first-release-date(\s/)?>(\d{4})?</expression>
+			<RegExp input="$$1" output="<album><year>\5</year><title>\3</title><label>\1\2</label></album>" dest="2">
+				<expression repeat="yes" clear="yes" fixchars="1,2,3" noclean="1,2,3">(?: id="([^"]*)")? type="Album"(?: id="([^"]*)")?><title>([^<]*)</title><first-release-date(\s/)?>(\d{4})?</expression>
 			</RegExp>
 			<expression noclean="1" />
 		</RegExp>
diff --git a/addons/metadata.themoviedb.org/addon.xml b/addons/metadata.themoviedb.org/addon.xml
index 8462722..0ba464c 100644
--- a/addons/metadata.themoviedb.org/addon.xml
+++ b/addons/metadata.themoviedb.org/addon.xml
@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.themoviedb.org"
        name="The Movie Database"
-       version="3.8.3"
+       version="3.8.4"
        provider-name="XBMC Foundation">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
     <import addon="metadata.common.imdb.com" version="2.7.8"/>
-    <import addon="metadata.common.hdtrailers.net" version="2.0.5"/>
     <import addon="metadata.common.themoviedb.org" version="2.13.1"/>
     <import addon="plugin.video.youtube" version="4.4.10" optional="true"/>
   </requires>
diff --git a/addons/metadata.themoviedb.org/changelog.txt b/addons/metadata.themoviedb.org/changelog.txt
index 6c32b33..5eeae09 100644
--- a/addons/metadata.themoviedb.org/changelog.txt
+++ b/addons/metadata.themoviedb.org/changelog.txt
@@ -1,3 +1,6 @@
+[B]3.8.4[/B]
+- removed: option to scrape trailers from hd-trailers.net (it was broken)
+
 [B]3.8.3[/B]
 - fixed: further fixes to the broken search results due to API changes
 
diff --git a/addons/metadata.themoviedb.org/icon.png b/addons/metadata.themoviedb.org/icon.png
index bed844b..0133768 100644
Binary files a/addons/metadata.themoviedb.org/icon.png and b/addons/metadata.themoviedb.org/icon.png differ
diff --git a/addons/metadata.themoviedb.org/resources/language/English (US)/strings.po b/addons/metadata.themoviedb.org/resources/language/English (US)/strings.po
index 5d1cb8d..d6cd284 100644
--- a/addons/metadata.themoviedb.org/resources/language/English (US)/strings.po	
+++ b/addons/metadata.themoviedb.org/resources/language/English (US)/strings.po	
@@ -20,10 +20,6 @@ msgctxt "#30000"
 msgid "Enable Fanart"
 msgstr "Enable Fanart"
 
-msgctxt "#30001"
-msgid "Prefer Trailer from HD-Trailers.net"
-msgstr "Prefer Trailer from HD-Trailers.net"
-
 msgctxt "#30002"
 msgid "Preferred Language"
 msgstr "Preferred Language"
diff --git a/addons/metadata.themoviedb.org/resources/settings.xml b/addons/metadata.themoviedb.org/resources/settings.xml
index b98da8d..45ce0c7 100644
--- a/addons/metadata.themoviedb.org/resources/settings.xml
+++ b/addons/metadata.themoviedb.org/resources/settings.xml
@@ -3,7 +3,6 @@
     <setting label="30005" type="bool" id="keeporiginaltitle" default="false"/>
     <setting label="30000" type="bool" id="fanart" default="true"/>
     <setting label="30004" type="bool" id="trailer" default="true"/>
-    <setting label="30001" type="labelenum" values="No|480p|720p|1080p" id="TrailerQ" default="No"/>
     <setting label="30002" type="select" values="bg|cs|da|de|el|en|es|fi|fr|he|hr|hu|it|ja|ko|nb|nl|no|pl|pt|ro|ru|sk|sl|sr|sv|th|tr|uk|zh" id="language" default="en"/>
     <setting label="30006" type="select" values="au|bg|cs|da|de|el|es|fi|fr|gb|he|hr|hu|it|ja|ko|nl|no|pl|pt|ru|sl|sv|th|tr|us|zh" id="tmdbcertcountry" default="us"/>
     <setting label="30003" type="labelenum" values="TMDb|IMDb" id="RatingS" default="TMDb"/>
diff --git a/addons/metadata.themoviedb.org/tmdb.xml b/addons/metadata.themoviedb.org/tmdb.xml
index 73c1fb2..e256edc 100644
--- a/addons/metadata.themoviedb.org/tmdb.xml
+++ b/addons/metadata.themoviedb.org/tmdb.xml
@@ -113,24 +113,6 @@
 			<RegExp conditional="trailer" input="$$2" output="<chain function="GetTMDBTrailerByIdChain">$$2</chain>" dest="5+">
 				<expression />
 			</RegExp>
-			<RegExp input="$INFO[TrailerQ]" output="<chain function="GetHDTrailersnet480p">$$6</chain>" dest="5+">
-				<RegExp input="$$1" output="\1" dest="6">
-					<expression clear="yes" noclean="1">"original_title":"([^"]*)</expression>
-				</RegExp>
-				<expression>480p</expression>
-			</RegExp>
-			<RegExp input="$INFO[TrailerQ]" output="<chain function="GetHDTrailersnet720p">$$6</chain>" dest="5+">
-				<RegExp input="$$1" output="\1" dest="6">
-					<expression clear="yes" noclean="1">"original_title":"([^"]*)</expression>
-				</RegExp>
-				<expression>720p</expression>
-			</RegExp>
-			<RegExp input="$INFO[TrailerQ]" output="<chain function="GetHDTrailersnet1080p">$$6</chain>" dest="5+">
-				<RegExp input="$$1" output="\1" dest="6">
-					<expression clear="yes" noclean="1">"original_title":"([^"]*)</expression>
-				</RegExp>
-				<expression>1080p</expression>
-			</RegExp>
 			<expression noclean="1" />
 		</RegExp>
 	</GetDetails>
diff --git a/addons/metadata.tvdb.com/addon.xml b/addons/metadata.tvdb.com/addon.xml
index 6cb7cfd..90e83f3 100644
--- a/addons/metadata.tvdb.com/addon.xml
+++ b/addons/metadata.tvdb.com/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.tvdb.com"
        name="The TVDB"
-       version="1.8.1"
+       version="1.8.2"
        provider-name="XBMC Foundation">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
diff --git a/addons/metadata.tvdb.com/changelog.txt b/addons/metadata.tvdb.com/changelog.txt
index 1f8c093..711648c 100644
--- a/addons/metadata.tvdb.com/changelog.txt
+++ b/addons/metadata.tvdb.com/changelog.txt
@@ -1,3 +1,6 @@
+[B]1.8.2[/B]
+- Fixed: Runtime being zero in some cases
+
 [B]1.8.1[/B]
 - removed unsupported languages
 
diff --git a/addons/metadata.tvdb.com/tvdb.xml b/addons/metadata.tvdb.com/tvdb.xml
index 2853836..4e3dd3e 100644
--- a/addons/metadata.tvdb.com/tvdb.xml
+++ b/addons/metadata.tvdb.com/tvdb.xml
@@ -83,7 +83,7 @@
 				<RegExp input="$$5" output="\1" dest="11">
 					<expression clear="yes"><IMDB_ID>([^<]+)</IMDB_ID></expression>
 				</RegExp>
-				<RegExp input="$$11">
+				<RegExp input="$$11" output="\1" dest="13">
 					<RegExp conditional="fallback" input="$$5" output="<rating>\1</rating>" dest="13+">
 						<expression><Rating>([^<]+)</Rating></expression>
 					</RegExp>
@@ -329,7 +329,7 @@
 				<RegExp input="$$8" output="\1" dest="11">
 					<expression clear="yes"><IMDB_ID>([^<]+)</IMDB_ID></expression>
 				</RegExp>
-				<RegExp input="$$11">
+				<RegExp input="$$11" output="\1" dest="13">
 					<RegExp conditional="fallback" input="$$8" output="<rating>\1</rating>" dest="13+">
 						<expression><Rating>([^<]+)</Rating></expression>
 					</RegExp>
diff --git a/addons/repository.xbmc.org/addon.xml b/addons/repository.xbmc.org/addon.xml
index fc29323..3657e0a 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.2.32"
+		version="2.2.33"
 		provider-name="XBMC Foundation">
   <requires>
     <import addon="xbmc.addon" version="12.0.0"/>
@@ -76,7 +76,7 @@
 		<summary lang="sk_SK">Inštalovať rozšírenia z Kodi.tv</summary>
 		<summary lang="sl_SI">Namestite dodatke s Kodi.tv</summary>
 		<summary lang="sr_RS">Инсталирај додатке са Kodi.tv</summary>
-		<summary lang="sr_RS at latin">Instaliraj dodake sa Kodi-tv</summary>
+		<summary lang="sr_RS at latin">Instaliraj dodatne programe sa Kodi-tv</summary>
 		<summary lang="sv_SE">Installera tillägg från Kodi.tv</summary>
 		<summary lang="tg_TJ">Насб кардани барномаҳои иловагӣ аз Kodi.tv</summary>
 		<summary lang="th_TH">ติดตั้งส่วนเสริมจาก Kodi.tv</summary>
@@ -131,7 +131,7 @@
 		<description lang="sk_SK">Stiahnuť a nainštalovať rozšírenia z oficiálneho zdroja rozšírení Kodi.tv.[CR] Použitím oficiálneho zdroja získavate možnosť využiť rozsiahly systém zrkadiel, ktorý Vám umožní rýchlejšie sťahovanie z Vám blízkeho regiónu.[CR] Všetky rozšírenia v tomto zdroji boli podrobené základnému testovaniu. Ak nájdete poškodené alebo nefunkčné rozšírenie, oznámte to prosím týmu Kodi aby mohol podľa potreby zakročiť.</description>
 		<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 at latin">Preuzmi i instaliraj dodatke iz Zvaničnog Kodi.tv spremišta za dodatke.[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 dodaci u ovom spremištu prošli su osnovno testiranje, u slučaju da pronađete neispravan dodatak molimo vas da to prijavite Kodi timu koji će zatim preduzeti neophodne mere.</description>
+		<description lang="sr_RS at 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="tg_TJ">Барномаҳои иловагиро аз анбори нармафзори Kodi.tv боргирӣ кунед ва насб намоед.[CR]  Аз истифодаи анбори нармафзори расмии мо ба шумо имконият пайдо мешавад, ки тавонед шароити мусофидро аз хидмати оинаи файлии васеъ ба даст оред ва нармафзори лозимиро аз сервери минтакаи ба шумо наздиктар бо суръати баланд боргирӣ кунед.[CR]  Ҳамаи барномаҳо аз анбори нармафзори мо дар ҳолати санҷишӣ мебошанд, бинобар ин агар ягон барномаи иловагии нуқсондор ё вайроншударо ёбед, лутфан дар бораи он барнома ва нуқсон пайдошуда ба гурӯҳи кории Kodi гузориш диҳед, то ин ки мо тавонем ҳамаи камбудиҳои барномаҳои моро ҳал кунем.</description>
 		<description lang="th_TH">ดาวน์โหลดและติดตั้งส่วนเสริม จากแหล่งข้อมูลโปรแกรมของ Kodi.tv อย่างเป็นทางการ.[CR]  โดยการใช้งานแหล่งข้อมูลโปรแกรมอย่างเป็นทางการ คุณสามารถใช้ประโยชน์จากบริการแฟ้มมิเรอร์ที่กว้างขวางของเรา ที่จะช่วยให้การดาวน์โหลดของคุณเร็วขึ้นจากภูมิภาคที่ใกล้ที่สุด.[CR]  ส่วนเสริม ทั้งหมดในแหล่งเก็บข้อมูลนี้ อยู่ภายใต้การทดสอบขั้นพื้นฐานแล้ว ถ้าคุณพบส่วนเสริมที่เสียหายหรือไม่ทำงาน กรุณาแจ้งทีมงาน Kodi เพื่อให้เราสามารถดำเนินการใด ๆ ที่จำเป็น.</description>
@@ -187,7 +187,7 @@
 		<disclaimer lang="sk_SK">Team-Kodi nevytvoril všetky rozšírenia v tomto zdroji nie je zodpovedný za ich obsah</disclaimer>
 		<disclaimer lang="sl_SI">Ekipa Kodi ni naredila vseh dodatkov v tem skladišču in ne odgovarja za njihovo vsebino</disclaimer>
 		<disclaimer lang="sr_RS">Тим Kodi није направио све додатке у овом спремишту и није одговоран за њихов садржај</disclaimer>
-		<disclaimer lang="sr_RS at latin">Tim-Kodi nije napravio sve dodatke u ovom spremištu i nije odgovoran za njihov sadržaj</disclaimer>
+		<disclaimer lang="sr_RS at latin">Tim-Kodi nije napravio sve dodatne programe u ovom spremištu i nije odgovoran za njihov sadržaj</disclaimer>
 		<disclaimer lang="sv_SE">Team-Kodi har inte gjort alla tillägg och är inte ansvariga för innehållet i dessa.</disclaimer>
 		<disclaimer lang="tg_TJ">Гурӯҳи кории Kodi дар ин анбори нармафзор соҳиби ҳамаи барномаҳои иловагӣ намебошад ва барои мӯҳтавояшон ҷавобгар намебшад</disclaimer>
 		<disclaimer lang="th_TH">ทีม Kodi ไม่ได้จัดทำ ส่วนเสริม ทั้งหมดในแหล่งข้อมูลโปรแกรมนี้ และจะไม่รับผิดชอบต่อเนื้อหาเหล่านั้น</disclaimer>
diff --git a/addons/screensaver.rsxs.euphoria/addon.xml b/addons/screensaver.rsxs.euphoria/addon.xml
index 67f3c8e..7bca93f 100644
--- a/addons/screensaver.rsxs.euphoria/addon.xml
+++ b/addons/screensaver.rsxs.euphoria/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="screensaver.rsxs.euphoria"
-  version="1.0.26"
+  version="1.0.27"
   name="Euphoria"
   provider-name="mogumbo, Team-Kodi">
   <requires>
@@ -47,6 +47,7 @@
     <summary lang="lt_LT">Psihodelinė užsklanda nunešanti stoga</summary>
     <summary lang="lv_LV">Cik nu vien psihodēlisks ekrānsaudzētājs var būt</summary>
     <summary lang="mk_MK">Најпсиходелична заштита на екран</summary>
+    <summary lang="mn_MN">Дэлгэц хадгалагчийн хамгийн галзуу хувилбар.</summary>
     <summary lang="ms_MY">Perihal as psychedelic as screensavers get</summary>
     <summary lang="nb_NO">Så psykadelisk som en skjermsparer kan bli</summary>
     <summary lang="nl_NL">Een meer psychedelische schermbeveiliging vindt u niet</summary>
@@ -100,6 +101,7 @@
     <description lang="lt_LT">Tai stogą nunešanti psichodelinė užsklanda. Mogumbo galvojo, kad jo Plasma užsklandos niekas neperšoks, tačiau ši užsklanda tai kažkas tokio. Geriau susiraskite vieną iš tų lėktuvo maišelių, jei supykintų, prieš spoksant į tai per ilgai..</description>
     <description lang="lv_LV">Ekrānsaudzētājs nevarētu būt vēl vairāk psihodēlisks. mogumbo domāja, ka viņa "Plasma saver" bija saraksta augšgalā, bet šis ir vēl šķebinošāks. Labāk apsēdies un sameklē kādu maisņu nelabai dūšai pirms skaties šo pārāk ilgi.</description>
     <description lang="mk_MK">This is about as psychedelic as screensavers get. mogumbo thought his Plasma saver was at the top of the scale, but this one is even more nauseating. You'd better find one of those air sickness bags before you stare at this one for too long.</description>
+    <description lang="mn_MN">Дэлгэц хадгалагчийн хамгийн галзуу гэсэн хувилбар бол энэ. mogumbo ийн хийсэн Plasma дэлгэц хадгалагч хамгийн оргил дээд нь гэж бодож байсан боловч энэ бол бүр ч их толгой эргүүлмээр болсон. Энэ дэлгэцрүү удаан ширтэхээсээ өмнө онгоцонд өгдөг бөөлждөг уутыг урдаа бэлдсэн нь дээр байх.</description>
     <description lang="ms_MY">Ia mengenai as psychedelic as screensavers get. mogumbo berpendapat penyelamat Plasmanya adlaah yang terbaik, tetapi yang ini adalah lebih meloyakan. Oleh itu anda perlu cari beg muntah sebelum anda melihatnya dengan lebih lama.</description>
     <description lang="nb_NO">Dette er så psykadelisk som en skjermsparer kan bli. Mogumbo trodde hans Plasma skjermsparer var på toppen av skalaen, men denne er enda mer kvalmende. Du bør skaffe deg en sånn spypose som de deler ut på fly før du stirrer på denne for lenge.</description>
     <description lang="nl_NL">Ongetwijfeld de meest psychedelische screensaver. mogumbo dacht dat zijn Plasmascreensaver al bovenaan deze lijst stond, maar deze is nóg meer misselijkmakend. Houd uw braakzakje bij de hand, mocht u hier te lang naar staren.</description>
diff --git a/addons/screensaver.rsxs.plasma/addon.xml b/addons/screensaver.rsxs.plasma/addon.xml
index b454f77..ee72251 100644
--- a/addons/screensaver.rsxs.plasma/addon.xml
+++ b/addons/screensaver.rsxs.plasma/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="screensaver.rsxs.plasma"
-  version="1.0.26"
+  version="1.0.27"
   name="Plasma"
   provider-name="mogumbo, Team-Kodi">
   <requires>
@@ -50,7 +50,7 @@
     <summary lang="ms_MY">Berkemungkinan penyelamat skrin kedua yang paling psikedelik</summary>
     <summary lang="nb_NO">Helt sikkert den nest mest psykedeliske skjermspareren som finnes</summary>
     <summary lang="nl_NL">Waarschijnlijk de op één na meest psychedelische schermbeveiliging ooit</summary>
-    <summary lang="pl_PL">Prawdopodobnie drugi, najbardziej psychodeliczny wygaszacz na świecie</summary>
+    <summary lang="pl_PL">Prawdopodobnie drugi najbardziej psychodeliczny wygaszacz na świecie</summary>
     <summary lang="pt_BR">Provavelmente a segunda mais psicodélica proteção de tela já vista</summary>
     <summary lang="pt_PT">Este é provavelmente o segundo melhor protector de ecrã psicadélico de sempre</summary>
     <summary lang="ro_RO">Probabil al doilea cel mai năucitor protector ecran care a existat vreodată</summary>
diff --git a/addons/screensaver.xbmc.builtin.black/addon.xml b/addons/screensaver.xbmc.builtin.black/addon.xml
index 94fdec0..f497f49 100644
--- a/addons/screensaver.xbmc.builtin.black/addon.xml
+++ b/addons/screensaver.xbmc.builtin.black/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="screensaver.xbmc.builtin.black"
        name="Black"
-       version="1.0.26"
+       version="1.0.27"
        provider-name="Team-Kodi">
   <extension point="xbmc.ui.screensaver" library=""/>
   <extension point="xbmc.addon.metadata">
@@ -53,6 +53,7 @@
     <summary lang="sk_SK">Šetrič obrazovky, ktorú ju zmení na čiernu</summary>
     <summary lang="sl_SI">Ohranjevalnik zaslona, ki počrni zaslon</summary>
     <summary lang="sr_RS">Чувар екрана који поцрни ваш екран</summary>
+    <summary lang="sr_RS at latin">Čuvar ekrana koji zacrni vaš ekran</summary>
     <summary lang="sv_SE">En skärmsläckare som gör din skärm svart</summary>
     <summary lang="tg_TJ">Пардаи экран бо таъсири «Пардаи экрани сиёҳ»</summary>
     <summary lang="th_TH">สกรีนเซฟเวอร์ที่จะพักหน้าจอของคุณให้เป็นสีดำ</summary>
@@ -109,6 +110,7 @@
     <description lang="sk_SK">Black je jednoduchý šetrič, ktorý zmení vašu obrazovku na čiernu.</description>
     <description lang="sl_SI">Black je enostaven ohranjevalnik zaslona, ki počrni zaslon.</description>
     <description lang="sr_RS">Black је једноставан чувар екрана који поцрни ваш екран.</description>
+    <description lang="sr_RS at latin">Crno je jednostavan čuvar ekrana koji će zacrniti vaš ekran.</description>
     <description lang="sv_SE">Detta är en enkel skärmsläckare som gör din skärm svart.</description>
     <description lang="tg_TJ">Ин пардаи экрани осон мебошад, ки таъсири «Пардаи экрани сиёҳ»-ро истифода мебарад.</description>
     <description lang="th_TH">หน้าจอสีดำเป็นสกรีนเซฟเวอร์แบบง่ายๆที่จะเปิดหน้าจอของคุณให้เป็นสีดำ</description>
diff --git a/addons/screensaver.xbmc.builtin.dim/addon.xml b/addons/screensaver.xbmc.builtin.dim/addon.xml
index 9ac810d..4a54287 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.26"
+       version="1.0.27"
        provider-name="Team-Kodi">
   <extension point="xbmc.ui.screensaver" library=""/>
   <extension point="xbmc.addon.metadata">
@@ -53,6 +53,7 @@
     <summary lang="sl_SI">Ohranjevalnik zaslona, ki zatemni zaslon</summary>
     <summary lang="sq_AL">Ruajtës ekrani, që errëson ekranin</summary>
     <summary lang="sr_RS">Чувар екрана који затамни ваш екран.</summary>
+    <summary lang="sr_RS at latin">Čuvar ekrana koji prigušuje vaš ekran</summary>
     <summary lang="sv_SE">En skärmsläckare som tonar ned din skärm</summary>
     <summary lang="tg_TJ">Пардаи экран бо таъсири «Пардаи экрани камнур»</summary>
     <summary lang="th_TH">สกรีนเซฟเวอร์ที่หรี่หน้าจอของคุณ</summary>
@@ -109,6 +110,7 @@
     <description lang="sl_SI">Dim je enostaven ohranjevalnik zaslona, ki zatemni zaslon do izbrane svetlosti med 20 in 100%.</description>
     <description lang="sq_AL">Errësuesi i ekranit është një mbrojtës i thjeshtë ekrani, i cili errëson (zbeh) ekranin tuaj në varësi të një vlere të axhustueshme nga 20 deri në 100%. </description>
     <description lang="sr_RS">Dim чувар екрана је једноставан чувар екрана који ће затамнети (постепено) ваш екран на подешену вредност између 20 и 100%.</description>
+    <description lang="sr_RS at latin">Čuvar ekrana Priguši je jednostavan čuvar ekrana koji će prigušiti (izbledeti) vaš ekran na podešenu vrednost između 20 i 100% .</description>
     <description lang="sv_SE">Detta är en enkel skärmsläckare som tonar ned ljusstyrkan på din skärm till ett angivet värde mellan 20 och 100%</description>
     <description lang="tg_TJ">Ин пардаи экран бо таъсири «Пардаи экрани камнур» хеле осон мебошад, ки сатҳи камнури экранро то дараҷае байни 20% ва 100% тағйир меёбад.</description>
     <description lang="th_TH">สกรีนเซฟเวอร์หรี่หน้าจอเป็นสกรีนเซฟเวอร์แบบพื้นฐานที่ช่วยหรี่หน้าจอของคุณซึ่งสามารถตั้งค่าการหรี่หน้าจอได้ตั้งแต่ 20% ถึง 100%</description>
diff --git a/addons/skin.confluence/720p/DialogProgress.xml b/addons/skin.confluence/720p/DialogProgress.xml
index 146df69..94c9557 100644
--- a/addons/skin.confluence/720p/DialogProgress.xml
+++ b/addons/skin.confluence/720p/DialogProgress.xml
@@ -37,7 +37,7 @@
 			<font>font13</font>
 			<autoscroll time="3000" delay="4000" repeat="5000">true</autoscroll>
 		</control>
-		<control type="progress">
+		<control type="progress" id="20">
 			<description>Progressbar</description>
 			<left>30</left>
 			<top>148</top>
diff --git a/addons/skin.confluence/720p/MyPVRRecordings.xml b/addons/skin.confluence/720p/MyPVRRecordings.xml
index 00a36cf..5c39911 100644
--- a/addons/skin.confluence/720p/MyPVRRecordings.xml
+++ b/addons/skin.confluence/720p/MyPVRRecordings.xml
@@ -112,19 +112,18 @@
 					<control type="image">
 						<left>730</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>!ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
 					</control>
 					<control type="image">
 						<left>730</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
 					</control>
 				</itemlayout>
 				<focusedlayout height="40" width="760">
@@ -189,19 +188,18 @@
 					<control type="image">
 						<left>730</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>!ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
 					</control>
 					<control type="image">
 						<left>730</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
 					</control>
 				</focusedlayout>
 			</control>
diff --git a/addons/skin.confluence/720p/SmartPlaylistEditor.xml b/addons/skin.confluence/720p/SmartPlaylistEditor.xml
index 761cc5e..8e3f4ca 100644
--- a/addons/skin.confluence/720p/SmartPlaylistEditor.xml
+++ b/addons/skin.confluence/720p/SmartPlaylistEditor.xml
@@ -145,7 +145,7 @@
 					<font>font12_title</font>
 					<align>center</align>
 					<aligny>center</aligny>
-					<onup>17</onup>
+					<onup>12</onup>
 					<onleft>10</onleft>
 					<onright>10</onright>
 					<ondown>14</ondown>
diff --git a/addons/skin.confluence/720p/ViewsFileMode.xml b/addons/skin.confluence/720p/ViewsFileMode.xml
index 0885288..0b3be74 100644
--- a/addons/skin.confluence/720p/ViewsFileMode.xml
+++ b/addons/skin.confluence/720p/ViewsFileMode.xml
@@ -75,19 +75,19 @@
 					<control type="image">
 						<left>665</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>Window.IsVisible(Videos) + !ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
 					</control>
 					<control type="image">
 						<left>665</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
+						<visible>Window.IsVisible(Videos)</visible>
 					</control>
 				</itemlayout>
 				<focusedlayout height="40" width="580">
@@ -168,19 +168,19 @@
 					<control type="image">
 						<left>665</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>Window.IsVisible(Videos) + !ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
 					</control>
-					<control type="image">
+ 					<control type="image">
 						<left>665</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
+						<visible>Window.IsVisible(Videos)</visible>
 					</control>
 				</focusedlayout>
 			</control>
@@ -575,19 +575,19 @@
 					<control type="image">
 						<left>1050</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>Window.IsVisible(Videos) + !ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
 					</control>
 					<control type="image">
 						<left>1050</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
+						<visible>Window.IsVisible(Videos)</visible>
 					</control>
 				</itemlayout>
 				<focusedlayout height="40" width="1080">
@@ -676,19 +676,19 @@
 					<control type="image">
 						<left>1050</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>Window.IsVisible(Videos) + !ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
 					</control>
 					<control type="image">
 						<left>1050</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>Window.IsVisible(Videos) + ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
+						<visible>Window.IsVisible(Videos)</visible>
 					</control>
 				</focusedlayout>
 			</control>
diff --git a/addons/skin.confluence/720p/ViewsVideoLibrary.xml b/addons/skin.confluence/720p/ViewsVideoLibrary.xml
index 02ec2de..443cd62 100644
--- a/addons/skin.confluence/720p/ViewsVideoLibrary.xml
+++ b/addons/skin.confluence/720p/ViewsVideoLibrary.xml
@@ -818,9 +818,17 @@
 					<control type="image">
 						<left>555</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
+						<height>16</height>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
+					</control>
+					<control type="image">
+						<left>555</left>
+						<top>14</top>
+						<width>16</width>
 						<height>16</height>
-						<texture>$VAR[OverlayVar]</texture>
+						<texture>$INFO[ListItem.Overlay]</texture>
 						<aspectratio align="left">keep</aspectratio>
 					</control>
 				</itemlayout>
@@ -889,9 +897,17 @@
 					<control type="image">
 						<left>555</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$VAR[OverlayVar]</texture>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
+					</control>
+					<control type="image">
+						<left>555</left>
+						<top>14</top>
+						<width>16</width>
+						<height>16</height>
+						<texture>$INFO[ListItem.Overlay]</texture>
 						<aspectratio align="left">keep</aspectratio>
 					</control>
 				</focusedlayout>
@@ -1234,9 +1250,17 @@
 					<control type="image">
 						<left>555</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$VAR[OverlayVar]</texture>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
+					</control>
+					<control type="image">
+						<left>555</left>
+						<top>14</top>
+						<width>16</width>
+						<height>16</height>
+						<texture>$INFO[ListItem.Overlay]</texture>
 						<aspectratio align="left">keep</aspectratio>
 					</control>
 				</itemlayout>
@@ -1305,9 +1329,17 @@
 					<control type="image">
 						<left>555</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$VAR[OverlayVar]</texture>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
+					</control>
+					<control type="image">
+						<left>555</left>
+						<top>14</top>
+						<width>16</width>
+						<height>16</height>
+						<texture>$INFO[ListItem.Overlay]</texture>
 						<aspectratio align="left">keep</aspectratio>
 					</control>
 				</focusedlayout>
@@ -1595,21 +1627,20 @@
 					<control type="image">
 						<left>320</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>!ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
 					</control>
+				</itemlayout>
 					<control type="image">
 						<left>320</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
 					</control>
-				</itemlayout>
 				<focusedlayout height="40" width="345">
 					<control type="image">
 						<left>0</left>
@@ -1644,19 +1675,18 @@
 					<control type="image">
 						<left>320</left>
 						<top>14</top>
-						<width>20</width>
+						<width>16</width>
 						<height>16</height>
-						<texture>$INFO[ListItem.Overlay]</texture>
-						<aspectratio>keep</aspectratio>
-						<visible>!ListItem.IsResumable</visible>
+						<texture>OverlayWatching.png</texture>
+						<visible>ListItem.IsResumable</visible>
 					</control>
 					<control type="image">
 						<left>320</left>
 						<top>14</top>
-						<width>16</width>
+						<width>20</width>
 						<height>16</height>
-						<texture>OverlayWatching.png</texture>
-						<visible>ListItem.IsResumable</visible>
+						<texture>$INFO[ListItem.Overlay]</texture>
+						<aspectratio>keep</aspectratio>
 					</control>
 				</focusedlayout>
 			</control>
diff --git a/addons/skin.confluence/720p/includes.xml b/addons/skin.confluence/720p/includes.xml
index 94831a4..ce5ad24 100644
--- a/addons/skin.confluence/720p/includes.xml
+++ b/addons/skin.confluence/720p/includes.xml
@@ -21,10 +21,6 @@
 		<value condition="!ListItem.IsStereoscopic">$INFO[ListItem.VideoResolution,flagging/lists/,.png]</value>
 		<value>flagging/lists/3D.png</value>
 	</variable>
-	<variable name="OverlayVar">
-		<value condition="!ListItem.IsResumable">$INFO[ListItem.Overlay]</value>
-		<value>OverlayWatching.png</value>
-	</variable>
 	<variable name="BannerThumb">
 		<value condition="!IsEmpty(ListItem.Art(banner))">$INFO[ListItem.Art(banner)]</value>
 		<value>$INFO[ListItem.Icon]</value>
diff --git a/addons/skin.confluence/addon.xml b/addons/skin.confluence/addon.xml
index 705e930..b4adb57 100644
--- a/addons/skin.confluence/addon.xml
+++ b/addons/skin.confluence/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="skin.confluence"
-  version="2.7.3"
+  version="2.7.4"
   name="Confluence"
   provider-name="Jezz_X, Team Kodi">
   <requires>
@@ -17,7 +17,7 @@
     <summary lang="af_ZA">Confluence tema deur Jezz_X. (Kodi se standaard tema)</summary>
     <summary lang="ar_SA">جلد "كونفليونس" من صنع Jezz_x. (الجلد المبدأى لبرنامج إكس بى إم سى)</summary>
     <summary lang="be_BY">Confluence skin by Jezz_X. (Kodi's default skin)</summary>
-    <summary lang="bg_BG">Облик от Jezz_X. (стандартния за Kodi)</summary>
+    <summary lang="bg_BG">Confluence облик от Jezz_X. (стандартния облик за Kodi)</summary>
     <summary lang="ca_ES">Pell Confluence, per Jezz_X. (Pell per defecte del Kodi)</summary>
     <summary lang="cs_CZ">Vzhled Confluence od Jezz_X. (výchozí vzhled Kodi)</summary>
     <summary lang="cy_GB">Croen Confluence gan Jezz_X. (Croen rhagosodedig Kodi)</summary>
diff --git a/addons/skin.confluence/changelog.txt b/addons/skin.confluence/changelog.txt
index 0660497..51fec94 100644
--- a/addons/skin.confluence/changelog.txt
+++ b/addons/skin.confluence/changelog.txt
@@ -1,3 +1,7 @@
+[B]2.7.4[/B]
+
+- Updated language files from Transifex
+
 [B]2.7.3[/B]
 
 - Updated language files from Transifex
diff --git a/addons/skin.confluence/language/resource.language.bg_bg/strings.po b/addons/skin.confluence/language/resource.language.bg_bg/strings.po
index 8efe0db..ef1d1a7 100644
--- a/addons/skin.confluence/language/resource.language.bg_bg/strings.po
+++ b/addons/skin.confluence/language/resource.language.bg_bg/strings.po
@@ -22,12 +22,16 @@ msgstr "Променете вашите"
 
 msgctxt "#31003"
 msgid "Power options"
-msgstr "Изключи..."
+msgstr "Настройки за захранване"
 
 msgctxt "#31004"
 msgid "Working..."
 msgstr "Работи..."
 
+msgctxt "#31005"
+msgid "Hide information"
+msgstr "Скрий информацията"
+
 msgctxt "#31006"
 msgid "View options"
 msgstr "Преглед на настройките"
@@ -164,6 +168,10 @@ msgctxt "#31102"
 msgid "Background"
 msgstr "Фон"
 
+msgctxt "#31103"
+msgid "Show \"Paused\" in picture slideshow"
+msgstr "Показвай \"На Пауза\" индикация при слайдшоу от снимки"
+
 msgctxt "#31104"
 msgid "Play trailers in a window [COLOR=grey3](Video information dialogue only)[/COLOR]"
 msgstr "Възпроизвеждай трейлърите в прозореца [COLOR=grey3]Информация за видеото[/COLOR]"
@@ -492,6 +500,10 @@ msgctxt "#31423"
 msgid "Select the profile that will be used at startup when the login screen is disabled."
 msgstr "Изберете кой профил да се ползва за влизане, когато екрана за вписване е изключен"
 
+msgctxt "#31501"
+msgid "Scheduled time"
+msgstr "График"
+
 msgctxt "#31502"
 msgid "TV"
 msgstr "Телевизия"
@@ -516,6 +528,14 @@ msgctxt "#31509"
 msgid "Channel group"
 msgstr "Група канали"
 
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "Настройка на брояча"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "Настройки на канала"
+
 msgctxt "#31901"
 msgid "36-hour forecast"
 msgstr "36 часова прогноза"
diff --git a/addons/skin.confluence/language/resource.language.da_dk/strings.po b/addons/skin.confluence/language/resource.language.da_dk/strings.po
index b7fcb3e..442e3f4 100644
--- a/addons/skin.confluence/language/resource.language.da_dk/strings.po
+++ b/addons/skin.confluence/language/resource.language.da_dk/strings.po
@@ -16,6 +16,10 @@ msgstr ""
 "Language: da_DK\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgctxt "#31000"
+msgid "Change your"
+msgstr "Ændre din"
+
 msgctxt "#31003"
 msgid "Power options"
 msgstr "Strømstyring"
@@ -24,6 +28,10 @@ msgctxt "#31004"
 msgid "Working..."
 msgstr "Arbejder..."
 
+msgctxt "#31005"
+msgid "Hide information"
+msgstr "Skjul information"
+
 msgctxt "#31006"
 msgid "View options"
 msgstr "Visningsindstillinger"
@@ -32,6 +40,10 @@ msgctxt "#31008"
 msgid "Full screen"
 msgstr "Fuld skærm"
 
+msgctxt "#31009"
+msgid "Total duration"
+msgstr "Total tid"
+
 msgctxt "#31022"
 msgid "Music - Files"
 msgstr "Musik - Filer"
@@ -48,14 +60,30 @@ msgctxt "#31025"
 msgid "Items"
 msgstr "Emner"
 
+msgctxt "#31026"
+msgid "Misc options"
+msgstr "Andre indstillinger"
+
 msgctxt "#31027"
 msgid "Location"
 msgstr "Lokalitet"
 
+msgctxt "#31028"
+msgid "Poster wrap"
+msgstr "Plakatvæg"
+
 msgctxt "#31029"
 msgid "Fanart"
 msgstr "Fankunst"
 
+msgctxt "#31031"
+msgid "Pic thumbs"
+msgstr "Blandet"
+
+msgctxt "#31032"
+msgid "Image wrap"
+msgstr "Billedvæg"
+
 msgctxt "#31033"
 msgid "Info"
 msgstr "Info"
@@ -64,6 +92,10 @@ msgctxt "#31039"
 msgid "Actions"
 msgstr "Handlinger"
 
+msgctxt "#31040"
+msgid "Now playing"
+msgstr "Spiller nu"
+
 msgctxt "#31042"
 msgid "PLAYING"
 msgstr "AFSPILLER"
@@ -84,6 +116,10 @@ msgctxt "#31046"
 msgid "SEEKING"
 msgstr "SØGER"
 
+msgctxt "#31048"
+msgid "Visualisation presets"
+msgstr "Visualiserings-forudindstillinger"
+
 msgctxt "#31049"
 msgid "End time"
 msgstr "Sluttidspunkt"
@@ -120,6 +156,10 @@ msgctxt "#31060"
 msgid "This file is stacked, select the part you want to play from."
 msgstr "Denne fil er kombineret. Vælg den del du vil afspille fra."
 
+msgctxt "#31061"
+msgid "Current selected"
+msgstr "Nuværende valgte"
+
 msgctxt "#31101"
 msgid "Home screen options"
 msgstr "Indstillinger til hjemmeskærmen"
@@ -128,10 +168,26 @@ msgctxt "#31102"
 msgid "Background"
 msgstr "Baggrund"
 
+msgctxt "#31103"
+msgid "Show \"Paused\" in picture slideshow"
+msgstr "Vis \"PAUSE\" i  billeddiasshow"
+
+msgctxt "#31104"
+msgid "Play trailers in a window [COLOR=grey3](Video information dialogue only)[/COLOR]"
+msgstr "Afspil trailere i et vindue [COLOR=grey3](Kun videoinformationsdialog)[/COLOR]"
+
 msgctxt "#31106"
 msgid "Miscellaneous options"
 msgstr "Diverse indstillinger"
 
+msgctxt "#31107"
+msgid "Hide flagging read from video filenames [COLOR=grey3](e.g. Blu-ray, HD-DVD)[/COLOR]"
+msgstr "Skjul læsning af mærker fra videoers filnavne [COLOR=grey3](Blu-ray, HD-DVD)[/COLOR]"
+
+msgctxt "#31108"
+msgid "Hide main menu buttons"
+msgstr "Skjul knapper i Hovedmenu"
+
 msgctxt "#31109"
 msgid "Enable custom background"
 msgstr "Aktiver brugerdefineret baggrund"
@@ -148,6 +204,30 @@ msgctxt "#31112"
 msgid "Options"
 msgstr "Indstillinger"
 
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "Vis nyligt tilføjede Albummer"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "Vis nyligt tilføjede Videoer"
+
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "Undermenu til programmer på startskærmen"
+
+msgctxt "#31119"
+msgid "Hide background fanart"
+msgstr "Skjul baggrundsfankunst"
+
+msgctxt "#31124"
+msgid "Show background \"Now playing\" video"
+msgstr "Vis \"Spiller nu\" i baggrunden for videoer"
+
+msgctxt "#31125"
+msgid "Show background \"Now playing\" visualisation"
+msgstr "Vis \"Spiller nu\" visualisering i baggrunden"
+
 msgctxt "#31126"
 msgid "Play TV theme songs in video library (TvTunes add-on)"
 msgstr "Afspil kendingsmelodier til TV-serier i videobiblioteket (TvTunes add-on)"
@@ -160,6 +240,26 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "Sangtekster"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "Skjul Fanart i fuldskærmsvisning"
+
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "Add-on til Sangtekster"
+
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "Undermenu til Videoer på Hjemmeskærmen"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "Undermenu til Musik på Hjemmeskærmen"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "Undermenu til Billeder på Hjemmeskærmen"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "Musik OSD"
@@ -176,22 +276,94 @@ msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "Genveje"
 
+msgctxt "#31203"
+msgid "Choose your song"
+msgstr "Vælg din sang"
+
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "Kilde til Sangtekster"
+
 msgctxt "#31206"
 msgid "Found"
 msgstr "Fundet"
 
+msgctxt "#31207"
+msgid "Find more items"
+msgstr "Find flere Emner"
+
+msgctxt "#31208"
+msgid "Upcoming episodes"
+msgstr "Kommende Afsnit"
+
+msgctxt "#31300"
+msgid "Current temperature"
+msgstr "Ønsket temperatur"
+
+msgctxt "#31301"
+msgid "Last updated"
+msgstr "Sidst Opdateret"
+
 msgctxt "#31303"
 msgid "Data provider"
 msgstr "Dataleverandør"
 
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "Skjul Fankunst"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "Filmdetaljer"
+
+msgctxt "#31309"
+msgid "Memory used:"
+msgstr "Hukommelse i brug:"
+
+msgctxt "#31310"
+msgid "Track number"
+msgstr "Spornummer"
+
 msgctxt "#31311"
 msgid "Fanart image[CR][CR]Unavailable[CR][CR] Click button to set"
 msgstr "Fankunstbillede[CR][CR]ikke tilgængeligt[CR][CR] Tryk på knap for at vælge"
 
+msgctxt "#31312"
+msgid "Current scraper"
+msgstr "Nuværende Scraper"
+
+msgctxt "#31313"
+msgid "Choose a scraper"
+msgstr "Vælg en Scraper"
+
+msgctxt "#31314"
+msgid "Content scanning options"
+msgstr "Indstillinger for indholdsskanning"
+
+msgctxt "#31317"
+msgid "Set fanart path"
+msgstr "Vælg sti til Fankunst"
+
+msgctxt "#31319"
+msgid "Selected profile"
+msgstr "Valgt Profil"
+
+msgctxt "#31320"
+msgid "Last logged in"
+msgstr "Sidst logget ind"
+
+msgctxt "#31321"
+msgid "Karaoke song selector"
+msgstr "Sangvalg til Karaoke"
+
 msgctxt "#31322"
 msgid "Aired"
 msgstr "Sendt"
 
+msgctxt "#31325"
+msgid "Playlist options"
+msgstr "Indstillinger for Afspilningsliste"
+
 msgctxt "#31326"
 msgid "Created"
 msgstr "Oprettet"
@@ -208,6 +380,14 @@ msgctxt "#31329"
 msgid "[B]Timer set![/B] [COLOR=grey2] - System auto shutdown in[/COLOR]"
 msgstr "[B]Optagelse indstillet![/B] [COLOR=grey2] - Systemet lukker ned om[/COLOR]"
 
+msgctxt "#31330"
+msgid "Click button to play[CR][CR]movie trailer"
+msgstr "Klik på en knap for at afspille[CR][CR]Filmtrailer"
+
+msgctxt "#31331"
+msgid "Album details"
+msgstr "Albumdetaljer"
+
 msgctxt "#31351"
 msgid "Pause"
 msgstr "Pause"
@@ -216,6 +396,10 @@ msgctxt "#31352"
 msgid "Stop"
 msgstr "Stop"
 
+msgctxt "#31353"
+msgid "Fast forward"
+msgstr "Spol Frem"
+
 msgctxt "#31354"
 msgid "Rewind"
 msgstr "Spol Tilbage"
@@ -224,6 +408,10 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "Filmmenu"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "Hent Undertekster"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
 msgstr "Se i 2D"
@@ -240,6 +428,10 @@ msgctxt "#31390"
 msgid "Skin default"
 msgstr "Skinnets standard"
 
+msgctxt "#31391"
+msgid "Skin default with no caps"
+msgstr "Skinnets standard uden store bogstaver"
+
 msgctxt "#31392"
 msgid "Arial based"
 msgstr "Baseret på Arial"
@@ -256,10 +448,22 @@ msgctxt "#31402"
 msgid "[B]CONFIGURE MUSIC SETTINGS[/B][CR][CR]Manage your music library · Set music playback options · Change music listing options[CR]Setup song submission · Set karaoke options"
 msgstr "[B]KONFIGURER MUSIKINDSTILLINGER[/B][CR][CR]Administrer dit musikbibliotek · Vælg indstillinger for musikafspilning · Skift indstillinger for musikoversigt[CR]Opsæt sangindsendelse · Vælg karaoke-indstillinger"
 
+msgctxt "#31403"
+msgid "[B]CONFIGURE PICTURE SETTINGS[/B][CR][CR]Set picture listing options · Configure slideshow"
+msgstr "[B]KONFIGURER BILLEDEINDSTILLINGER[/B][CR][CR]Vælg indstillinger for billedeoversigt · Konfigurer diasshow"
+
+msgctxt "#31404"
+msgid "[B]CONFIGURE WEATHER SETTINGS[/B][CR][CR]Set various cities to collect weather information"
+msgstr "[B]KONFIGURER VEJRINDSTILLINGER[/B][CR][CR]Du kan vælge tre byer, der skal hentes vejrudsigter for"
+
 msgctxt "#31406"
 msgid "[B]CONFIGURE SYSTEM SETTINGS[/B][CR][CR]Setup and calibrate displays · Configure audio output · Setup remote controls[CR]Set power saving options · Enable debugging · Setup master lock"
 msgstr "[B]KONFIGURER SYSTEMINDSTILLINGER[/B][CR][CR]Indstil og kalibrer skærme · Konfigurer lydudgang · Opsæt fjernbetjeninger[CR]Opsæt strømstyring · Aktiver fejllogning · Opret hovedlås"
 
+msgctxt "#31408"
+msgid "[B]CONFIGURE ADD-ONS[/B][CR][CR]Manage your installed add-ons · Browse for and install add-ons from kodi.tv[CR]Modify add-on settings"
+msgstr "[B]KONFIGURER ADD-ONS[/B][CR][CR]Administrer dine installerede Add-ons · Gennemse og installer Add-ons fra kodi.tv[CR]Tilpas indstillinger til Add-ons"
+
 msgctxt "#31409"
 msgid "[B]CONFIGURE TV SETTINGS[/B][CR][CR]Change full screen info · Manage EPG data settings"
 msgstr "[B]KONFIGURER TV-INDSTILLINGER[/B][CR][CR]Skift fuldskærmsinfo · Administrer indstillinger for EPG"
@@ -268,6 +472,14 @@ msgctxt "#31410"
 msgid "[B]CONFIGURE SERVICE SETTINGS[/B][CR][CR]Setup control of Kodi via UPnP and HTTP · Configure file sharing[CR]Enable Zeroconf · Configure AirPlay"
 msgstr "[B]KONFIGURER TJENESTER[/B][CR][CR]Opsæt styring af Kodi ved hjælp af UPnP og HTTP · Konfigurer fildeling[CR]Aktiver Zeroconf · Konfigurer AirPlay"
 
+msgctxt "#31411"
+msgid "First run help..."
+msgstr "Prøv først hjælp..."
+
+msgctxt "#31412"
+msgid "This tab signifies that there is a menu off to the side of this window that contains extra options for this section. To access the menu, navigate to the left with your remote control or keyboard or place your mouse pointer over the tab. [CR][CR]Click \"OK\" to close this dialogue. It will not appear again."
+msgstr "Dette faneblad indikerer, at der er en menu i siden af dette vindue, som indeholder ekstra indstillinger til denne sektion.\nFor at få adgang til denne menu, skal du navigere til venstre  med din fjernbetjening eller dit tastatur. Du kan også placere din musemarkør over fanebladet. [CR][CR]Tryk \"Ok\" for at lukke denne dialog. Den dukker ikke op igen."
+
 msgctxt "#31413"
 msgid "Local subtitle available"
 msgstr "Undertekster på lokalt sprog tilgængelig"
@@ -276,6 +488,10 @@ msgctxt "#31420"
 msgid "Login"
 msgstr "Login"
 
+msgctxt "#31421"
+msgid "Select your Kodi user profile[CR]to login and continue"
+msgstr "Vælg din Kodi brugerprofil[CR]for at logge ind og fortsætte"
+
 msgctxt "#31422"
 msgid "Show or hide the login screen at startup."
 msgstr "Vise eller skjule login-skærmen ved opstart."
@@ -284,18 +500,66 @@ msgctxt "#31423"
 msgid "Select the profile that will be used at startup when the login screen is disabled."
 msgstr "Vælg den profil, der skal bruges ved opstart, når login-skærmen er deaktiveret."
 
+msgctxt "#31501"
+msgid "Scheduled time"
+msgstr "Planlagt tid"
+
 msgctxt "#31502"
 msgid "TV"
 msgstr "TV"
 
+msgctxt "#31503"
+msgid "Add group"
+msgstr "Tilføj Gruppe"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "Omdøb Gruppe"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "Slet Gruppe"
+
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "Tilgængelige[CR]Grupper"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "Kanalgruppe"
+
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "Indstil Optagelse"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "Kanalindstillinger"
+
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "36 timers vejrudsigt"
+
+msgctxt "#31902"
+msgid "Hourly forecast"
+msgstr "Vejrudsigt de næste timer"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "Vejrudsigt for weekenden"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "Vejrudsigten for i dag"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "Vejrudsigt"
 
+msgctxt "#31908"
+msgid "Chance of precipitation"
+msgstr "Risiko for nedbør"
+
 msgctxt "#31909"
 msgid "Fetching forecast info..."
 msgstr "Henter vejrudsigt..."
diff --git a/addons/skin.confluence/language/resource.language.es_ar/strings.po b/addons/skin.confluence/language/resource.language.es_ar/strings.po
index da6145d..c591552 100644
--- a/addons/skin.confluence/language/resource.language.es_ar/strings.po
+++ b/addons/skin.confluence/language/resource.language.es_ar/strings.po
@@ -16,10 +16,22 @@ msgstr ""
 "Language: es_AR\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgctxt "#31000"
+msgid "Change your"
+msgstr "Modifique sus"
+
+msgctxt "#31003"
+msgid "Power options"
+msgstr "Opciones de energía"
+
 msgctxt "#31004"
 msgid "Working..."
 msgstr "Cargando..."
 
+msgctxt "#31005"
+msgid "Hide information"
+msgstr "Ocultar información"
+
 msgctxt "#31006"
 msgid "View options"
 msgstr "Vista"
@@ -28,6 +40,10 @@ msgctxt "#31008"
 msgid "Full screen"
 msgstr "Pantalla completa"
 
+msgctxt "#31009"
+msgid "Total duration"
+msgstr "Duración total"
+
 msgctxt "#31022"
 msgid "Music - Files"
 msgstr "Archivos - música"
@@ -44,14 +60,30 @@ msgctxt "#31025"
 msgid "Items"
 msgstr "Elementos"
 
+msgctxt "#31026"
+msgid "Misc options"
+msgstr "Opciones varias"
+
 msgctxt "#31027"
 msgid "Location"
 msgstr "Ubicación"
 
+msgctxt "#31028"
+msgid "Poster wrap"
+msgstr "Flujo de póster"
+
 msgctxt "#31029"
 msgid "Fanart"
 msgstr "Fanart"
 
+msgctxt "#31031"
+msgid "Pic thumbs"
+msgstr "Miniaturas"
+
+msgctxt "#31032"
+msgid "Image wrap"
+msgstr "Flujo de imagen"
+
 msgctxt "#31033"
 msgid "Info"
 msgstr "Info"
@@ -60,6 +92,10 @@ msgctxt "#31039"
 msgid "Actions"
 msgstr "Acciones"
 
+msgctxt "#31040"
+msgid "Now playing"
+msgstr "Reproduciendo"
+
 msgctxt "#31042"
 msgid "PLAYING"
 msgstr "REPRODUCIENDO"
@@ -80,6 +116,10 @@ msgctxt "#31046"
 msgid "SEEKING"
 msgstr "BUSCANDO"
 
+msgctxt "#31048"
+msgid "Visualisation presets"
+msgstr "Visualizaciones preestablecidas"
+
 msgctxt "#31049"
 msgid "End time"
 msgstr "Hora de finalización"
@@ -116,6 +156,10 @@ msgctxt "#31060"
 msgid "This file is stacked, select the part you want to play from."
 msgstr "Este archivo está agrupado, selecciona la parte desde la que desea reproducir."
 
+msgctxt "#31061"
+msgid "Current selected"
+msgstr "Seleccionado"
+
 msgctxt "#31101"
 msgid "Home screen options"
 msgstr "Opciones de la pantalla principal"
@@ -124,10 +168,26 @@ msgctxt "#31102"
 msgid "Background"
 msgstr "Fondo"
 
+msgctxt "#31103"
+msgid "Show \"Paused\" in picture slideshow"
+msgstr "Mostrar \"Pausa\" en modo presentación de imágenes"
+
+msgctxt "#31104"
+msgid "Play trailers in a window [COLOR=grey3](Video information dialogue only)[/COLOR]"
+msgstr "Reproducir avances en ventana [COLOR=grey3](Sólo diálogo de información de video)[/COLOR] "
+
 msgctxt "#31106"
 msgid "Miscellaneous options"
 msgstr "Otras opciones"
 
+msgctxt "#31107"
+msgid "Hide flagging read from video filenames [COLOR=grey3](e.g. Blu-ray, HD-DVD)[/COLOR]"
+msgstr "Ocultar marcas de lectura de archivos de video [COLOR=grey3](Blu-ray, HD-DVD)[/COLOR]"
+
+msgctxt "#31108"
+msgid "Hide main menu buttons"
+msgstr "Ocultar botones del menú principal"
+
 msgctxt "#31109"
 msgid "Enable custom background"
 msgstr "Habilitar fondo personalizado"
@@ -144,6 +204,30 @@ msgctxt "#31112"
 msgid "Options"
 msgstr "Opciones"
 
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "Mostrar últimos discos añadidos"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "Mostrar últimos videos añadidos"
+
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "Submenú de programas de la pantalla principal"
+
+msgctxt "#31119"
+msgid "Hide background fanart"
+msgstr "Ocultar el Fanart del fondo"
+
+msgctxt "#31124"
+msgid "Show background \"Now playing\" video"
+msgstr "Mostrar video en reproducción en el fondo"
+
+msgctxt "#31125"
+msgid "Show background \"Now playing\" visualisation"
+msgstr "Mostrar visualización \"Reproduciendo ahora\" en el fondo"
+
 msgctxt "#31126"
 msgid "Play TV theme songs in video library (TvTunes add-on)"
 msgstr "Reproducir canciones de series en la colección de video (complemento TvTunes)"
@@ -156,6 +240,26 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "Letras"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "Ocultar Fanart con visualizaciones a pantalla completa"
+
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "Add-on para letras"
+
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "Submenú de videos de la pantalla principal"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "Submenú de música de la pantalla principal"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "Submenú \"Fotos\" de la pantalla principal"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "OSD de música"
@@ -172,22 +276,94 @@ msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "Accesos directos"
 
+msgctxt "#31203"
+msgid "Choose your song"
+msgstr "Elija su canción"
+
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "Fuente para letras"
+
 msgctxt "#31206"
 msgid "Found"
 msgstr "Encontrados"
 
+msgctxt "#31207"
+msgid "Find more items"
+msgstr "Encuentra más elementos"
+
+msgctxt "#31208"
+msgid "Upcoming episodes"
+msgstr "Próximos episodios"
+
+msgctxt "#31300"
+msgid "Current temperature"
+msgstr "Temperatura actual"
+
+msgctxt "#31301"
+msgid "Last updated"
+msgstr "Última actualización"
+
 msgctxt "#31303"
 msgid "Data provider"
 msgstr "Proveedor de datos"
 
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "Ocultar fanart"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "Detalles de la película"
+
+msgctxt "#31309"
+msgid "Memory used:"
+msgstr "Memoria usada:"
+
+msgctxt "#31310"
+msgid "Track number"
+msgstr "Número de pista"
+
 msgctxt "#31311"
 msgid "Fanart image[CR][CR]Unavailable[CR][CR] Click button to set"
 msgstr "Imagen fanart[CR][CR]no disponible[CR][CR]Click para elegir"
 
+msgctxt "#31312"
+msgid "Current scraper"
+msgstr "Scraper actual"
+
+msgctxt "#31313"
+msgid "Choose a scraper"
+msgstr "Elige un scraper"
+
+msgctxt "#31314"
+msgid "Content scanning options"
+msgstr "Opciones de escanéo de contenido"
+
+msgctxt "#31317"
+msgid "Set fanart path"
+msgstr "Selecciona ruta del fanart"
+
+msgctxt "#31319"
+msgid "Selected profile"
+msgstr "Perfil seleccionado"
+
+msgctxt "#31320"
+msgid "Last logged in"
+msgstr "Último inicio de sesión"
+
+msgctxt "#31321"
+msgid "Karaoke song selector"
+msgstr "Selector de canción de karaoke"
+
 msgctxt "#31322"
 msgid "Aired"
 msgstr "Estrenado"
 
+msgctxt "#31325"
+msgid "Playlist options"
+msgstr "Opciones de lista de reproducción"
+
 msgctxt "#31326"
 msgid "Created"
 msgstr "Creado"
@@ -196,10 +372,22 @@ msgctxt "#31327"
 msgid "Resolution"
 msgstr "Resolución"
 
+msgctxt "#31328"
+msgid "Recently added"
+msgstr "Añadidos/as recientemente"
+
 msgctxt "#31329"
 msgid "[B]Timer set![/B] [COLOR=grey2] - System auto shutdown in[/COLOR]"
 msgstr "[B]Temporizador activado[/B] [COLOR=grey2] - El sistema se apagará en[/COLOR]"
 
+msgctxt "#31330"
+msgid "Click button to play[CR][CR]movie trailer"
+msgstr "Click para reproducir[CR][CR]trailer de película"
+
+msgctxt "#31331"
+msgid "Album details"
+msgstr "Detalles del disco"
+
 msgctxt "#31351"
 msgid "Pause"
 msgstr "Pausar"
@@ -208,6 +396,10 @@ msgctxt "#31352"
 msgid "Stop"
 msgstr "Detener"
 
+msgctxt "#31353"
+msgid "Fast forward"
+msgstr "Avance rápido"
+
 msgctxt "#31354"
 msgid "Rewind"
 msgstr "Retroceder"
@@ -216,6 +408,10 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "Menú película"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "Descargar subtítulos"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
 msgstr "Mirar como 2D"
@@ -232,6 +428,10 @@ msgctxt "#31390"
 msgid "Skin default"
 msgstr "Por defecto"
 
+msgctxt "#31391"
+msgid "Skin default with no caps"
+msgstr "Por defecto sin Mayúsculas"
+
 msgctxt "#31392"
 msgid "Arial based"
 msgstr "Basada en Arial"
@@ -248,10 +448,22 @@ msgctxt "#31402"
 msgid "[B]CONFIGURE MUSIC SETTINGS[/B][CR][CR]Manage your music library · Set music playback options · Change music listing options[CR]Setup song submission · Set karaoke options"
 msgstr "[B]Configura las opciones de MÚSICA[/B][CR][CR]Administre su colección de música · Ajusta reproducción de música · Cambia opciones de listas de música[CR]Configura envío de canciones · Configura el karaoke"
 
+msgctxt "#31403"
+msgid "[B]CONFIGURE PICTURE SETTINGS[/B][CR][CR]Set picture listing options · Configure slideshow"
+msgstr "[B]Configura las opciones de IMAGEN[/B][CR][CR]Cambia opciones de listas de imágenes - Configura presentación de diapositivas"
+
+msgctxt "#31404"
+msgid "[B]CONFIGURE WEATHER SETTINGS[/B][CR][CR]Set various cities to collect weather information"
+msgstr "[B]Configura las opciones de EL TIEMPO[/B][CR][CR]Establece varias ciudades para información meteorológica"
+
 msgctxt "#31406"
 msgid "[B]CONFIGURE SYSTEM SETTINGS[/B][CR][CR]Setup and calibrate displays · Configure audio output · Setup remote controls[CR]Set power saving options · Enable debugging · Setup master lock"
 msgstr "[B]Configura las opciones de SISTEMA[/B][CR][CR]Configura y calibra la pantalla - Configura salida de audio - Configura mandos a distancia[CR]Establece las opciones de ahorro de energía - Habilita depuración de errores - Configura bloqueo maestro"
 
+msgctxt "#31408"
+msgid "[B]CONFIGURE ADD-ONS[/B][CR][CR]Manage your installed add-ons · Browse for and install add-ons from kodi.tv[CR]Modify add-on settings"
+msgstr "[B]Configura los ADD-ONS[/B][CR][CR]Administre addons instalados · Busca e instala addons desde kodi.tv[CR]Modifica la configuración de los addons"
+
 msgctxt "#31409"
 msgid "[B]CONFIGURE TV SETTINGS[/B][CR][CR]Change full screen info · Manage EPG data settings"
 msgstr "[B]CONFIGURAR OPCIONES DE TV[/B][CR][CR]Cambiar info pantalla completa ·  Especificar datos de guía GEP"
@@ -260,6 +472,14 @@ msgctxt "#31410"
 msgid "[B]CONFIGURE SERVICE SETTINGS[/B][CR][CR]Setup control of Kodi via UPnP and HTTP · Configure file sharing[CR]Enable Zeroconf · Configure AirPlay"
 msgstr "[B]AJUSTES DE SERVICIOS[/B][CR][CR]Ajustes para controlar Kodi por UPnP y HTTP - Ajustes de archivos compartidos[CR]Activar Zeroconf - Ajustes de AirPlay"
 
+msgctxt "#31411"
+msgid "First run help..."
+msgstr "Ayuda para la primera vez..."
+
+msgctxt "#31412"
+msgid "This tab signifies that there is a menu off to the side of this window that contains extra options for this section. To access the menu, navigate to the left with your remote control or keyboard or place your mouse pointer over the tab. [CR][CR]Click \"OK\" to close this dialogue. It will not appear again."
+msgstr "Esta pestaña significa que hay un menú oculto a un lado de esta ventana que contiene opciones adicionales para esta sección. Para acceder al menú, desplácese a la izquierda con el mando a distancia o el teclado o sitúe el puntero del ratón sobre la pestaña. [CR][CR] Haga clic en \"Aceptar\" para cerrar este cuadro de diálogo. Este no volverá a aparecer."
+
 msgctxt "#31413"
 msgid "Local subtitle available"
 msgstr "Subtitulo local disponible"
@@ -268,6 +488,10 @@ msgctxt "#31420"
 msgid "Login"
 msgstr "Ingresar"
 
+msgctxt "#31421"
+msgid "Select your Kodi user profile[CR]to login and continue"
+msgstr "Seleccione su perfil de usuario de Kodi[CR]para ingresar y continuar"
+
 msgctxt "#31422"
 msgid "Show or hide the login screen at startup."
 msgstr "Mostrar u ocultar la pantalla de ingreso al iniciar."
@@ -276,18 +500,66 @@ msgctxt "#31423"
 msgid "Select the profile that will be used at startup when the login screen is disabled."
 msgstr "Seleccionar el perfil que se usará en el inicio cuando la pantalla de ingreso esta deshabilitada."
 
+msgctxt "#31501"
+msgid "Scheduled time"
+msgstr "Hora programada"
+
 msgctxt "#31502"
 msgid "TV"
 msgstr "TV"
 
+msgctxt "#31503"
+msgid "Add group"
+msgstr "Añdadir Grupo"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "Renombrar Grupo"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "Borrar Grupo"
+
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "Grupos[CR]disponibles"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "Grupo de canales"
+
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "Programar grabación"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "Opciones de canal"
+
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "Pronóstico de 36 hs"
+
+msgctxt "#31902"
+msgid "Hourly forecast"
+msgstr "Pronóstico por hora"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "Pronóstico para el fin de semana"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "Pronóstico diario"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "Pronóstico"
 
+msgctxt "#31908"
+msgid "Chance of precipitation"
+msgstr "Probabilidad de precipitación"
+
 msgctxt "#31909"
 msgid "Fetching forecast info..."
 msgstr "Obteniendo información meteorológica..."
diff --git a/addons/skin.confluence/language/resource.language.es_mx/strings.po b/addons/skin.confluence/language/resource.language.es_mx/strings.po
index 23825f0..dcf34d3 100644
--- a/addons/skin.confluence/language/resource.language.es_mx/strings.po
+++ b/addons/skin.confluence/language/resource.language.es_mx/strings.po
@@ -16,6 +16,10 @@ msgstr ""
 "Language: es_MX\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgctxt "#31000"
+msgid "Change your"
+msgstr "Cambiar al tuyo"
+
 msgctxt "#31004"
 msgid "Working..."
 msgstr "Trabajando..."
diff --git a/addons/skin.confluence/language/resource.language.fa_ir/strings.po b/addons/skin.confluence/language/resource.language.fa_ir/strings.po
index db58094..b455b8a 100644
--- a/addons/skin.confluence/language/resource.language.fa_ir/strings.po
+++ b/addons/skin.confluence/language/resource.language.fa_ir/strings.po
@@ -60,6 +60,10 @@ msgctxt "#31039"
 msgid "Actions"
 msgstr "عملیات"
 
+msgctxt "#31040"
+msgid "Now playing"
+msgstr "در حال پخش"
+
 msgctxt "#31042"
 msgid "PLAYING"
 msgstr "در حال پخش"
@@ -152,6 +156,10 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "اشعار"
 
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "افزونه متن ترانه"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "موسیقی"
@@ -212,6 +220,10 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "منو فیلم"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "دانلود زیر نویس ها"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
 msgstr "تماشا بصورت دو بعدی"
@@ -276,10 +288,34 @@ msgctxt "#31502"
 msgid "TV"
 msgstr "تلویزیون"
 
+msgctxt "#31503"
+msgid "Add group"
+msgstr "افزودن گروه"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "تغییر نام گروه"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "حذف گروه"
+
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "گروه های [CR]موجود"
 
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "پیش بینی 36 ساعته"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "پیش بینی هفتگی"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "پیش بینی روزانه"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "پیش بینی"
diff --git a/addons/skin.confluence/language/resource.language.fr_ca/strings.po b/addons/skin.confluence/language/resource.language.fr_ca/strings.po
index e035be1..00fe4ee 100644
--- a/addons/skin.confluence/language/resource.language.fr_ca/strings.po
+++ b/addons/skin.confluence/language/resource.language.fr_ca/strings.po
@@ -18,7 +18,7 @@ msgstr ""
 
 msgctxt "#31000"
 msgid "Change your"
-msgstr "Changer vos"
+msgstr "Changez vos"
 
 msgctxt "#31003"
 msgid "Power options"
diff --git a/addons/skin.confluence/language/resource.language.he_il/strings.po b/addons/skin.confluence/language/resource.language.he_il/strings.po
index 5890340..38007a6 100644
--- a/addons/skin.confluence/language/resource.language.he_il/strings.po
+++ b/addons/skin.confluence/language/resource.language.he_il/strings.po
@@ -16,10 +16,22 @@ msgstr ""
 "Language: he_IL\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgctxt "#31000"
+msgid "Change your"
+msgstr "שינוי"
+
+msgctxt "#31003"
+msgid "Power options"
+msgstr "אפשרויות חשמל"
+
 msgctxt "#31004"
 msgid "Working..."
 msgstr "עסוק..."
 
+msgctxt "#31005"
+msgid "Hide information"
+msgstr "הסתר פרטים"
+
 msgctxt "#31006"
 msgid "View options"
 msgstr "אפשרויות תצוגה"
@@ -28,6 +40,10 @@ msgctxt "#31008"
 msgid "Full screen"
 msgstr "מסך מלא"
 
+msgctxt "#31009"
+msgid "Total duration"
+msgstr "אורך כולל"
+
 msgctxt "#31022"
 msgid "Music - Files"
 msgstr "מוזיקה - קבצים"
@@ -44,14 +60,30 @@ msgctxt "#31025"
 msgid "Items"
 msgstr "פריטים"
 
+msgctxt "#31026"
+msgid "Misc options"
+msgstr "אפשרויות שונות"
+
 msgctxt "#31027"
 msgid "Location"
 msgstr "מיקום"
 
+msgctxt "#31028"
+msgid "Poster wrap"
+msgstr "רצועת פוסטרים"
+
 msgctxt "#31029"
 msgid "Fanart"
 msgstr "פאנארט"
 
+msgctxt "#31031"
+msgid "Pic thumbs"
+msgstr "תמונות ממוזערות"
+
+msgctxt "#31032"
+msgid "Image wrap"
+msgstr "רצועת תמונות"
+
 msgctxt "#31033"
 msgid "Info"
 msgstr "פרטים"
@@ -60,6 +92,10 @@ msgctxt "#31039"
 msgid "Actions"
 msgstr "פעולות"
 
+msgctxt "#31040"
+msgid "Now playing"
+msgstr "מנגן כעת"
+
 msgctxt "#31042"
 msgid "PLAYING"
 msgstr "מנגן"
@@ -120,6 +156,10 @@ msgctxt "#31060"
 msgid "This file is stacked, select the part you want to play from."
 msgstr "קובץ זה שייך לערימה. יש לבחור חלק ממנו יתחיל הניגון."
 
+msgctxt "#31061"
+msgid "Current selected"
+msgstr "כרגע מסומנים"
+
 msgctxt "#31101"
 msgid "Home screen options"
 msgstr "אפשרויות מסך הבית"
@@ -128,10 +168,26 @@ msgctxt "#31102"
 msgid "Background"
 msgstr "רקע"
 
+msgctxt "#31103"
+msgid "Show \"Paused\" in picture slideshow"
+msgstr "הצג \"מושהה\" במצגת תמונות"
+
+msgctxt "#31104"
+msgid "Play trailers in a window [COLOR=grey3](Video information dialogue only)[/COLOR]"
+msgstr "נגן קדימונים בחלון [COLOR=grey3](דיאלוג פרטי וידאו בלבד)[/COLOR]"
+
 msgctxt "#31106"
 msgid "Miscellaneous options"
 msgstr "אפשרויות שונות"
 
+msgctxt "#31107"
+msgid "Hide flagging read from video filenames [COLOR=grey3](e.g. Blu-ray, HD-DVD)[/COLOR]"
+msgstr "הסתר סימון \"נצפה\" משמות קבצי וידאו [COLOR=grey3](Blu-ray, HD-DVD)[/COLOR]"
+
+msgctxt "#31108"
+msgid "Hide main menu buttons"
+msgstr "הסתר כפתורי תפריט ראשי"
+
 msgctxt "#31109"
 msgid "Enable custom background"
 msgstr "אפשר רקע מותאם אישית"
@@ -148,6 +204,30 @@ msgctxt "#31112"
 msgid "Options"
 msgstr "אפשרויות"
 
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "הצג אלבומים שנוספו לאחרונה"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "הצג וידאו שנוסף לאחרונה"
+
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "תת תפריט תוכנות במסך הבית"
+
+msgctxt "#31119"
+msgid "Hide background fanart"
+msgstr "נטרל הצגת פאנארט כרקע"
+
+msgctxt "#31124"
+msgid "Show background \"Now playing\" video"
+msgstr "הצג וידאו \"מנגן כעת\" כרקע"
+
+msgctxt "#31125"
+msgid "Show background \"Now playing\" visualisation"
+msgstr "הצג חיזוי \"מנגן כעת\" כרקע"
+
 msgctxt "#31126"
 msgid "Play TV theme songs in video library (TvTunes add-on)"
 msgstr "נגן נעימת סדרה בספריית הוידאו (הרחבת TvTunes)"
@@ -160,6 +240,26 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "מילות שיר"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "הסתר פאנארט כאשר חיזוי מוצג במסך מלא"
+
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "הרחבת מילות שירים"
+
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "תת תפריט וידאו במסך הבית"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "תת תפריט מוזיקה במסך הבית"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "תת תפריט תמונות במסך הבית"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "מוזיקה - תפריט צף (OSD)"
@@ -176,10 +276,30 @@ msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "קיצורי דרך"
 
+msgctxt "#31203"
+msgid "Choose your song"
+msgstr "בחירת השיר"
+
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "מקור מילות שיר"
+
 msgctxt "#31206"
 msgid "Found"
 msgstr "נמצא"
 
+msgctxt "#31207"
+msgid "Find more items"
+msgstr "מציאת פריטים נוספים"
+
+msgctxt "#31208"
+msgid "Upcoming episodes"
+msgstr "הפרקים הקרובים"
+
+msgctxt "#31300"
+msgid "Current temperature"
+msgstr "טמפ' נוכחית"
+
 msgctxt "#31301"
 msgid "Last updated"
 msgstr "עודכן לאחרונה"
@@ -188,14 +308,62 @@ msgctxt "#31303"
 msgid "Data provider"
 msgstr "ספק מידע"
 
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "הסתר פאנארט"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "פרטי סרט"
+
+msgctxt "#31309"
+msgid "Memory used:"
+msgstr "זכרון בשימוש:"
+
+msgctxt "#31310"
+msgid "Track number"
+msgstr "מספר רצועה"
+
 msgctxt "#31311"
 msgid "Fanart image[CR][CR]Unavailable[CR][CR] Click button to set"
 msgstr "תמונת פאנארט[CR][CR]לא זמינה[CR][CR]יש ללחוץ לבחירה בתמונה"
 
+msgctxt "#31312"
+msgid "Current scraper"
+msgstr "סקרייפר נוכחי"
+
+msgctxt "#31313"
+msgid "Choose a scraper"
+msgstr "בחירת סקרייפר"
+
+msgctxt "#31314"
+msgid "Content scanning options"
+msgstr "הגדרות סריקת תוכן"
+
+msgctxt "#31317"
+msgid "Set fanart path"
+msgstr "קביעת נתיב פאנארט"
+
+msgctxt "#31319"
+msgid "Selected profile"
+msgstr "משתמש נבחר"
+
+msgctxt "#31320"
+msgid "Last logged in"
+msgstr "חובר לאחרונה"
+
+msgctxt "#31321"
+msgid "Karaoke song selector"
+msgstr "בוחר שיר קריוקי"
+
 msgctxt "#31322"
 msgid "Aired"
 msgstr "שודר"
 
+msgctxt "#31325"
+msgid "Playlist options"
+msgstr "אפשרויות רשימת ניגון"
+
 msgctxt "#31326"
 msgid "Created"
 msgstr "נוצר"
@@ -204,10 +372,22 @@ msgctxt "#31327"
 msgid "Resolution"
 msgstr "אבחנה"
 
+msgctxt "#31328"
+msgid "Recently added"
+msgstr "נוסף לאחרונה"
+
 msgctxt "#31329"
 msgid "[B]Timer set![/B] [COLOR=grey2] - System auto shutdown in[/COLOR]"
 msgstr "[B]התזמון נקבע![/B] [COLOR=grey2] - כיבוי מערכת אוטומטי בעוד[/COLOR]"
 
+msgctxt "#31330"
+msgid "Click button to play[CR][CR]movie trailer"
+msgstr "יש ללחוץ הכפתור ע\"מ לנגן[CR][CR]את הקדימון"
+
+msgctxt "#31331"
+msgid "Album details"
+msgstr "פרטי אלבום"
+
 msgctxt "#31351"
 msgid "Pause"
 msgstr "השהיה"
@@ -216,6 +396,10 @@ msgctxt "#31352"
 msgid "Stop"
 msgstr "עצירה"
 
+msgctxt "#31353"
+msgid "Fast forward"
+msgstr "הרצה קדימה"
+
 msgctxt "#31354"
 msgid "Rewind"
 msgstr "הרצה אחורה"
@@ -224,9 +408,13 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "תפריט סרט"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "הורדת כתוביות"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
-msgstr "צפיה כ־2D"
+msgstr "צפייה כ־2D"
 
 msgctxt "#31361"
 msgid "Change mode"
@@ -240,6 +428,10 @@ msgctxt "#31390"
 msgid "Skin default"
 msgstr "ברירת מחדל של המעטפת"
 
+msgctxt "#31391"
+msgid "Skin default with no caps"
+msgstr "ברירת מחדל של המעטפת ללא רישיות"
+
 msgctxt "#31392"
 msgid "Arial based"
 msgstr "מבוסס Arial"
@@ -256,10 +448,22 @@ msgctxt "#31402"
 msgid "[B]CONFIGURE MUSIC SETTINGS[/B][CR][CR]Manage your music library · Set music playback options · Change music listing options[CR]Setup song submission · Set karaoke options"
 msgstr "[B]שינוי הגדרות מוזיקה[/B][CR][CR]ניהול ספריית המוזיקה · קביעת העדפות ניגון מוזיקה · שינוי אפשרויות תצוגת קבצי מוזיקה[CR]הגדרת אפשרויות קריוקי"
 
+msgctxt "#31403"
+msgid "[B]CONFIGURE PICTURE SETTINGS[/B][CR][CR]Set picture listing options · Configure slideshow"
+msgstr "[B]שינוי הגדרות תמונות[/B][CR][CR]הגדרת אפשרויות תצוגת קבצי תמונה · הגדרת אפשרויות מצגת תמונה"
+
+msgctxt "#31404"
+msgid "[B]CONFIGURE WEATHER SETTINGS[/B][CR][CR]Set various cities to collect weather information"
+msgstr "[B]שינוי הגדרות מזג אוויר[/B][CR][CR]בחירת עד שלוש ערים עבורן תוצג תחזית מזג אוויר"
+
 msgctxt "#31406"
 msgid "[B]CONFIGURE SYSTEM SETTINGS[/B][CR][CR]Setup and calibrate displays · Configure audio output · Setup remote controls[CR]Set power saving options · Enable debugging · Setup master lock"
 msgstr "[B]שינוי הגדרות מערכת[/B][CR][CR]הגדרת וכיול התקני תצוגה · הגדרת התקן פלט שמע · הגדרת שלט רחוק[CR]קביעת העדפות חיסכון בחשמל · הפעלת יומן רישום מורחב · הגדרת קוד נעילה ראשי"
 
+msgctxt "#31408"
+msgid "[B]CONFIGURE ADD-ONS[/B][CR][CR]Manage your installed add-ons · Browse for and install add-ons from kodi.tv[CR]Modify add-on settings"
+msgstr "[B]הגדרת הרחבות[/B][CR][CR]ניהול הרחבות מותקנות · עיון בהרחבות מ־kodi.tv והתקנתן[CR]שינוי הגדרות הרחבה"
+
 msgctxt "#31409"
 msgid "[B]CONFIGURE TV SETTINGS[/B][CR][CR]Change full screen info · Manage EPG data settings"
 msgstr "[B]שינוי הגדרות טלוויזיה[/B][CR][CR]שינוי המידע המוצג במסך מלא · ניהול הגדרות נתוני לוח השידורים"
@@ -268,6 +472,14 @@ msgctxt "#31410"
 msgid "[B]CONFIGURE SERVICE SETTINGS[/B][CR][CR]Setup control of Kodi via UPnP and HTTP · Configure file sharing[CR]Enable Zeroconf · Configure AirPlay"
 msgstr "[B]שינוי הגדרות שירותים[/B][CR][CR]הגדרות שליטה על Kodi דרך UPnP ו־HTTP · הגדרות שיתוף קבצים[CR]הפעלת Zeroconf · הגדרות AirPlay"
 
+msgctxt "#31411"
+msgid "First run help..."
+msgstr "סיוע היכרות..."
+
+msgctxt "#31412"
+msgid "This tab signifies that there is a menu off to the side of this window that contains extra options for this section. To access the menu, navigate to the left with your remote control or keyboard or place your mouse pointer over the tab. [CR][CR]Click \"OK\" to close this dialogue. It will not appear again."
+msgstr "לשונית זו מציינת שיש תפריט נוסף לצד חלון זה המכיל הגדרות נוספות עבור מדור זה. לשם גישה לתפריט, יש לנווט שמאלה בעזרת השלט או המקלדת או הצבת סמן העכבר מעל הלשונית . [CR][CR] יש ללחוץ על \"אישור\" לשם סגירת דיאלוג זה. הודעה זו לא תוצג שנית."
+
 msgctxt "#31413"
 msgid "Local subtitle available"
 msgstr "כתובית מקומית זמינה"
@@ -276,6 +488,10 @@ msgctxt "#31420"
 msgid "Login"
 msgstr "כניסה"
 
+msgctxt "#31421"
+msgid "Select your Kodi user profile[CR]to login and continue"
+msgstr "יש לבחור חשבון משתמש Kodi[CR]להתחברות והמשך"
+
 msgctxt "#31422"
 msgid "Show or hide the login screen at startup."
 msgstr "הצג או הסתר מסך כניסה בעת ההפעלה."
@@ -284,18 +500,66 @@ msgctxt "#31423"
 msgid "Select the profile that will be used at startup when the login screen is disabled."
 msgstr "יש לבחור משתמש שיחובר כברירת מחדל בעת ההפעלה כאשר מסך כניסה מנוטרל."
 
+msgctxt "#31501"
+msgid "Scheduled time"
+msgstr "זמן מתוכנן"
+
 msgctxt "#31502"
 msgid "TV"
 msgstr "טלוויזיה"
 
+msgctxt "#31503"
+msgid "Add group"
+msgstr "הוספת קבוצה"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "שינוי שם קבוצה"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "מחיקת קבוצה"
+
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "קבוצות[CR]זמינות"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "קבוצת ערוצים"
+
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "תזמון נקבע"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "אפשרויות ערוץ"
+
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "תחזית ל־36 שעות"
+
+msgctxt "#31902"
+msgid "Hourly forecast"
+msgstr "תחזית לפי שעה"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "תחזית לסופ\"ש"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "תחזית יומית"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "תחזית"
 
+msgctxt "#31908"
+msgid "Chance of precipitation"
+msgstr "סיכוי למשקעים"
+
 msgctxt "#31909"
 msgid "Fetching forecast info..."
 msgstr "משיג פרטי תחזית..."
diff --git a/addons/skin.confluence/language/resource.language.hr_hr/strings.po b/addons/skin.confluence/language/resource.language.hr_hr/strings.po
index ebd50b5..df5994a 100644
--- a/addons/skin.confluence/language/resource.language.hr_hr/strings.po
+++ b/addons/skin.confluence/language/resource.language.hr_hr/strings.po
@@ -16,10 +16,22 @@ msgstr ""
 "Language: hr_HR\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 
+msgctxt "#31000"
+msgid "Change your"
+msgstr "Promijenite vaše"
+
+msgctxt "#31003"
+msgid "Power options"
+msgstr "Mogućnosti energije"
+
 msgctxt "#31004"
 msgid "Working..."
 msgstr "Reprodukcija..."
 
+msgctxt "#31005"
+msgid "Hide information"
+msgstr "Sakrij informacije"
+
 msgctxt "#31006"
 msgid "View options"
 msgstr "Mogućnosti prikaza"
@@ -28,6 +40,10 @@ msgctxt "#31008"
 msgid "Full screen"
 msgstr "Cijeli zaslon"
 
+msgctxt "#31009"
+msgid "Total duration"
+msgstr "Ukupno trajanje"
+
 msgctxt "#31022"
 msgid "Music - Files"
 msgstr "Glazba - Datoteke"
@@ -44,14 +60,30 @@ msgctxt "#31025"
 msgid "Items"
 msgstr "Stavaka"
 
+msgctxt "#31026"
+msgid "Misc options"
+msgstr "Ostale mogućnosti"
+
 msgctxt "#31027"
 msgid "Location"
 msgstr "Lokacija"
 
+msgctxt "#31028"
+msgid "Poster wrap"
+msgstr "Omot postera"
+
 msgctxt "#31029"
 msgid "Fanart"
 msgstr "Slika omota"
 
+msgctxt "#31031"
+msgid "Pic thumbs"
+msgstr "Minijature"
+
+msgctxt "#31032"
+msgid "Image wrap"
+msgstr "Slika omota"
+
 msgctxt "#31033"
 msgid "Info"
 msgstr "Informacije"
@@ -60,6 +92,10 @@ msgctxt "#31039"
 msgid "Actions"
 msgstr "Radnje"
 
+msgctxt "#31040"
+msgid "Now playing"
+msgstr "Trenutno se reproducira"
+
 msgctxt "#31042"
 msgid "PLAYING"
 msgstr "REPRODUKCIJA"
@@ -80,6 +116,10 @@ msgctxt "#31046"
 msgid "SEEKING"
 msgstr "PREMOTAVANJE"
 
+msgctxt "#31048"
+msgid "Visualisation presets"
+msgstr "Predlošci vizualizacije"
+
 msgctxt "#31049"
 msgid "End time"
 msgstr "Vrijeme završetka"
@@ -116,6 +156,10 @@ msgctxt "#31060"
 msgid "This file is stacked, select the part you want to play from."
 msgstr "Ova datoteka je složena, odaberite dio od kojeg želite pokrenuti reprodukciju."
 
+msgctxt "#31061"
+msgid "Current selected"
+msgstr "Trenutno odabrano"
+
 msgctxt "#31101"
 msgid "Home screen options"
 msgstr "Mogućnosti početnog zaslona"
@@ -124,10 +168,26 @@ msgctxt "#31102"
 msgid "Background"
 msgstr "Pozadina"
 
+msgctxt "#31103"
+msgid "Show \"Paused\" in picture slideshow"
+msgstr "Prikaži \"Pauzirano\" u slikovnoj prezentaciji"
+
+msgctxt "#31104"
+msgid "Play trailers in a window [COLOR=grey3](Video information dialogue only)[/COLOR]"
+msgstr "Reproduciraj najave u prozoru [COLOR=grey3](Samo dijalog video informacija)[/COLOR]"
+
 msgctxt "#31106"
 msgid "Miscellaneous options"
 msgstr "Ostale mogućnosti"
 
+msgctxt "#31107"
+msgid "Hide flagging read from video filenames [COLOR=grey3](e.g. Blu-ray, HD-DVD)[/COLOR]"
+msgstr "Sakrij oznake pročitane iz naziva video datoteka [COLOR=grey3](npr. Blu-ray, HD-DVD)[/COLOR]"
+
+msgctxt "#31108"
+msgid "Hide main menu buttons"
+msgstr "Sakrij tipke glavnog izbornika"
+
 msgctxt "#31109"
 msgid "Enable custom background"
 msgstr "Omogući prilagođenu pozadinu"
@@ -144,6 +204,30 @@ msgctxt "#31112"
 msgid "Options"
 msgstr "Mogućnosti"
 
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "Prikaži nedavno dodane albume"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "Prikaži nedavno dodane video snimke"
+
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "Početna stranica podizbornika programa "
+
+msgctxt "#31119"
+msgid "Hide background fanart"
+msgstr "Sakrij pozadinu slike omota"
+
+msgctxt "#31124"
+msgid "Show background \"Now playing\" video"
+msgstr "Prikaži pozadinu \"Trenutno se reproducira\" videa"
+
+msgctxt "#31125"
+msgid "Show background \"Now playing\" visualisation"
+msgstr "Prikaži pozadinu \"Trenutno se reproducira\" vizualizacije"
+
 msgctxt "#31126"
 msgid "Play TV theme songs in video library (TvTunes add-on)"
 msgstr "Reproduciraj pjesme TV tema iz videoteke (TvTunes dodatak)"
@@ -156,6 +240,26 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "Tekstovi pjesama"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "Sakrij sliku omota u vizualizaciji cijelog zaslona"
+
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "Dodatak za tekstove pjesama"
+
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "Početna stranica \"video\"  podizbornika"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "Početna stranica \"glazbenog\" podizbornika"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "Početna stranica podizbornika \"slika\""
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "OSD glazbe"
@@ -172,22 +276,94 @@ msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "Prečaci"
 
+msgctxt "#31203"
+msgid "Choose your song"
+msgstr "Odaberite svoju pjesmu"
+
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "Izvor tekstova pjesama"
+
 msgctxt "#31206"
 msgid "Found"
 msgstr "Pronađeno"
 
+msgctxt "#31207"
+msgid "Find more items"
+msgstr "Potraži više stavki"
+
+msgctxt "#31208"
+msgid "Upcoming episodes"
+msgstr "Nadolazeće epizode"
+
+msgctxt "#31300"
+msgid "Current temperature"
+msgstr "Trenutna temperatura"
+
+msgctxt "#31301"
+msgid "Last updated"
+msgstr "Posljednje ažurirano"
+
 msgctxt "#31303"
 msgid "Data provider"
 msgstr "Pružatelj podataka"
 
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "Sakrij sliku omota"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "Pojedinosti filma"
+
+msgctxt "#31309"
+msgid "Memory used:"
+msgstr "Korištenje memorije:"
+
+msgctxt "#31310"
+msgid "Track number"
+msgstr "Broj pjesme"
+
 msgctxt "#31311"
 msgid "Fanart image[CR][CR]Unavailable[CR][CR] Click button to set"
 msgstr "Slika za omot[CR][CR]je nedostupna[CR][CR] Kliknite tipku za postavljanje"
 
+msgctxt "#31312"
+msgid "Current scraper"
+msgstr "Trenutni sakupljač"
+
+msgctxt "#31313"
+msgid "Choose a scraper"
+msgstr "Odaberite sakupljača"
+
+msgctxt "#31314"
+msgid "Content scanning options"
+msgstr "Mogućnosti pretraživanja sadržaja"
+
+msgctxt "#31317"
+msgid "Set fanart path"
+msgstr "Postavite putanju slike omota"
+
+msgctxt "#31319"
+msgid "Selected profile"
+msgstr "Odabrani profil"
+
+msgctxt "#31320"
+msgid "Last logged in"
+msgstr "Posljednji prijavljen"
+
+msgctxt "#31321"
+msgid "Karaoke song selector"
+msgstr "Izbornik karaoke pjesama"
+
 msgctxt "#31322"
 msgid "Aired"
 msgstr "Emitirano"
 
+msgctxt "#31325"
+msgid "Playlist options"
+msgstr "Mogućnosti popisa izvođenja"
+
 msgctxt "#31326"
 msgid "Created"
 msgstr "Napravljeno"
@@ -204,6 +380,14 @@ msgctxt "#31329"
 msgid "[B]Timer set![/B] [COLOR=grey2] - System auto shutdown in[/COLOR]"
 msgstr "[B]Vrijeme isključivanja![/B][COLOR=grey2] - Sustav se automatski isključuje za[/COLOR]"
 
+msgctxt "#31330"
+msgid "Click button to play[CR][CR]movie trailer"
+msgstr "Kliknite tipku za reprodukciju[CR][CR]filmskih najava"
+
+msgctxt "#31331"
+msgid "Album details"
+msgstr "Pojedinosti albuma"
+
 msgctxt "#31351"
 msgid "Pause"
 msgstr "Pauza"
@@ -212,6 +396,10 @@ msgctxt "#31352"
 msgid "Stop"
 msgstr "Zaustavi"
 
+msgctxt "#31353"
+msgid "Fast forward"
+msgstr "Premotavanje unaprijed"
+
 msgctxt "#31354"
 msgid "Rewind"
 msgstr "Premotavanje unazad"
@@ -220,6 +408,10 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "Filmski izbornik"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "Preuzmanje podnaslova"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
 msgstr "Gledaj kao 2D"
@@ -236,6 +428,10 @@ msgctxt "#31390"
 msgid "Skin default"
 msgstr "Uobičajena presvlaka"
 
+msgctxt "#31391"
+msgid "Skin default with no caps"
+msgstr "Uobičajena presvlaka bez velikih slova"
+
 msgctxt "#31392"
 msgid "Arial based"
 msgstr "Temeljen na Arialu "
@@ -252,10 +448,22 @@ msgctxt "#31402"
 msgid "[B]CONFIGURE MUSIC SETTINGS[/B][CR][CR]Manage your music library · Set music playback options · Change music listing options[CR]Setup song submission · Set karaoke options"
 msgstr "[B]PRILAGODITE POSTAVKE GLAZBE[/B][CR][CR]Upravljajte svojm fonotekom · Postavite mogućnosti reprodukcije glazbe[CR]Promjenite mogućnosti popisivanja glazbenoga sadržaja · Postavite slanje pjesama · Postavite mogućnosti karaoka"
 
+msgctxt "#31403"
+msgid "[B]CONFIGURE PICTURE SETTINGS[/B][CR][CR]Set picture listing options · Configure slideshow"
+msgstr "[B]PRILAGODITE POSTAVKE SLIKA[/B][CR][CR]Postavljanje mogućnosti popsivanja slika · Postavke slikovne prezentacije"
+
+msgctxt "#31404"
+msgid "[B]CONFIGURE WEATHER SETTINGS[/B][CR][CR]Set various cities to collect weather information"
+msgstr "[B]PRILAGODITE POSTAVKE VREMENSKE PROGNOZE[/B][CR][CR]Postavite različite gradove za prikupljanje informacija vremenske prognoze"
+
 msgctxt "#31406"
 msgid "[B]CONFIGURE SYSTEM SETTINGS[/B][CR][CR]Setup and calibrate displays · Configure audio output · Setup remote controls[CR]Set power saving options · Enable debugging · Setup master lock"
 msgstr "[B]PRILAGODITE POSTAVKE SUSTAVA[/B][CR][CR]Prilagodite i kalibrirajte zaslon · Prilagodite izlaz zvuka · Postavite daljinsko upravljanje[CR]Postavite mogućnosti uštede energije  · Omogućite zapise otklanjanja grešaka · Postavite glavno zaključavanje"
 
+msgctxt "#31408"
+msgid "[B]CONFIGURE ADD-ONS[/B][CR][CR]Manage your installed add-ons · Browse for and install add-ons from kodi.tv[CR]Modify add-on settings"
+msgstr "[B]PRILAGODITE DODATKE[/B][CR][CR]Upravljajte svojim instaliranim dodacima · Pregledavajte i instalirajte dodatake iz kodi.tv[CR]Mijenjajte postavke dodataka"
+
 msgctxt "#31409"
 msgid "[B]CONFIGURE TV SETTINGS[/B][CR][CR]Change full screen info · Manage EPG data settings"
 msgstr "[B]PRILAGODITE TV POSTAVKE[/B][CR][CR]Promjenite informacije cijelog zaslona · Upravljajte postavkama podataka elektronskog programskog vodiča (EPG)"
@@ -264,6 +472,14 @@ msgctxt "#31410"
 msgid "[B]CONFIGURE SERVICE SETTINGS[/B][CR][CR]Setup control of Kodi via UPnP and HTTP · Configure file sharing[CR]Enable Zeroconf · Configure AirPlay"
 msgstr "[B]PRILAGODITE POSTAVKE USLUGA[/B][CR][CR]Postavite upravljanje Kodijem putem UPnP-a i HTTP-a · Prilagodite dijeljenje datoteka[CR]Omogućite Zeroconf · Prilagodite AirPlay"
 
+msgctxt "#31411"
+msgid "First run help..."
+msgstr "Pomoć kod prvog pokretanja..."
+
+msgctxt "#31412"
+msgid "This tab signifies that there is a menu off to the side of this window that contains extra options for this section. To access the menu, navigate to the left with your remote control or keyboard or place your mouse pointer over the tab. [CR][CR]Click \"OK\" to close this dialogue. It will not appear again."
+msgstr "Ova kartica označava da postoji izbornik sa strane ovog prozora koji sadrži dodatne mogućnosti ovog odjeljka. Za pristup izborniku, idite lijevo daljinskim upravljačem ili tipkovnicom ili postavite pokazivač miša iznad kartice. [CR] [CR] Kliknite na \"U redu\" za zatvaranje ovog dijaloga. Neće se ponovno pojaviti."
+
 msgctxt "#31413"
 msgid "Local subtitle available"
 msgstr "Lokalni podnaslovi dostupni"
@@ -272,6 +488,10 @@ msgctxt "#31420"
 msgid "Login"
 msgstr "Prijava"
 
+msgctxt "#31421"
+msgid "Select your Kodi user profile[CR]to login and continue"
+msgstr "Odaberite svoj Kodi korisnički profil[CR]za prijavu i nastavak"
+
 msgctxt "#31422"
 msgid "Show or hide the login screen at startup."
 msgstr "Prikaži ili sakrij zaslon prijave pri pokretanju."
@@ -280,18 +500,66 @@ msgctxt "#31423"
 msgid "Select the profile that will be used at startup when the login screen is disabled."
 msgstr "Odaberite profil koji će se koristiti pri pokretanju kada je zaslon prijave onemogućen."
 
+msgctxt "#31501"
+msgid "Scheduled time"
+msgstr "Planirano vrijeme"
+
 msgctxt "#31502"
 msgid "TV"
-msgstr "TELEVIZIJA"
+msgstr "Televizija"
+
+msgctxt "#31503"
+msgid "Add group"
+msgstr "Dodaj grupu"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "Preimenuj grupu"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "Obriši grupu"
 
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "Dostupne[CR]grupe"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "Grupa programa"
+
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "Postavljanje zakazanog snimanja"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "Mogućnosti programa"
+
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "36-satna prognoza"
+
+msgctxt "#31902"
+msgid "Hourly forecast"
+msgstr "Prognoza za svaki sat"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "Prognoza za vikend"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "Dnevna prognoza"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "Prognoza"
 
+msgctxt "#31908"
+msgid "Chance of precipitation"
+msgstr "Moguće padaline"
+
 msgctxt "#31909"
 msgid "Fetching forecast info..."
 msgstr "Nabavljanje informacija prognoze..."
diff --git a/addons/skin.confluence/language/resource.language.hu_hu/strings.po b/addons/skin.confluence/language/resource.language.hu_hu/strings.po
index e9ddefd..f9f76f2 100644
--- a/addons/skin.confluence/language/resource.language.hu_hu/strings.po
+++ b/addons/skin.confluence/language/resource.language.hu_hu/strings.po
@@ -162,7 +162,7 @@ msgstr "Jelenleg kiválasztott"
 
 msgctxt "#31101"
 msgid "Home screen options"
-msgstr "Sajátképernyő lehetőségei"
+msgstr "Főképernyő lehetőségei"
 
 msgctxt "#31102"
 msgid "Background"
diff --git a/addons/skin.confluence/language/resource.language.mn_mn/strings.po b/addons/skin.confluence/language/resource.language.mn_mn/strings.po
index 4dd5622..2123814 100644
--- a/addons/skin.confluence/language/resource.language.mn_mn/strings.po
+++ b/addons/skin.confluence/language/resource.language.mn_mn/strings.po
@@ -20,22 +20,106 @@ msgctxt "#31008"
 msgid "Full screen"
 msgstr "Бүтэн дэлгэц"
 
+msgctxt "#31022"
+msgid "Music - Files"
+msgstr "Дууны Файлууд"
+
+msgctxt "#31023"
+msgid "Playing"
+msgstr "Тоглуулж байна"
+
+msgctxt "#31024"
+msgid "Page"
+msgstr "Хуудас"
+
+msgctxt "#31026"
+msgid "Misc options"
+msgstr "бусад тохиргоонууд"
+
 msgctxt "#31027"
 msgid "Location"
 msgstr "Байрлал"
 
+msgctxt "#31033"
+msgid "Info"
+msgstr "мэдээлэл"
+
+msgctxt "#31040"
+msgid "Now playing"
+msgstr "Одоо тоглуулж байгаа"
+
+msgctxt "#31042"
+msgid "PLAYING"
+msgstr "ТОГЛУУЛЖ БАЙНА"
+
+msgctxt "#31043"
+msgid "PAUSED"
+msgstr "ТҮР ЗОГСООСОН"
+
+msgctxt "#31044"
+msgid "FAST FORWARD"
+msgstr "УРАГШ ГҮЙЛГЭХ"
+
+msgctxt "#31045"
+msgid "REWIND"
+msgstr "БУЦААХ"
+
+msgctxt "#31046"
+msgid "SEEKING"
+msgstr "ХАЙХ"
+
 msgctxt "#31049"
 msgid "End time"
 msgstr "Дуусах цаг"
 
+msgctxt "#31050"
+msgid "Sort: Ascending"
+msgstr "Өсөхөөр эрэмбэлэх"
+
+msgctxt "#31051"
+msgid "Sort: Descending"
+msgstr "Уруудахаар эрэмбэлэх"
+
 msgctxt "#31102"
 msgid "Background"
 msgstr "Арын хэсэг"
 
+msgctxt "#31111"
+msgid "Hide"
+msgstr "Нуух"
+
+msgctxt "#31112"
+msgid "Options"
+msgstr "Тохиргоонууд"
+
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "Саяхан нэмэгдсэн хуурцаг"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "Саяхан нэмэгдсэн видеонууд"
+
+msgctxt "#31128"
+msgid "Lyrics"
+msgstr "Дууны үгс"
+
 msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "Дөт зам"
 
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "Дууны үгсийн эх үүсвэр"
+
+msgctxt "#31206"
+msgid "Found"
+msgstr "Оллоо"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "Киноны мэдээлэл"
+
 msgctxt "#31327"
 msgid "Resolution"
 msgstr "Нягтаршил"
diff --git a/addons/skin.confluence/language/resource.language.nb_no/strings.po b/addons/skin.confluence/language/resource.language.nb_no/strings.po
index 82ce094..cf8b4a8 100644
--- a/addons/skin.confluence/language/resource.language.nb_no/strings.po
+++ b/addons/skin.confluence/language/resource.language.nb_no/strings.po
@@ -108,6 +108,10 @@ msgctxt "#31046"
 msgid "SEEKING"
 msgstr "SØKER"
 
+msgctxt "#31048"
+msgid "Visualisation presets"
+msgstr "Visualiseringsforvalg"
+
 msgctxt "#31049"
 msgid "End time"
 msgstr "Ferdig klokken"
@@ -144,6 +148,10 @@ msgctxt "#31060"
 msgid "This file is stacked, select the part you want to play from."
 msgstr "Denne filen er stablet, velg den delen du vil spille fra."
 
+msgctxt "#31061"
+msgid "Current selected"
+msgstr "Nåværende valgt"
+
 msgctxt "#31101"
 msgid "Home screen options"
 msgstr "Alternativer for hovedvindu"
@@ -152,10 +160,26 @@ msgctxt "#31102"
 msgid "Background"
 msgstr "Bakgrunn"
 
+msgctxt "#31103"
+msgid "Show \"Paused\" in picture slideshow"
+msgstr "Vis «Pause» under lysbildefremvisning"
+
+msgctxt "#31104"
+msgid "Play trailers in a window [COLOR=grey3](Video information dialogue only)[/COLOR]"
+msgstr "Spill trailere i et vindu[COLOR=grey3](Kun videoinformasjonsdialog)[/COLOR]"
+
 msgctxt "#31106"
 msgid "Miscellaneous options"
 msgstr "Øvrige alternativer"
 
+msgctxt "#31107"
+msgid "Hide flagging read from video filenames [COLOR=grey3](e.g. Blu-ray, HD-DVD)[/COLOR]"
+msgstr "Gjem «sett»-flagg fra videofilnavn [COLOR=grey3](Blu-ray, HD-DVD)[/COLOR]"
+
+msgctxt "#31108"
+msgid "Hide main menu buttons"
+msgstr "Skjul hovedmenyknapper"
+
 msgctxt "#31109"
 msgid "Enable custom background"
 msgstr "Aktiver egendefinert bakgrunn"
@@ -172,6 +196,30 @@ msgctxt "#31112"
 msgid "Options"
 msgstr "Alternativer"
 
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "Vis nylig tilføyde albumer"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "Vis nylig tilføyde videoer"
+
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "Programundermeny i hovedmeny"
+
+msgctxt "#31119"
+msgid "Hide background fanart"
+msgstr "Skjul fanart-bakgrunn"
+
+msgctxt "#31124"
+msgid "Show background \"Now playing\" video"
+msgstr "Vis videoer i bakgrunnen"
+
+msgctxt "#31125"
+msgid "Show background \"Now playing\" visualisation"
+msgstr "Vis «spilles nå» bakgrunnen i visualisering"
+
 msgctxt "#31126"
 msgid "Play TV theme songs in video library (TvTunes add-on)"
 msgstr "Spill av kjenningsmelodier i videobiblioteket (TvTunes-utvidelse)"
@@ -184,6 +232,26 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "Sangtekster"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "Gjem Fanart i fullskjermsvisualisering"
+
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "Sangtekst-utvidelse"
+
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "Hjemmeskjerm video-undermeny"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "Hjemmeskjerm musikk-undermeny"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "Hjemmeskjerm bilder-undermeny"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "Musikk OSD"
@@ -200,22 +268,94 @@ msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "Snarveier"
 
+msgctxt "#31203"
+msgid "Choose your song"
+msgstr "Velg din låt"
+
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "Sangtekstskilde"
+
 msgctxt "#31206"
 msgid "Found"
 msgstr "Funnet"
 
+msgctxt "#31207"
+msgid "Find more items"
+msgstr "Finn flere elementer"
+
+msgctxt "#31208"
+msgid "Upcoming episodes"
+msgstr "Kommende episoder"
+
+msgctxt "#31300"
+msgid "Current temperature"
+msgstr "Været nå"
+
+msgctxt "#31301"
+msgid "Last updated"
+msgstr "Sist oppdatert"
+
 msgctxt "#31303"
 msgid "Data provider"
 msgstr "Datatilbyder"
 
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "Skjul fanart"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "Filmdetaljer"
+
+msgctxt "#31309"
+msgid "Memory used:"
+msgstr "Benyttet minne:"
+
+msgctxt "#31310"
+msgid "Track number"
+msgstr "Spornummer"
+
 msgctxt "#31311"
 msgid "Fanart image[CR][CR]Unavailable[CR][CR] Click button to set"
 msgstr "Fanart-bilde[CR][CR]ikke tilgjengelig[CR][CR]Klikk på knappen for å oppgi"
 
+msgctxt "#31312"
+msgid "Current scraper"
+msgstr "Nåværende skraper"
+
+msgctxt "#31313"
+msgid "Choose a scraper"
+msgstr "Velg en skraper"
+
+msgctxt "#31314"
+msgid "Content scanning options"
+msgstr "Alternativer for innholdsskraper"
+
+msgctxt "#31317"
+msgid "Set fanart path"
+msgstr "Oppgi søkesti for fanart"
+
+msgctxt "#31319"
+msgid "Selected profile"
+msgstr "Valgt profil"
+
+msgctxt "#31320"
+msgid "Last logged in"
+msgstr "Sist innlogget"
+
+msgctxt "#31321"
+msgid "Karaoke song selector"
+msgstr "Låtvelger for karaoke"
+
 msgctxt "#31322"
 msgid "Aired"
 msgstr "Sendt"
 
+msgctxt "#31325"
+msgid "Playlist options"
+msgstr "Alternativer for spilleliste"
+
 msgctxt "#31326"
 msgid "Created"
 msgstr "Laget"
@@ -232,6 +372,14 @@ msgctxt "#31329"
 msgid "[B]Timer set![/B] [COLOR=grey2] - System auto shutdown in[/COLOR]"
 msgstr "[B]Tidsur fastsatt![/B] [COLOR=grey2] - Systemet avsluttes automatisk om[/COLOR]"
 
+msgctxt "#31330"
+msgid "Click button to play[CR][CR]movie trailer"
+msgstr "Klikk for å spille[CR][CR]filmtrailer"
+
+msgctxt "#31331"
+msgid "Album details"
+msgstr "Albumdetaljer"
+
 msgctxt "#31351"
 msgid "Pause"
 msgstr "Pause"
@@ -240,6 +388,10 @@ msgctxt "#31352"
 msgid "Stop"
 msgstr "Stopp"
 
+msgctxt "#31353"
+msgid "Fast forward"
+msgstr "Spol framover"
+
 msgctxt "#31354"
 msgid "Rewind"
 msgstr "Spol bakover"
@@ -248,6 +400,10 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "Filmmeny"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "Hent undertekster"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
 msgstr "Se som 2D"
@@ -264,6 +420,10 @@ msgctxt "#31390"
 msgid "Skin default"
 msgstr "Standard for skall"
 
+msgctxt "#31391"
+msgid "Skin default with no caps"
+msgstr "Skallstandard uten store bokstaver"
+
 msgctxt "#31392"
 msgid "Arial based"
 msgstr "Arial-basert"
@@ -292,6 +452,10 @@ msgctxt "#31410"
 msgid "[B]CONFIGURE SERVICE SETTINGS[/B][CR][CR]Setup control of Kodi via UPnP and HTTP · Configure file sharing[CR]Enable Zeroconf · Configure AirPlay"
 msgstr "[B]ENDRE DINE TJENESTEINNSTILLINGER[/B][CR][CR]Konfigurer kontroll av Kodi via UPnP og HTTP · Konfigurer fildeling[CR]Aktiver Zeroconf · Konfigurer AirPlay"
 
+msgctxt "#31411"
+msgid "First run help..."
+msgstr "Førstegangsintroduksjon..."
+
 msgctxt "#31413"
 msgid "Local subtitle available"
 msgstr "Lokal tekst tilgjengelig"
@@ -300,6 +464,10 @@ msgctxt "#31420"
 msgid "Login"
 msgstr "Logg inn"
 
+msgctxt "#31421"
+msgid "Select your Kodi user profile[CR]to login and continue"
+msgstr "Velg din Kodi brukerprofil[CR]for å logge inn og fortsette"
+
 msgctxt "#31422"
 msgid "Show or hide the login screen at startup."
 msgstr "Vis eller skjul innloggingsskjermen ved oppstart"
@@ -308,18 +476,66 @@ msgctxt "#31423"
 msgid "Select the profile that will be used at startup when the login screen is disabled."
 msgstr "Velg profil som vil bli brukt ved oppstart når innloggingsskjermen er deaktivert ."
 
+msgctxt "#31501"
+msgid "Scheduled time"
+msgstr "Planlagt tid"
+
 msgctxt "#31502"
 msgid "TV"
 msgstr "TV"
 
+msgctxt "#31503"
+msgid "Add group"
+msgstr "Legg til gruppe"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "Gi nytt navn til gruppe"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "Slett gruppe"
+
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "Ledige[CR]grupper"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "Kanalgruppe"
+
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "Tidsur fastsatt"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "Kanal instillinger"
+
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "36-timersvarsel"
+
+msgctxt "#31902"
+msgid "Hourly forecast"
+msgstr "Time for time"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "Helgevarsel"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "Langtidsvarsel"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "Værvarsel"
 
+msgctxt "#31908"
+msgid "Chance of precipitation"
+msgstr "Mulighet for nedbør"
+
 msgctxt "#31909"
 msgid "Fetching forecast info..."
 msgstr "Henter værvarsel..."
diff --git a/addons/skin.confluence/language/resource.language.pl_pl/strings.po b/addons/skin.confluence/language/resource.language.pl_pl/strings.po
index 6f680ba..2f984c5 100644
--- a/addons/skin.confluence/language/resource.language.pl_pl/strings.po
+++ b/addons/skin.confluence/language/resource.language.pl_pl/strings.po
@@ -118,7 +118,7 @@ msgstr "PRZEWIJANIE"
 
 msgctxt "#31048"
 msgid "Visualisation presets"
-msgstr "Szablony wizualizacji"
+msgstr "Wzorce wizualizacji"
 
 msgctxt "#31049"
 msgid "End time"
@@ -194,7 +194,7 @@ msgstr "Pokazuj niestandardowe tło"
 
 msgctxt "#31110"
 msgid "Background path:"
-msgstr "Ścieżka do folderu obrazów tła:"
+msgstr "Ścieżka do folderu z obrazami tła:"
 
 msgctxt "#31111"
 msgid "Hide"
@@ -222,11 +222,11 @@ msgstr "Nie używaj fototapet w roli tła"
 
 msgctxt "#31124"
 msgid "Show background \"Now playing\" video"
-msgstr "Wyświetlaj panel Teraz odtwarzane w tle interfejsu"
+msgstr "Wyświetlaj odtwarzane wideo w tle interfejsu"
 
 msgctxt "#31125"
 msgid "Show background \"Now playing\" visualisation"
-msgstr "Wyświetlaj wizualizację Teraz odtwarzane w tle interfejsu"
+msgstr "Wyświetlaj wizualizację muzyki w tle interfejsu"
 
 msgctxt "#31126"
 msgid "Play TV theme songs in video library (TvTunes add-on)"
@@ -342,7 +342,7 @@ msgstr "Opcje skanowania zawartości"
 
 msgctxt "#31317"
 msgid "Set fanart path"
-msgstr "Ustaw ścieżkę do folderu tapet"
+msgstr "Ustaw ścieżkę do folderu z tapetami"
 
 msgctxt "#31319"
 msgid "Selected profile"
diff --git a/addons/skin.confluence/language/resource.language.pt_pt/strings.po b/addons/skin.confluence/language/resource.language.pt_pt/strings.po
index 2573a7c..9bf68ce 100644
--- a/addons/skin.confluence/language/resource.language.pt_pt/strings.po
+++ b/addons/skin.confluence/language/resource.language.pt_pt/strings.po
@@ -80,6 +80,10 @@ msgctxt "#31031"
 msgid "Pic thumbs"
 msgstr "Miniaturas de imagens"
 
+msgctxt "#31032"
+msgid "Image wrap"
+msgstr "Envolver a imagem"
+
 msgctxt "#31033"
 msgid "Info"
 msgstr "Informações"
@@ -148,6 +152,10 @@ msgctxt "#31060"
 msgid "This file is stacked, select the part you want to play from."
 msgstr "Este ficheiro está dividido por partes. Escolha a parte que pretende reproduzir."
 
+msgctxt "#31061"
+msgid "Current selected"
+msgstr "Seleccionado actualmente"
+
 msgctxt "#31101"
 msgid "Home screen options"
 msgstr "Opções do ecrã inicial"
@@ -188,6 +196,26 @@ msgctxt "#31112"
 msgid "Options"
 msgstr "Opções"
 
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "Mostrar álbuns adicionados recentemente"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "Mostrar vídeos adicionados recentemente"
+
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "Submenu \"Programas\" da página inicial"
+
+msgctxt "#31124"
+msgid "Show background \"Now playing\" video"
+msgstr "Mostrar vídeo \"A reproduzir\" em fundo"
+
+msgctxt "#31125"
+msgid "Show background \"Now playing\" visualisation"
+msgstr "Mostrar visualização \"A reproduzir\" em fundo"
+
 msgctxt "#31126"
 msgid "Play TV theme songs in video library (TvTunes add-on)"
 msgstr "Tocar música de genérico na biblioteca de vídeo (Add-on TvTunes)"
@@ -200,6 +228,26 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "Letras"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "Ocultar o Fanart em ecrã completo"
+
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "Add-on de letras"
+
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "Submenu \"Vídeos\" da página inicial"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "Submenu \"Música\" da página inicial"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "Submenu \"Imagens\" da página inicial"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "Controlos de música"
@@ -216,22 +264,82 @@ msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "Atalhos"
 
+msgctxt "#31203"
+msgid "Choose your song"
+msgstr "Escolha a sua música"
+
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "Fonte das letras"
+
 msgctxt "#31206"
 msgid "Found"
 msgstr "Encontrado"
 
+msgctxt "#31207"
+msgid "Find more items"
+msgstr "Encontrar mais itens"
+
+msgctxt "#31208"
+msgid "Upcoming episodes"
+msgstr "Proximos episódios"
+
+msgctxt "#31300"
+msgid "Current temperature"
+msgstr "Temperatura actual"
+
+msgctxt "#31301"
+msgid "Last updated"
+msgstr "Última actualização"
+
 msgctxt "#31303"
 msgid "Data provider"
 msgstr "Fornecedor de dados"
 
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "Ocultar o Fanart"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "Detalhes do filme"
+
+msgctxt "#31309"
+msgid "Memory used:"
+msgstr "Memória utilizada:"
+
+msgctxt "#31310"
+msgid "Track number"
+msgstr "Número da faixa"
+
 msgctxt "#31311"
 msgid "Fanart image[CR][CR]Unavailable[CR][CR] Click button to set"
 msgstr "Imagem de Fanart[CR][CR]Indisponível[CR][CR] Clique no botão para seleccionar"
 
+msgctxt "#31314"
+msgid "Content scanning options"
+msgstr "Opções de pesquisa de conteúdos"
+
+msgctxt "#31319"
+msgid "Selected profile"
+msgstr "Perfil seleccionado"
+
+msgctxt "#31320"
+msgid "Last logged in"
+msgstr "Última vez ligado"
+
+msgctxt "#31321"
+msgid "Karaoke song selector"
+msgstr "Seleção de música para karaoke"
+
 msgctxt "#31322"
 msgid "Aired"
 msgstr "Transmitido a"
 
+msgctxt "#31325"
+msgid "Playlist options"
+msgstr "Opções da lista de reprodução"
+
 msgctxt "#31326"
 msgid "Created"
 msgstr "Criado a"
@@ -244,6 +352,10 @@ msgctxt "#31329"
 msgid "[B]Timer set![/B] [COLOR=grey2] - System auto shutdown in[/COLOR]"
 msgstr "[B]Temporizador activado![/B] [COLOR=grey2] - Sistema vai desligar-se em[/COLOR]"
 
+msgctxt "#31331"
+msgid "Album details"
+msgstr "Detalhes do álbum"
+
 msgctxt "#31351"
 msgid "Pause"
 msgstr "Pausar"
@@ -252,6 +364,10 @@ msgctxt "#31352"
 msgid "Stop"
 msgstr "Parar"
 
+msgctxt "#31353"
+msgid "Fast forward"
+msgstr "Avançar"
+
 msgctxt "#31354"
 msgid "Rewind"
 msgstr "Retroceder"
@@ -260,6 +376,10 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "Menu do filme"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "Transferir Legendas"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
 msgstr "Ver em 2D"
@@ -304,6 +424,10 @@ msgctxt "#31410"
 msgid "[B]CONFIGURE SERVICE SETTINGS[/B][CR][CR]Setup control of Kodi via UPnP and HTTP · Configure file sharing[CR]Enable Zeroconf · Configure AirPlay"
 msgstr "[B]CONFIGURAR DEFINIÇÕES DE SERVIÇOS[/B][CR][CR]Configurar controlo do Kodi via UPnP e HTTP · Configurar partilha de ficheiros[CR]Activar ZeroConf · Configurar AirPlay"
 
+msgctxt "#31411"
+msgid "First run help..."
+msgstr "Ajuda da primeira execução..."
+
 msgctxt "#31413"
 msgid "Local subtitle available"
 msgstr "Legenda local disponível"
@@ -312,6 +436,10 @@ msgctxt "#31420"
 msgid "Login"
 msgstr "Iniciar sessão"
 
+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 prosseguir"
+
 msgctxt "#31422"
 msgid "Show or hide the login screen at startup."
 msgstr "Mostrar ou ocultar o ecrã de início de sessão ao iniciar o Kodi"
@@ -324,10 +452,46 @@ msgctxt "#31502"
 msgid "TV"
 msgstr "TELEVISÃO"
 
+msgctxt "#31503"
+msgid "Add group"
+msgstr "Adicionar grupo"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "Renomear grupo"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "Remover grupo"
+
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "Grupos[CR] disponíveis"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "Grupo de canais"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "Opções do canal"
+
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "Previsão para 36 horas"
+
+msgctxt "#31902"
+msgid "Hourly forecast"
+msgstr "Previsão horária"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "Previsão semanal"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "Previsão diária"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "Previsão"
diff --git a/addons/skin.confluence/language/resource.language.sr_rs at latin/strings.po b/addons/skin.confluence/language/resource.language.sr_rs at latin/strings.po
index 07ff7f3..de3c7c2 100644
--- a/addons/skin.confluence/language/resource.language.sr_rs at latin/strings.po
+++ b/addons/skin.confluence/language/resource.language.sr_rs at latin/strings.po
@@ -16,10 +16,22 @@ msgstr ""
 "Language: sr_RS at latin\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
+msgctxt "#31000"
+msgid "Change your"
+msgstr "Promenite vaše"
+
+msgctxt "#31003"
+msgid "Power options"
+msgstr "Opcije napajanja"
+
 msgctxt "#31004"
 msgid "Working..."
 msgstr "Obrada..."
 
+msgctxt "#31005"
+msgid "Hide information"
+msgstr "Sakrij informacije"
+
 msgctxt "#31006"
 msgid "View options"
 msgstr "Prikaži opcije"
@@ -28,6 +40,10 @@ msgctxt "#31008"
 msgid "Full screen"
 msgstr "Ceo Ekran"
 
+msgctxt "#31009"
+msgid "Total duration"
+msgstr "Ukupno trajanje"
+
 msgctxt "#31022"
 msgid "Music - Files"
 msgstr "Muzika - Datoteke"
@@ -44,18 +60,42 @@ msgctxt "#31025"
 msgid "Items"
 msgstr "Stavki"
 
+msgctxt "#31026"
+msgid "Misc options"
+msgstr "Ostale opcije"
+
 msgctxt "#31027"
 msgid "Location"
 msgstr "Lokacija"
 
+msgctxt "#31028"
+msgid "Poster wrap"
+msgstr "Umotano u poster"
+
 msgctxt "#31029"
 msgid "Fanart"
-msgstr "Zan. slika"
+msgstr "Umetnost ljubitelja"
+
+msgctxt "#31031"
+msgid "Pic thumbs"
+msgstr "Sličice slika"
+
+msgctxt "#31032"
+msgid "Image wrap"
+msgstr "Umotano u sliku"
 
 msgctxt "#31033"
 msgid "Info"
 msgstr "Informacije"
 
+msgctxt "#31039"
+msgid "Actions"
+msgstr "Akcije"
+
+msgctxt "#31040"
+msgid "Now playing"
+msgstr "Sada pušteno"
+
 msgctxt "#31042"
 msgid "PLAYING"
 msgstr "REPRODUKOVANjE"
@@ -72,6 +112,18 @@ msgctxt "#31045"
 msgid "REWIND"
 msgstr "PREMOTAVANjE UNAZAD"
 
+msgctxt "#31046"
+msgid "SEEKING"
+msgstr "TRAŽENJE"
+
+msgctxt "#31048"
+msgid "Visualisation presets"
+msgstr "Unapred zadate vizualizacije"
+
+msgctxt "#31049"
+msgid "End time"
+msgstr "Vreme kraja"
+
 msgctxt "#31050"
 msgid "Sort: Ascending"
 msgstr "Složi: Uzlazno"
@@ -82,15 +134,15 @@ msgstr "Složi: Silazno"
 
 msgctxt "#31055"
 msgid "Open playlist"
-msgstr "Otvori rep. spisak"
+msgstr "Otvori listu za reprodukciju"
 
 msgctxt "#31056"
 msgid "Save playlist"
-msgstr "Sačuvaj rep. spisak"
+msgstr "Sačuvaj listu za reprodukciju"
 
 msgctxt "#31057"
 msgid "Close playlist"
-msgstr "Zatvori rep. spisak"
+msgstr "Zatvori listu za reprodukciju"
 
 msgctxt "#31058"
 msgid "System music files"
@@ -98,24 +150,40 @@ msgstr "Sistemske muzičke datoteke"
 
 msgctxt "#31059"
 msgid "Current playlist"
-msgstr "Trenutni rep. spisak"
+msgstr "Trenutna lista za reprodukciju"
 
 msgctxt "#31060"
 msgid "This file is stacked, select the part you want to play from."
-msgstr "Ova datoteka je složena, izaberite deo koji želite da reprodukujete."
+msgstr "Ova datoteka je složena, odaberite koji deo želite da reprodukujete iz nje."
+
+msgctxt "#31061"
+msgid "Current selected"
+msgstr "Trenutno odabrano"
 
 msgctxt "#31101"
 msgid "Home screen options"
-msgstr "Opcije početnog ekrana"
+msgstr "Opcije glavnog ekrana"
 
 msgctxt "#31102"
 msgid "Background"
 msgstr "Pozadina"
 
+msgctxt "#31103"
+msgid "Show \"Paused\" in picture slideshow"
+msgstr "Prikaži \"Pauzirano\" pri reprodukciji slajdova slika"
+
+msgctxt "#31104"
+msgid "Play trailers in a window [COLOR=grey3](Video information dialogue only)[/COLOR]"
+msgstr "Pusti najave u prozoru [COLOR=grey3](Samo dijalog podataka videa)[/COLOR]"
+
 msgctxt "#31106"
 msgid "Miscellaneous options"
 msgstr "Razne opcije"
 
+msgctxt "#31108"
+msgid "Hide main menu buttons"
+msgstr "Sakrij tastere glavnog menija"
+
 msgctxt "#31109"
 msgid "Enable custom background"
 msgstr "Omogući prilagođenu pozadinu"
@@ -132,14 +200,62 @@ msgctxt "#31112"
 msgid "Options"
 msgstr "Opcije"
 
+msgctxt "#31116"
+msgid "Show recently added albums"
+msgstr "Prikaži nedavno dodate albume"
+
+msgctxt "#31117"
+msgid "Show recently added videos"
+msgstr "Prikaži nedavno dodat video materijal"
+
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "Podmeni \"Programi\" na glavnom ekranu"
+
+msgctxt "#31119"
+msgid "Hide background fanart"
+msgstr "Sakrij pozadinsku sliku umetnosti ljubitelja"
+
+msgctxt "#31124"
+msgid "Show background \"Now playing\" video"
+msgstr "Prikaži u pozadini \"Sada Pušteni\" video"
+
+msgctxt "#31125"
+msgid "Show background \"Now playing\" visualisation"
+msgstr "Prikaži u pozadini \"Sada Puštenu\" vizualizaciju"
+
+msgctxt "#31126"
+msgid "Play TV theme songs in video library (TvTunes add-on)"
+msgstr "Reprodukuj TV tematske pesme u video biblioteci (TVTunes dodatni program)"
+
 msgctxt "#31127"
 msgid "TvTunes"
-msgstr "TvMelodije"
+msgstr "TvTunes"
 
 msgctxt "#31128"
 msgid "Lyrics"
 msgstr "Tekstovi pesama"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "Sakrij umetnost ljubitelja pri vizualizaciji preko celog ekrana"
+
+msgctxt "#31132"
+msgid "Lyrics add-on"
+msgstr "Dodatni program za tekstove pesama"
+
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "Podmeni \"Video materijal\" na glavnom ekranu"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "Podmeni \"Muzika\" na glavnom ekranu"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "Podmeni \"Slike\" na glavnom ekranu"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "Muzički OSD"
@@ -150,24 +266,100 @@ msgstr "Video OSD"
 
 msgctxt "#31142"
 msgid "Settings level"
-msgstr "Nivo postavki"
+msgstr "Nivo podešavanja"
 
 msgctxt "#31200"
 msgid "Shortcuts"
 msgstr "Prečice"
 
+msgctxt "#31203"
+msgid "Choose your song"
+msgstr "Izaberite vašu pesmu"
+
+msgctxt "#31205"
+msgid "Lyrics source"
+msgstr "Izvor tekstova pesama"
+
 msgctxt "#31206"
 msgid "Found"
 msgstr "Pronađeno"
 
+msgctxt "#31207"
+msgid "Find more items"
+msgstr "Potraži još stavki"
+
+msgctxt "#31208"
+msgid "Upcoming episodes"
+msgstr "Predstojeće epizode"
+
+msgctxt "#31300"
+msgid "Current temperature"
+msgstr "Trenutna temperatura"
+
+msgctxt "#31301"
+msgid "Last updated"
+msgstr "Poslednji put ažurirano"
+
+msgctxt "#31303"
+msgid "Data provider"
+msgstr "Provajder podataka"
+
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "Sakrij umetnost ljubitelja"
+
+msgctxt "#31308"
+msgid "Movie details"
+msgstr "Detalji filma"
+
+msgctxt "#31309"
+msgid "Memory used:"
+msgstr "Iskorišćenost memorije:"
+
+msgctxt "#31310"
+msgid "Track number"
+msgstr "Broj numere"
+
 msgctxt "#31311"
 msgid "Fanart image[CR][CR]Unavailable[CR][CR] Click button to set"
-msgstr "Zanimljiva slika[CR]nije dodeljena.[CR][CR]Kliknite na dugme da[CR]biste je dodelili."
+msgstr "Umetnost ljubitelja[CR][CR]Nije dostupna.[CR][CR]Kliknite na tater da biste je postavili."
+
+msgctxt "#31312"
+msgid "Current scraper"
+msgstr "Trenutni dobavljač"
+
+msgctxt "#31313"
+msgid "Choose a scraper"
+msgstr "Izaberite dobavljača"
+
+msgctxt "#31314"
+msgid "Content scanning options"
+msgstr "Opcije analiziranja sadržaja"
+
+msgctxt "#31317"
+msgid "Set fanart path"
+msgstr "Postavite putanju umetnosti ljubitelja"
+
+msgctxt "#31319"
+msgid "Selected profile"
+msgstr "Odabrani profil"
+
+msgctxt "#31320"
+msgid "Last logged in"
+msgstr "Poslednja prijava"
+
+msgctxt "#31321"
+msgid "Karaoke song selector"
+msgstr "Birač karaoke pesme"
 
 msgctxt "#31322"
 msgid "Aired"
 msgstr "Emitovano"
 
+msgctxt "#31325"
+msgid "Playlist options"
+msgstr "Opcije liste za reprodukciju"
+
 msgctxt "#31326"
 msgid "Created"
 msgstr "Napravljeno"
@@ -176,9 +368,21 @@ msgctxt "#31327"
 msgid "Resolution"
 msgstr "Rezolucija"
 
+msgctxt "#31328"
+msgid "Recently added"
+msgstr "Nedavno dodato"
+
 msgctxt "#31329"
 msgid "[B]Timer set![/B] [COLOR=grey2] - System auto shutdown in[/COLOR]"
-msgstr "[B]Odbrojavanje je postavljeno![/B] [COLOR=grey2] - Sistem će se isključiti za[/COLOR]"
+msgstr "[B]Tajmer je postavljen![/B] [COLOR=grey2] - Sistem će se isključiti za[/COLOR]"
+
+msgctxt "#31330"
+msgid "Click button to play[CR][CR]movie trailer"
+msgstr "Kliknite na taster za reprodukciju[CR][CR]najave filma"
+
+msgctxt "#31331"
+msgid "Album details"
+msgstr "Detalji albuma"
 
 msgctxt "#31351"
 msgid "Pause"
@@ -188,6 +392,10 @@ msgctxt "#31352"
 msgid "Stop"
 msgstr "Zaustavi"
 
+msgctxt "#31353"
+msgid "Fast forward"
+msgstr "Premotaj unapred"
+
 msgctxt "#31354"
 msgid "Rewind"
 msgstr "Premotaj unazad"
@@ -196,10 +404,18 @@ msgctxt "#31355"
 msgid "Movie menu"
 msgstr "Filmski meni"
 
+msgctxt "#31356"
+msgid "Download subtitles"
+msgstr "Preuzmi titlove"
+
 msgctxt "#31360"
 msgid "Watch as 2D"
 msgstr "Gledaj kao 2D"
 
+msgctxt "#31361"
+msgid "Change mode"
+msgstr "Promeni režim"
+
 msgctxt "#31362"
 msgid "Enabled"
 msgstr "Omogućeno"
@@ -208,29 +424,57 @@ msgctxt "#31390"
 msgid "Skin default"
 msgstr "Podrazumevana maska"
 
+msgctxt "#31391"
+msgid "Skin default with no caps"
+msgstr "Podrazumevana maska bez velikih slova"
+
 msgctxt "#31392"
 msgid "Arial based"
 msgstr "Zasnovano na Arialu"
 
 msgctxt "#31400"
 msgid "[B]CONFIGURE APPEARANCE SETTINGS[/B][CR][CR]Change the skin · Set language and region · Change file listing options[CR]Set up a screensaver"
-msgstr "[B]KONFIGURISANjE POSTAVKI PRIKAZA[/B][CR][CR]Promenite masku · Izaberite jezik i oblast gde živite[CR]Promenite opcije izlistavanja datoteka · Izaberite čuvara ekrana"
+msgstr "[B]PODESITE PODEŠAVANJA PRIKAZA[/B][CR][CR]Promenite masku · Postavite jezik i regiju - Promenite opcije izlistavanja datoteka[CR]Postavite čuvara ekrana"
 
 msgctxt "#31401"
 msgid "[B]CONFIGURE VIDEO SETTINGS[/B][CR][CR]Manage your video library · Set video playback options · Change video listing options[CR]Set subtitle fonts"
-msgstr "[B]KONFIGURISANjE POSTAVKI FILMOVA[/B][CR][CR]Upravljajte vašom bibliotekom filmova · Postavite opcije reprodukcije filmova[CR]Promenite opcije izlistavanja filmova · Postavite izgled slova u titlovima"
+msgstr "[B]PODESITE VIDEO PODEŠAVANJA[/B][CR][CR]Upravljajte vašom video bibliotekom · Postavite opcije video reprodukcije - Promenite opcije izlistavanja filmova[CR]Postavite slova titlova"
 
 msgctxt "#31402"
 msgid "[B]CONFIGURE MUSIC SETTINGS[/B][CR][CR]Manage your music library · Set music playback options · Change music listing options[CR]Setup song submission · Set karaoke options"
-msgstr "[B]KONFIGURISANjE POSTAVKI MUZIKE[/B][CR][CR]Upravljajte vašom bibliotekom muzičkih numera · Postavite opcije reprod. muzike[CR]Promenite opcije izlistavanja muzike · Postavite slanje pesama[CR]Postavite karaoke opcije"
+msgstr "[B]PODESITE MUZIČKA PODEŠAVANJA[/B][CR][CR]Upravljajte vašom muzičkom bibliotekom · Postavite opcije reprodukcije muzike - Promenite opcije izlistavanja muzike[CR]Postavite slanje pesama - Postavite karaoke opcije"
+
+msgctxt "#31403"
+msgid "[B]CONFIGURE PICTURE SETTINGS[/B][CR][CR]Set picture listing options · Configure slideshow"
+msgstr "[B]PODESITE PODEŠAVANJA SLIKA[/B][CR][CR]Postavite opcije izlistavanja slika · Podesite reprodukciju slajdova"
+
+msgctxt "#31404"
+msgid "[B]CONFIGURE WEATHER SETTINGS[/B][CR][CR]Set various cities to collect weather information"
+msgstr "[B]PODESITE PODEŠAVANJA VREMENSKE PROGNOZE[/B][CR][CR]Postavite različite gradove za prikupljanje informacija o vremenskim prilikama"
 
 msgctxt "#31406"
 msgid "[B]CONFIGURE SYSTEM SETTINGS[/B][CR][CR]Setup and calibrate displays · Configure audio output · Setup remote controls[CR]Set power saving options · Enable debugging · Setup master lock"
-msgstr "[B]KONFIGURISANjE POSTAVKI SISTEMA[/B][CR][CR]Podesite i kalibrišite ekrane · Konfigurišite zvučni izlaz[CR]Podesite daljinsko upravljanje · Postavite opcije štednje energije[CR]Omogućite evidenciju grešaka · Podesite glavnu lozinku"
+msgstr "[B]PODESITE PODEŠAVANJA SISTEMA[/B][CR][CR]Podesite i kalibrišite ekrane · Podesite zvučni izlaz - Podesite daljinsko upravljanje[CR]Postavite opcije uštede energije - Omogućite evidenciju grešaka · Podesite glavnu lozinku"
+
+msgctxt "#31408"
+msgid "[B]CONFIGURE ADD-ONS[/B][CR][CR]Manage your installed add-ons · Browse for and install add-ons from kodi.tv[CR]Modify add-on settings"
+msgstr "[B]PODESITE DODATNE PROGRAME[/B][CR][CR]Upravljajte vašim instaliranim dodatnim programima · Potražite i instalirajte dodatne programe sa kodi.tv[CR]Podesite podešavanja dodatnih programa"
 
 msgctxt "#31409"
 msgid "[B]CONFIGURE TV SETTINGS[/B][CR][CR]Change full screen info · Manage EPG data settings"
-msgstr "[B]KONFIGURISANJE TV POSTAVKI[/B][CR][CR]Promenite informacije cielog ekrana · Upravljajte postavkama podataka elektronskog programskog vodiča (EPG) "
+msgstr "[B]PODESITE TV PODEŠAVANJA[/B][CR][CR]Promenite informacije celog ekrana · Upravljajte podešavanjima EPG podataka "
+
+msgctxt "#31410"
+msgid "[B]CONFIGURE SERVICE SETTINGS[/B][CR][CR]Setup control of Kodi via UPnP and HTTP · Configure file sharing[CR]Enable Zeroconf · Configure AirPlay"
+msgstr "[B]PODESITE PODEŠAVANJA SERVISA[/B][CR][CR]Podesite kontrolu Kodija putem UPnP i HTTP · Podesite daljenje datoteka[CR]Omogućite Zeroconf - Podesite AirPlay"
+
+msgctxt "#31411"
+msgid "First run help..."
+msgstr "Pomoć kod prvog pokretanja...."
+
+msgctxt "#31412"
+msgid "This tab signifies that there is a menu off to the side of this window that contains extra options for this section. To access the menu, navigate to the left with your remote control or keyboard or place your mouse pointer over the tab. [CR][CR]Click \"OK\" to close this dialogue. It will not appear again."
+msgstr "Ovaj tab pojazuje da postoji meni sa strane ovog prozora koji sadrži dodatne opcije za ovaj odeljak. Da bi pristupili ovom meniju, idite na levu stranu vašim daljinskim upravljačem ili tastaturom ili postavite pointer miša preko taba. [CR][CR]Kliknite na \"U redu\" da bi zatvorili ovaj dijalog. Neće se pojaviti ponovo."
 
 msgctxt "#31413"
 msgid "Local subtitle available"
@@ -240,6 +484,10 @@ msgctxt "#31420"
 msgid "Login"
 msgstr "Prijava"
 
+msgctxt "#31421"
+msgid "Select your Kodi user profile[CR]to login and continue"
+msgstr "Izaberite vaš Kodi korisnički profil[CR]za prijavu, a potom nastavite dalje"
+
 msgctxt "#31422"
 msgid "Show or hide the login screen at startup."
 msgstr "Prikaži ili sakrij ekran za prijavu pri pokretanju"
@@ -248,29 +496,77 @@ msgctxt "#31423"
 msgid "Select the profile that will be used at startup when the login screen is disabled."
 msgstr "Izaberite profil koji će se koristiti prilikom pokretanja kada je ekran za prijavu onemogućen"
 
+msgctxt "#31501"
+msgid "Scheduled time"
+msgstr "Zakazano vreme"
+
 msgctxt "#31502"
 msgid "TV"
 msgstr "TV"
 
+msgctxt "#31503"
+msgid "Add group"
+msgstr "Dodaj grupu"
+
+msgctxt "#31504"
+msgid "Rename group"
+msgstr "Preimenuj grupu"
+
+msgctxt "#31505"
+msgid "Delete group"
+msgstr "Izbriši grupu"
+
 msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "Dostupne[CR]grupe"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "Grupa kanala"
+
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "Tajmer podešen"
+
+msgctxt "#31511"
+msgid "Channel options"
+msgstr "Opcije kanala"
+
+msgctxt "#31901"
+msgid "36-hour forecast"
+msgstr "Prognoza za 36 časova"
+
+msgctxt "#31902"
+msgid "Hourly forecast"
+msgstr "Časovna prognoza"
+
+msgctxt "#31903"
+msgid "Weekend forecast"
+msgstr "Prognoza za vikend"
+
+msgctxt "#31904"
+msgid "Daily forecast"
+msgstr "Dnevna prognoza"
+
 msgctxt "#31905"
 msgid "Forecast"
 msgstr "Prognoza"
 
+msgctxt "#31908"
+msgid "Chance of precipitation"
+msgstr "Moguće padavine"
+
 msgctxt "#31909"
 msgid "Fetching forecast info..."
-msgstr "Dobavljanje informacija o prognozi..."
+msgstr "Preuzimanje podataka prognoze..."
 
 msgctxt "#31910"
 msgid "Maps"
-msgstr "Karta"
+msgstr "Mape"
 
 msgctxt "#31950"
 msgid "WEATHER"
-msgstr "VREME"
+msgstr "VREMENSKA PROGNOZA"
 
 msgctxt "#31951"
 msgid "PICTURES"
@@ -282,7 +578,7 @@ msgstr "TV"
 
 msgctxt "#31953"
 msgid "VIDEOS"
-msgstr "VIDEO"
+msgstr "VIDEO MATERIJAL"
 
 msgctxt "#31954"
 msgid "MOVIES"
diff --git a/addons/skin.confluence/language/resource.language.sv_se/strings.po b/addons/skin.confluence/language/resource.language.sv_se/strings.po
index 4038659..f22cdfb 100644
--- a/addons/skin.confluence/language/resource.language.sv_se/strings.po
+++ b/addons/skin.confluence/language/resource.language.sv_se/strings.po
@@ -68,10 +68,22 @@ msgctxt "#31027"
 msgid "Location"
 msgstr "Plats"
 
+msgctxt "#31028"
+msgid "Poster wrap"
+msgstr "Omslagssvep"
+
 msgctxt "#31029"
 msgid "Fanart"
 msgstr "Fanart"
 
+msgctxt "#31031"
+msgid "Pic thumbs"
+msgstr "Bildminiatyrer"
+
+msgctxt "#31032"
+msgid "Image wrap"
+msgstr "Bildsvep"
+
 msgctxt "#31033"
 msgid "Info"
 msgstr "Info"
@@ -104,6 +116,10 @@ msgctxt "#31046"
 msgid "SEEKING"
 msgstr "SÖKER"
 
+msgctxt "#31048"
+msgid "Visualisation presets"
+msgstr "Visualiseringsval"
+
 msgctxt "#31049"
 msgid "End time"
 msgstr "Sluttid"
@@ -164,6 +180,10 @@ msgctxt "#31106"
 msgid "Miscellaneous options"
 msgstr "Övriga alternativ"
 
+msgctxt "#31107"
+msgid "Hide flagging read from video filenames [COLOR=grey3](e.g. Blu-ray, HD-DVD)[/COLOR]"
+msgstr "Dölj flaggläsning från videofilnamn [COLOR=grey3](Blu-ray, HD-DVD)[/COLOR]"
+
 msgctxt "#31108"
 msgid "Hide main menu buttons"
 msgstr "Dölj huvudmenyknappar"
@@ -192,6 +212,10 @@ msgctxt "#31117"
 msgid "Show recently added videos"
 msgstr "Visa nyligen tillagda videos"
 
+msgctxt "#31118"
+msgid "Home page programs submenu"
+msgstr "Hemskärmens \"program\"-undermeny"
+
 msgctxt "#31119"
 msgid "Hide background fanart"
 msgstr "Dölj bakgrundsfanart"
@@ -216,10 +240,26 @@ msgctxt "#31128"
 msgid "Lyrics"
 msgstr "Sångtexter"
 
+msgctxt "#31129"
+msgid "Hide fanart in full screen visualisation"
+msgstr "Dölj fanart i fullskärmsvisualisering"
+
 msgctxt "#31132"
 msgid "Lyrics add-on"
 msgstr "Sångtextstillägg"
 
+msgctxt "#31134"
+msgid "Home page \"Videos\" submenu"
+msgstr "Hemskärmens \"video\"-undermeny"
+
+msgctxt "#31135"
+msgid "Home page \"Music\" submenu"
+msgstr "Hemskärmens \"musik\"-undermeny"
+
+msgctxt "#31136"
+msgid "Home page \"Pictures\" submenu"
+msgstr "Hemskärmens \"bilder\"-undermeny"
+
 msgctxt "#31140"
 msgid "Music OSD"
 msgstr "Musik-OSD"
@@ -268,6 +308,10 @@ msgctxt "#31303"
 msgid "Data provider"
 msgstr "Dataleverantör"
 
+msgctxt "#31307"
+msgid "Hide fanart"
+msgstr "Dölj fanart"
+
 msgctxt "#31308"
 msgid "Movie details"
 msgstr "Filmdetaljer"
@@ -384,6 +428,10 @@ msgctxt "#31390"
 msgid "Skin default"
 msgstr "Skalets standard"
 
+msgctxt "#31391"
+msgid "Skin default with no caps"
+msgstr "Skalets standard utan VERSALER"
+
 msgctxt "#31392"
 msgid "Arial based"
 msgstr "Arialbaserad"
@@ -400,10 +448,22 @@ msgctxt "#31402"
 msgid "[B]CONFIGURE MUSIC SETTINGS[/B][CR][CR]Manage your music library · Set music playback options · Change music listing options[CR]Setup song submission · Set karaoke options"
 msgstr "[B]KONFIGURERA MUSIKINSTÄLLNINGAR[/B][CR][CR]Hantera ditt musikbibliotek · Ange musikuppspelningsalternativ[CR]Ändra musiklistningsalternativ · Ange låtinskickning · Ange karaoke-alternativ"
 
+msgctxt "#31403"
+msgid "[B]CONFIGURE PICTURE SETTINGS[/B][CR][CR]Set picture listing options · Configure slideshow"
+msgstr "[B]KONFIGURERA BILDINSTÄLLNINGAR[/B][CR][CR]Ange bildlistningsalternativ · Justera bildspel"
+
+msgctxt "#31404"
+msgid "[B]CONFIGURE WEATHER SETTINGS[/B][CR][CR]Set various cities to collect weather information"
+msgstr "[B]KONFIGURERA VÄDERINSTÄLLNINGAR[/B][CR][CR]Ange tre städer för insamling av väderinformation"
+
 msgctxt "#31406"
 msgid "[B]CONFIGURE SYSTEM SETTINGS[/B][CR][CR]Setup and calibrate displays · Configure audio output · Setup remote controls[CR]Set power saving options · Enable debugging · Setup master lock"
 msgstr "[B]KONFIGURERA SYSTEMINSTÄLLNINGAR[/B][CR][CR]Ange och kalibrera bildskärmar · Konfigurera ljudutgång · Ställa in fjärrkontroller[CR]Ange energisparalternativ · Aktivera debuggningen · Konfigurera huvudkod och lås"
 
+msgctxt "#31408"
+msgid "[B]CONFIGURE ADD-ONS[/B][CR][CR]Manage your installed add-ons · Browse for and install add-ons from kodi.tv[CR]Modify add-on settings"
+msgstr "[B]KONFIGURERA TILLÄGG[/B][CR][CR]Hantera installerade tillägg · Visa och installera tillägg från kodi.tv[CR]Ändra inställningar för tillägg"
+
 msgctxt "#31409"
 msgid "[B]CONFIGURE TV SETTINGS[/B][CR][CR]Change full screen info · Manage EPG data settings"
 msgstr "[B]KONFIGURERA TV-INSTÄLLNINGAR[/B][CR][CR]Ändra fullskärmslägesinformation · Hantera EPG-datainställningar"
@@ -416,6 +476,10 @@ msgctxt "#31411"
 msgid "First run help..."
 msgstr "Förstagångshjälp"
 
+msgctxt "#31412"
+msgid "This tab signifies that there is a menu off to the side of this window that contains extra options for this section. To access the menu, navigate to the left with your remote control or keyboard or place your mouse pointer over the tab. [CR][CR]Click \"OK\" to close this dialogue. It will not appear again."
+msgstr "Denna flik visar att det finns en meny till sidan om detta fönster som innehåller extra inställningar för denna sektion. För att nå menyn, navigera till vänster med din fjärrkontroll eller tangentbord eller placera din mus ovanför fliken. [CR][CR]Klicka på \"OK\" för att stänga denna dialogruta. Den kommer inte att visas igen."
+
 msgctxt "#31413"
 msgid "Local subtitle available"
 msgstr "Lokal undertext tillgänglig"
@@ -460,6 +524,14 @@ msgctxt "#31506"
 msgid "Available[CR]Groups"
 msgstr "Tillgängliga[CR]grupper"
 
+msgctxt "#31509"
+msgid "Channel group"
+msgstr "Kanalgrupp"
+
+msgctxt "#31510"
+msgid "Timer set"
+msgstr "Timer satt"
+
 msgctxt "#31511"
 msgid "Channel options"
 msgstr "Kanalalternativ"
@@ -484,6 +556,10 @@ msgctxt "#31905"
 msgid "Forecast"
 msgstr "Prognos"
 
+msgctxt "#31908"
+msgid "Chance of precipitation"
+msgstr "Chans för nederbörd"
+
 msgctxt "#31909"
 msgid "Fetching forecast info..."
 msgstr "Hämtar prognosinfo..."
diff --git a/addons/visualization.dxspectrum/addon.xml b/addons/visualization.dxspectrum/addon.xml
index 28b8015..c257f1e 100644
--- a/addons/visualization.dxspectrum/addon.xml
+++ b/addons/visualization.dxspectrum/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="visualization.dxspectrum"
-  version="1.0.29"
+  version="1.0.30"
   name="DirectX Spectrum"
   provider-name="Team-Kodi">
   <extension
diff --git a/addons/visualization.dxspectrum/resources/language/resource.language.sr_rs at latin/strings.po b/addons/visualization.dxspectrum/resources/language/resource.language.sr_rs at latin/strings.po
index a3602b7..0b6458b 100644
--- a/addons/visualization.dxspectrum/resources/language/resource.language.sr_rs at latin/strings.po
+++ b/addons/visualization.dxspectrum/resources/language/resource.language.sr_rs at latin/strings.po
@@ -20,6 +20,10 @@ msgctxt "#30000"
 msgid "Mode"
 msgstr "Režim"
 
+msgctxt "#30005"
+msgid "Small"
+msgstr "Malo"
+
 msgctxt "#30006"
 msgid "Default"
 msgstr "Podrazumevano"
diff --git a/addons/visualization.fishbmc/resources/language/resource.language.pl_pl/strings.po b/addons/visualization.fishbmc/resources/language/resource.language.pl_pl/strings.po
index 07d7712..15348e8 100644
--- a/addons/visualization.fishbmc/resources/language/resource.language.pl_pl/strings.po
+++ b/addons/visualization.fishbmc/resources/language/resource.language.pl_pl/strings.po
@@ -46,7 +46,7 @@ msgstr "Szybkość [pomija niektóre klatki]"
 
 msgctxt "#30007"
 msgid "Very Low"
-msgstr "Bardzo niski"
+msgstr "Bardzo niskie"
 
 msgctxt "#30008"
 msgid "Low"
diff --git a/addons/visualization.glspectrum/addon.xml b/addons/visualization.glspectrum/addon.xml
index 8aa161d..7dc1ab9 100644
--- a/addons/visualization.glspectrum/addon.xml
+++ b/addons/visualization.glspectrum/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="visualization.glspectrum"
-  version="1.0.29"
+  version="1.0.30"
   name="OpenGL Spectrum"
   provider-name="Team-Kodi">
   <extension
diff --git a/addons/visualization.glspectrum/resources/language/resource.language.sr_rs at latin/strings.po b/addons/visualization.glspectrum/resources/language/resource.language.sr_rs at latin/strings.po
index 1f5e315..285e754 100644
--- a/addons/visualization.glspectrum/resources/language/resource.language.sr_rs at latin/strings.po
+++ b/addons/visualization.glspectrum/resources/language/resource.language.sr_rs at latin/strings.po
@@ -20,6 +20,10 @@ msgctxt "#30000"
 msgid "Mode"
 msgstr "Režim"
 
+msgctxt "#30005"
+msgid "Small"
+msgstr "Malo"
+
 msgctxt "#30006"
 msgid "Default"
 msgstr "Podrazumevano"
diff --git a/addons/visualization.milkdrop/addon.xml b/addons/visualization.milkdrop/addon.xml
index 54f6aa9..f615a58 100644
--- a/addons/visualization.milkdrop/addon.xml
+++ b/addons/visualization.milkdrop/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="visualization.milkdrop"
-  version="1.0.27"
+  version="1.0.28"
   name="MilkDrop"
   provider-name="Team-Kodi">
   <extension
@@ -26,6 +26,7 @@
     <summary lang="es_ES">MilkDrop te lleva volando a través de las ondas que estás escuchando</summary>
     <summary lang="es_MX">MilkDrop the lleva volando a través de las ondas de sonido que estás escuchando</summary>
     <summary lang="et_EE">MilkDrop viib sind lennates läbi kullatavate helilainete</summary>
+    <summary lang="fa_IR">MilkDrop شما را در صدایی که می شنوید به پرواز در می آورد</summary>
     <summary lang="fi_FI">MilkDrop lennättää sinut ääniaaltojen läpi</summary>
     <summary lang="fr_CA">MilkDrop vous fait voler au travers des ondes sonores que vous entendez</summary>
     <summary lang="fr_FR">MilkDrop vous fait voyager dans les ondes sonores de votre musique</summary>
@@ -96,7 +97,7 @@
     <description lang="ms_MY">MilkDrop pada asalnya adalah pemalam pengvisual untuk pemain muzik Winamp. Ketika anda mendengar muzik, MilkDrop memaparkan gelombang bunyi yang dengari dan guna pengesanan rentak untuk memicu kesan psikedelik tak terkira banyaknya, dan menghasilkan perjalanan visual yang sempurna menerusi bunyi.</description>
     <description lang="nb_NO">MilkDrop var originalt et visualiseringstillegg til musikkavspilleren Winamp. Mens du lytter til musikken din, tar MilkDrop deg med på en reise gjennom de faktiske lydbølgene du hører. Visualiseringen oppdager takten i musikken og bruker denne for å skape en rik, visuell ferd gjennom utallige, psykedeliske effekter.</description>
     <description lang="nl_NL">Milkdrop was oorspronkelijk een muziekvisualisatieplug-in voor de Winamp-muziekspeler. Terwijl u uw muziek beluistert vliegt Milkdrop u door de soundwaves die u op dat moment hoort. Op basis van de beat produceert het een veelvoud aan psychedelische effecten.</description>
-    <description lang="pl_PL">MilkDrop jest wizualizacją pochodzącą z odtwarzacza Winamp. W czasie słuchania muzyki, MilkDrop zabiera użytkownika w niesamowity lot pomiędzy aktualnie odtwarzanymi falami dźwiękowymi, używając detekcji beatu, która synchronizuje efekty wizualne z muzyką.</description>
+    <description lang="pl_PL">MilkDrop jest wizualizacją pochodzącą z odtwarzacza Winamp. W czasie słuchania muzyki, MilkDrop zabiera użytkownika w niesamowity lot pomiędzy aktualnie odtwarzanymi falami dźwiękowymi, używając detekcji rytmu, która synchronizuje efekty wizualne z muzyką.</description>
     <description lang="pt_BR">MilkDrop era originalmente uma visualização do reprodutor de música Winamp. Ao ouvir a sua música, o MilkDrop leva-o a voar nas ondas sonoras que está a ouvir, usando detecção de batida para desencadear uma miríade de efeitos psicodélicos. Cria, assim, uma viagem visual inesquecível pelo som.</description>
     <description lang="pt_PT">Originalmente, o MilkDrop era uma visualização do leitor de música Winamp. Ao ouvir a sua música, o MilkDrop leva-o a voar pelas ondas sonoras que está a ouvir, detectando o ritmo da música e desencadeando uma variedade de efeitos psicadélicos. Cria, assim, uma viagem inesquecível pelo som.</description>
     <description lang="ro_RO">MilkDrop a fost original un „modul” de vizualizare pentru lectorul de muzică Winamp. În timp ce ascultați muzica, MilkDrop vă face să zburați printre undele audio actuale pe care le auziți și folosește detecția bătăii pentru a activa miriada de efecte psihedelice, creând o călătorie vizuală bogată printre sunete.</description>
diff --git a/addons/visualization.milkdrop/resources/language/resource.language.pl_pl/strings.po b/addons/visualization.milkdrop/resources/language/resource.language.pl_pl/strings.po
index 8c73e58..59a5c8b 100644
--- a/addons/visualization.milkdrop/resources/language/resource.language.pl_pl/strings.po
+++ b/addons/visualization.milkdrop/resources/language/resource.language.pl_pl/strings.po
@@ -18,11 +18,11 @@ msgstr ""
 
 msgctxt "#30000"
 msgid "Automatic Blend Time"
-msgstr "Interwał automatycznego mieszania"
+msgstr "Częstotliwość mieszania"
 
 msgctxt "#30001"
 msgid "Time Between Presets"
-msgstr "Interwał zdefiniowanych ustawień"
+msgstr "Częstotliwość zmiany wzorców"
 
 msgctxt "#30002"
 msgid "Additional Random Time"
@@ -54,27 +54,27 @@ msgstr "Aktywuj stereofoniczny tryb 3D"
 
 msgctxt "#30009"
 msgid "Preset Pack"
-msgstr "Pakiet zdefiniowanych ustawień"
+msgstr "Pakiet wzorców"
 
 msgctxt "#30010"
 msgid "User Preset Folder        "
-msgstr "Folder ustawień użytkownika"
+msgstr "Folder wzorców użytkownika"
 
 msgctxt "#30011"
 msgid "Preset Shuffle Mode"
-msgstr "Tryb losowych ustawień"
+msgstr "Tryb losowych wzorców"
 
 msgctxt "#30020"
 msgid "WA51 Presets"
-msgstr "Ustawienia WA51"
+msgstr "Wzorce WA51"
 
 msgctxt "#30021"
 msgid "Winamp Presets"
-msgstr "Ustawienia Winampa"
+msgstr "Wzorce Winampa"
 
 msgctxt "#30022"
 msgid "User Defined Preset Folder"
-msgstr "Folder zdefiniowanych ustawień użytkownika"
+msgstr "Folder wzorców użytkownika"
 
 msgctxt "#30050"
 msgid "%2.0f secs"
diff --git a/addons/visualization.projectm/addon.xml b/addons/visualization.projectm/addon.xml
index 1daa380..e3d7e02 100644
--- a/addons/visualization.projectm/addon.xml
+++ b/addons/visualization.projectm/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="visualization.projectm"
-  version="1.0.29"
+  version="1.0.30"
   name="projectM"
   provider-name="Team-Kodi">
   <extension
@@ -107,7 +107,7 @@
     <description lang="ms_MY">projectM ialah pengvisual muzik yang hebat. Ia yang terbaik dalam dunia Unix. Kehebatan projectM hasil dari kerja istiqamah komuniti. Pengguna seperti anda boleh mencipta praset yang menghubungkan muzik dengan visual yang hebat. Cubalah!
Pengvisualan projectM merupakan perlaksanaan semula LGPL Milkdrop dibawah OpenGL.
Semua projectM memerlukan kad video dengan pemecutan 3D dan tidak lupa muzik kegemaran anda.</description>
     <description lang="nb_NO">projectM er en flott visualisering. Det finnes ikke finere i Unix-verdenen. projectM er blitt så bra takket være et hardtarbeidende fellesskap. Du kan opprette forhåndsinnstillinger som gir utrolige visualiseringer. Prøv det!
projectM visualiseringen benytter OpenGL og er en realisering av Milkdrop under en åpen programvarelisens.
Alt projectM behøver er et 3D-grafikkkort og din favorittmusikk.</description>
     <description lang="nl_NL">projectM is een geweldige muziekvisualisatie. Er bestaat niets beters in de UNIX-wereld. Het success van projectM is het resultaat van het harde werk van de Kodi-gemeenschap. U kunt hun eigen presets instellen die muziek linken aan verbluffende visualisaties. Probeer het uit!
projectM-visualisatie is beschikbaar onder de LGPL-licentie en is een herimplementatie van Milkdrop (OpenGL). Alles wat projectM vereist is een videokaart met 3D-versnelling en jouw favoriete muziek.</description>
-    <description lang="pl_PL">projectM to rewelacyjna wizualizacja muzyki. Nie ma nic lepszego w świecie Unixa. Wspaniałość projectM jest efektem ciężkiej pracy społeczności. Użytkownicy tacy jak Ty, mogą tworzyć efekty łączące muzykę z niesamowitymi efektami wizualnymi. Przekonaj się!
projectM jest reimplementacją Milkdrop na licencji LGPL i używa OpenGL
Wszystko czego wymaga projectM, to karta graficzna obsługująca akcelerację 3D oraz zasoby Twojej muzyki.</description>
+    <description lang="pl_PL">projectM to rewelacyjna wizualizacja muzyki. Nie ma nic lepszego w świecie Unixa. Wspaniałość projectM jest efektem ciężkiej pracy społeczności. Użytkownicy tacy jak Ty, mogą tworzyć wzorce wizualiacji łączące muzykę z niesamowitymi efektami wizualnymi. Przekonaj się!
projectM jest reimplementacją Milkdrop na licencji LGPL i używa OpenGL
Wszystko czego wymaga projectM, to karta graficzna obsługująca akcelerację 3D oraz zasoby Twojej muzyki.</description>
     <description lang="pt_BR">O projectM é um fantástico visualizador de música. Não existe nenhum melhor no mundo Unix. A grandeza do projectM advém do trabalho árduo da comunidade. Utilizadores como você podem criar pré-definições que ligam a música a visualizações incríveis. Experimente!
O visualizador projectM é uma reimplementação do Milkdrop OpenGL sob uma licença LGPL. Tudo o que o projectM necessita é de uma placa gráfica com aceleração 3D e a sua música favorita.</description>
     <description lang="pt_PT">O projectM é uma fantástica visualização de música. Não há melhor no mundo Unix. A grandeza do projectM advém do trabalho árduo da comunidade. Qualquer utilizador pode criar pré-selecções que combinam a música com visualizações incríveis. Experimente!
O visualizador projectM é uma reimplementação do Milkdrop OpenGL sob uma licença LGPL. Tudo o que o projectM precisa é de uma placa gráfica com aceleração 3D e a sua música favorita.</description>
     <description lang="ro_RO">projectM este un plugin uimitor. Nu există nimic mai bun în lumea Unix. Măreția projectM vine din munca întregii comunități. Utilizatori ca și tine pot crea presetări care conectează muzica cu vizualizări incredibile. Încearcă și tu!
Vizualizarea projectM este o reimplementare LGPL a lui Milkdrop sub OpenGL.
Tot ceea ce necesită projectM este o placă video cu accelerare 3D și muzica ta favorită.</description>
diff --git a/addons/visualization.projectm/resources/language/resource.language.pl_pl/strings.po b/addons/visualization.projectm/resources/language/resource.language.pl_pl/strings.po
index 5ab1d32..3c3d6e3 100644
--- a/addons/visualization.projectm/resources/language/resource.language.pl_pl/strings.po
+++ b/addons/visualization.projectm/resources/language/resource.language.pl_pl/strings.po
@@ -42,19 +42,19 @@ msgstr "Tryb losowania"
 
 msgctxt "#30006"
 msgid "Smooth Preset Duration"
-msgstr "Płynny czas trwania ustawienia"
+msgstr "Płynny czas trwania wzorca"
 
 msgctxt "#30007"
 msgid "Preset Duration"
-msgstr "Czas trwania ustawienia"
+msgstr "Czas trwania wzorca"
 
 msgctxt "#30008"
 msgid "Beat Sensitivity"
-msgstr "Czułość uderzeń"
+msgstr "Czułość rytmu"
 
 msgctxt "#30009"
 msgid "Preset Pack"
-msgstr "Pakiet zdefiniowanych ustawień"
+msgstr "Pakiet wzorców"
 
 msgctxt "#30010"
 msgid "Default Pack"
@@ -62,11 +62,11 @@ msgstr "Domyślny zestaw"
 
 msgctxt "#30011"
 msgid "User Defined Preset Folder"
-msgstr "Zdefiniowany folder ustawień"
+msgstr "Folder wzorców użytkownika"
 
 msgctxt "#30012"
 msgid "User Preset Folder"
-msgstr "Folder ustawień użytkownika"
+msgstr "Folder wzorców użytkownika"
 
 msgctxt "#30050"
 msgid "%2.0f secs"
diff --git a/addons/visualization.vortex/resources/language/resource.language.pl_pl/strings.po b/addons/visualization.vortex/resources/language/resource.language.pl_pl/strings.po
index 53ccdc7..54087fc 100644
--- a/addons/visualization.vortex/resources/language/resource.language.pl_pl/strings.po
+++ b/addons/visualization.vortex/resources/language/resource.language.pl_pl/strings.po
@@ -18,31 +18,31 @@ msgstr ""
 
 msgctxt "#30000"
 msgid "Random Presets"
-msgstr "Losowe ustawienia"
+msgstr "Losowe wzorce wizualizacji"
 
 msgctxt "#30001"
 msgid "Time Between Presets"
-msgstr "Interwał zdefiniowanych ustawień"
+msgstr "Częstotliwość zmiany wzorców"
 
 msgctxt "#30002"
 msgid "Additional Random Time"
-msgstr "Dodatkowy czas losowy"
+msgstr "Dodatkowy losowy czas"
 
 msgctxt "#30003"
 msgid "Lock Preset"
-msgstr "Zablokuj zdefiniowane ustawienia"
+msgstr "Zablokuj wzorzec"
 
 msgctxt "#30004"
 msgid "Enable Transitions"
-msgstr "Włącz przejścia"
+msgstr "Aktywuj przejścia"
 
 msgctxt "#30005"
 msgid "Stop first preset"
-msgstr "Zatrzymaj pierwsze zdefiniowane ustawienie"
+msgstr "Zatrzymaj pierwszy szablon"
 
 msgctxt "#30006"
 msgid "Show FPS"
-msgstr "Pokaż szybkość klatek"
+msgstr "Pokazuj częstotliwość klatek"
 
 msgctxt "#30007"
 msgid "Show debug console"
@@ -50,7 +50,7 @@ msgstr "Pokazuj konsolę diagnostyczną"
 
 msgctxt "#30008"
 msgid "Show audio analysis"
-msgstr "Pokaż analizę dźwięku "
+msgstr "Pokazuj analizę dźwięku "
 
 msgctxt "#30050"
 msgid "%2.0f secs"
diff --git a/addons/webinterface.default/addon.xml b/addons/webinterface.default/addon.xml
index 64435a6..577cda4 100644
--- a/addons/webinterface.default/addon.xml
+++ b/addons/webinterface.default/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="webinterface.default"
-  version="2.2.24"
+  version="2.2.25"
   name="Default webinterface"
   provider-name="Team-Kodi">
   <requires>
@@ -59,7 +59,7 @@
     <summary lang="sk_SK">Webové rozhranie tímu Kodi. (predvolené webové rozhranie pre Kodi)</summary>
     <summary lang="sl_SI">Spletni vmesnik ekipe Kodi. (Privzet spletni vmesnik za Kodi)</summary>
     <summary lang="sr_RS">Веб интерфејс од програмера Kodi-а (подразумевани веб интерфејс Kodi-а)</summary>
-    <summary lang="sr_RS at latin">Веб интерфејс од програмера Kodi-а (подразумевани веб интерфејс Kodi-а)</summary>
+    <summary lang="sr_RS at latin">Web interfejs Kodi Tima (podrazuevani web interfejs Kodia)</summary>
     <summary lang="sv_SE">Team-Kodi webbgränsnitt. (Kodi's standardwebbgränssnitt)</summary>
     <summary lang="szl">Webowy interfejs ôd Team-Kodi (wychodny webowy interface we Kodi).</summary>
     <summary lang="ta_IN">கோடி குழுமத்தின் இணைய இடைமுகம். (கோடியின் நிரந்தர இணைய இடைமுகம்)</summary>
@@ -123,7 +123,7 @@
     <description lang="sk_SK">Predvolené webové rozhranie pre Kodi; Navrhnuté pre zariadenia zobrazujúce v akomkoľvek rozlíšení</description>
     <description lang="sl_SI">Privzet spletni vmesnik za Kodi, ustvarjen za naprave vseh ločljivosti</description>
     <description lang="sr_RS">Подразумевани веб интерфејс Kodi-а, намењен уређајима свих резолуција</description>
-    <description lang="sr_RS at latin">Подразумевани веб интерфејс Kodi-а, намењен уређајима свих резолуција</description>
+    <description lang="sr_RS at latin">Podrazumevani web interfejs Kodia; Namenjen uređajima svih rezolucija</description>
     <description lang="sv_SE">Standardwebbgränssnitt för Kodi; Utformat för alla enheter oavsett skärmupplösning</description>
     <description lang="szl">Wychodny webowy interface we Kodi. Zrychtowany dlŏ maszin we wszyjskich rozdziylczościach.</description>
     <description lang="ta_IN">கோடி இற்கான நிரந்தர இணைய இடைமுகம்; சகல சாதனங்களின் திரைகளுக்கும் வடிவமைக்கப்பட்டது</description>
diff --git a/configure.ac b/configure.ac
index 190cfb9..4f351c5 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], [15.0.000], [http://trac.kodi.tv])
+AC_INIT([kodi], [15.1.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/media/Splash.png b/media/Splash.png
index 061fc84..abfb902 100644
Binary files a/media/Splash.png and b/media/Splash.png differ
diff --git a/project/cmake/addons/addons/audioencoder.flac/audioencoder.flac.txt b/project/cmake/addons/addons/audioencoder.flac/audioencoder.flac.txt
index 8e6ed3d..712ae70 100644
--- a/project/cmake/addons/addons/audioencoder.flac/audioencoder.flac.txt
+++ b/project/cmake/addons/addons/audioencoder.flac/audioencoder.flac.txt
@@ -1 +1 @@
-audioencoder.flac https://github.com/xbmc/audioencoder.flac a5e2d12
+audioencoder.flac https://github.com/xbmc/audioencoder.flac 8e67185
diff --git a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt
index 8d8ad33..6c2d24f 100644
--- a/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt
+++ b/project/cmake/addons/addons/pvr.mythtv/pvr.mythtv.txt
@@ -1 +1 @@
-pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv 538e24d
+pvr.mythtv https://github.com/kodi-pvr/pvr.mythtv 877774a
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index 8f69bcb..3ef33e0 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -978,7 +978,7 @@
           <level>1</level>
           <default>English</default>
           <constraints>
-            <options>iso6391languages</options>
+            <options>streamlanguages</options>
             <delimiter>,</delimiter>
             <minimumitems>1</minimumitems>
           </constraints>
@@ -2828,7 +2828,7 @@
             <step>512</step>
             <maximum>102400</maximum>
           </constraints>
-          <control type="list" format="string">
+          <control type="spinner" format="string">
             <formatlabel>14048</formatlabel>
           </control>
         </setting>
diff --git a/tools/android/packaging/xbmc/res/layout/activity_splash.xml b/tools/android/packaging/xbmc/res/layout/activity_splash.xml
index 04d417e..5fdab94 100644
--- a/tools/android/packaging/xbmc/res/layout/activity_splash.xml
+++ b/tools/android/packaging/xbmc/res/layout/activity_splash.xml
@@ -10,7 +10,7 @@
         android:layout_centerHorizontal="true"
         android:adjustViewBounds="true"
         android:layout_alignParentTop="true" 
-        android:scaleType="center"
+        android:scaleType="centerCrop"
         android:src="@drawable/splash" />
 
     <RelativeLayout
diff --git a/tools/darwin/Support/Codesign.command b/tools/darwin/Support/Codesign.command
index 2334741..6c2128d 100755
--- a/tools/darwin/Support/Codesign.command
+++ b/tools/darwin/Support/Codesign.command
@@ -6,6 +6,7 @@ LIST_BINARY_EXTENSIONS="dylib so 0 vis pvr"
 export CODESIGN_ALLOCATE=`xcodebuild -find codesign_allocate`
 
 GEN_ENTITLEMENTS="$XBMC_DEPENDS_ROOT/buildtools-native/bin/gen_entitlements.py"
+LDID="$XBMC_DEPENDS_ROOT/buildtools-native/bin/ldid"
 
 if [ ! -f ${GEN_ENTITLEMENTS} ]; then
   echo "error: $GEN_ENTITLEMENTS not found. Codesign won't work."
@@ -17,6 +18,12 @@ if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
   if [ -f "/Users/Shared/buildslave/keychain_unlock.sh" ]; then
     /Users/Shared/buildslave/keychain_unlock.sh
   fi
+
+  #do fake sign - needed for jailbroken ios5.1 devices for some reason
+  if [ -f ${LDID} ]; then
+    ${LDID} -S ${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${APP_NAME}
+  fi
+
   ${GEN_ENTITLEMENTS} "org.xbmc.kodi-ios" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
   codesign -v -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
   
diff --git a/tools/darwin/Support/copyframeworks-ios.command b/tools/darwin/Support/copyframeworks-ios.command
index 328258b..a0031ab 100755
--- a/tools/darwin/Support/copyframeworks-ios.command
+++ b/tools/darwin/Support/copyframeworks-ios.command
@@ -75,12 +75,11 @@ chmod u+w "$TARGET_FRAMEWORKS/$(basename $a)"
 install_name_tool -change "$a" "$DYLIB_NAMEPATH/$(basename $a)" "$TARGET_BINARY"
 done
 
-if [ "$SDK_NAME" = "iphoneos6.0" ] ; then
 echo "Fixing $TARGET_BINARY VideoToolbox dylib name"
 VTB_SDK6=/System/Library/Frameworks/VideoToolbox.framework/VideoToolbox
 VTB_SDK5=/System/Library/PrivateFrameworks/VideoToolbox.framework/VideoToolbox
 install_name_tool -change "$VTB_SDK6" "$VTB_SDK5" "$TARGET_BINARY"
-fi
+
 
 echo "Package $EXTERNAL_LIBS/lib/python2.6"
 mkdir -p "$TARGET_CONTENTS/Frameworks/lib"
diff --git a/tools/darwin/packaging/ios/mkdeb-ios.sh.in b/tools/darwin/packaging/ios/mkdeb-ios.sh.in
index c868141..a638581 100644
--- a/tools/darwin/packaging/ios/mkdeb-ios.sh.in
+++ b/tools/darwin/packaging/ios/mkdeb-ios.sh.in
@@ -67,11 +67,11 @@ mkdir -p $DIRNAME/$PACKAGE/DEBIAN
 echo "Package: $PACKAGE"                          >  $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Priority: Extra"                            >> $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Name: @APP_NAME at -iOS"                       >> $DIRNAME/$PACKAGE/DEBIAN/control
-echo "Depends: firmware (>= 4.1)"                 >> $DIRNAME/$PACKAGE/DEBIAN/control
+echo "Depends: firmware (>= 5.1)"                 >> $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Version: $VERSION-$REVISION"                >> $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Architecture: iphoneos-arm"                 >> $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Installed-Size: $SIZE"                      >> $DIRNAME/$PACKAGE/DEBIAN/control
-echo "Description: @APP_NAME@ Entertainment Center for 4.x iOS" >> $DIRNAME/$PACKAGE/DEBIAN/control
+echo "Description: @APP_NAME@ Entertainment Center for 5.x iOS" >> $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Homepage: http://kodi.tv/"                 >> $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Maintainer: Memphiz"                        >> $DIRNAME/$PACKAGE/DEBIAN/control
 echo "Author: Team- at APP_NAME@"                    >> $DIRNAME/$PACKAGE/DEBIAN/control
diff --git a/tools/depends/native/Makefile b/tools/depends/native/Makefile
index 1538ed9..17536f7 100644
--- a/tools/depends/native/Makefile
+++ b/tools/depends/native/Makefile
@@ -14,7 +14,7 @@ NATIVE= m4-native gettext-native autoconf-native automake-native \
 
 
 ifeq ($(OS),ios)
-  NATIVE += dpkg-native xz-native tar-native fakeroot-native gen_entitlements-native
+  NATIVE += dpkg-native xz-native tar-native fakeroot-native gen_entitlements-native ldid-native
 endif
 
 ifeq ($(OS),osx)
diff --git a/tools/depends/native/distutilscross-native/Makefile b/tools/depends/native/ldid-native/Makefile
similarity index 69%
copy from tools/depends/native/distutilscross-native/Makefile
copy to tools/depends/native/ldid-native/Makefile
index 7c1a424..e356076 100644
--- a/tools/depends/native/distutilscross-native/Makefile
+++ b/tools/depends/native/ldid-native/Makefile
@@ -1,28 +1,31 @@
 include ../../Makefile.include
 PREFIX=$(NATIVEPREFIX)
 PLATFORM=$(NATIVEPLATFORM)
-DEPS= ../../Makefile.include.in Makefile
+DEPS= ../../Makefile.include Makefile
 
 # lib name, version
-LIBNAME=distutilscross
-VERSION=0.1
+LIBNAME=ldid
+VERSION=1.0.0
 SOURCE=$(LIBNAME)-$(VERSION)
 ARCHIVE=$(SOURCE).tar.gz
 
+CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
+
 all: .installed-$(PLATFORM)
 
 $(TARBALLS_LOCATION)/$(ARCHIVE):
 	cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
 
 $(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
-	-rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
+	rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
 	cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
 
-.installed-$(PLATFORM): $(PLATFORM)
-	cd $(PLATFORM); $(PREFIX)/bin/python setup.py install --prefix=$(PREFIX)
+.installed-$(PLATFORM):$(PLATFORM)
+	cp $(PLATFORM)/ldid $(NATIVEPREFIX)/bin
 	touch $@
 
 clean:
+	rm -r $(PLATFORM)
 	rm -f .installed-$(PLATFORM)
 
 distclean::
diff --git a/version.txt b/version.txt
index 3ecc000..9edcc24 100644
--- a/version.txt
+++ b/version.txt
@@ -2,10 +2,10 @@ APP_NAME Kodi
 COMPANY_NAME XBMC-Foundation
 WEBSITE http://kodi.tv
 VERSION_MAJOR 15
-VERSION_MINOR 0
+VERSION_MINOR 1
 VERSION_TAG
-VERSION_CODE 150000
-ADDON_API 15.0.000
+VERSION_CODE 151000
+ADDON_API 15.1.000
 
 # Notes:
 # Change AC_INIT in configure.ac
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index 697f278..f3f65c5 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -299,7 +299,6 @@ CApplication::CApplication(void)
   m_Autorun = new CAutorun();
 #endif
 
-  m_splash = NULL;
   m_threadID = 0;
   m_progressTrackingPlayCountUpdate = false;
   m_currentStackPosition = 0;
@@ -342,7 +341,7 @@ bool CApplication::OnEvent(XBMC_Event& newEvent)
         CApplicationMessenger::Get().Quit();
       break;
     case XBMC_VIDEORESIZE:
-      if (!g_application.m_bInitializing &&
+      if (g_windowManager.Initialized() &&
           !g_advancedSettings.m_fullScreen)
       {
         g_Windowing.SetWindowResolution(newEvent.resize.w, newEvent.resize.h);
@@ -798,20 +797,7 @@ bool CApplication::CreateGUI()
     CDisplaySettings::Get().SetCurrentResolution(RES_DESKTOP, true);
 
   if (g_advancedSettings.m_splashImage)
-  {
-    std::string strUserSplash = "special://home/media/Splash.png";
-    if (CFile::Exists(strUserSplash))
-    {
-      CLog::Log(LOGINFO, "load user splash image: %s", CSpecialProtocol::TranslatePath(strUserSplash).c_str());
-      m_splash = new CSplash(strUserSplash);
-    }
-    else
-    {
-      CLog::Log(LOGINFO, "load default splash image: %s", CSpecialProtocol::TranslatePath("special://xbmc/media/Splash.png").c_str());
-      m_splash = new CSplash("special://xbmc/media/Splash.png");
-    }
-    m_splash->Show();
-  }
+    CSplash::Get().Show();
 
   // The key mappings may already have been loaded by a peripheral
   CLog::Log(LOGINFO, "load keymapping");
@@ -823,6 +809,7 @@ bool CApplication::CreateGUI()
             info.iWidth,
             info.iHeight,
             info.strMode.c_str());
+
   g_windowManager.Initialize();
 
   return true;
@@ -1157,6 +1144,12 @@ bool CApplication::Initialize()
     g_windowManager.CreateWindows();
     /* window id's 3000 - 3100 are reserved for python */
 
+    // initialize splash window after splash screen disappears
+    // because we need a real window in the background which gets
+    // rendered while we load the main window or enter the master lock key
+    if (g_advancedSettings.m_splashImage)
+      g_windowManager.ActivateWindow(WINDOW_SPLASH);
+
     // Make sure we have at least the default skin
     string defaultSkin = ((const CSettingString*)CSettings::Get().GetSetting("lookandfeel.skin"))->GetDefault();
     if (!LoadSkin(CSettings::Get().GetString("lookandfeel.skin")) && !LoadSkin(defaultSkin))
@@ -1165,9 +1158,6 @@ bool CApplication::Initialize()
       return false;
     }
 
-    if (g_advancedSettings.m_splashImage)
-      SAFE_DELETE(m_splash);
-
     if (CSettings::Get().GetBool("masterlock.startuplock") &&
         CProfilesManager::Get().GetMasterProfile().getLockMode() != LOCK_MODE_EVERYONE &&
        !CProfilesManager::Get().GetMasterProfile().getLockCode().empty())
@@ -1190,17 +1180,15 @@ bool CApplication::Initialize()
 #endif
       ADDON::CAddonMgr::Get().StartServices(false);
 
-      // let's start the PVR manager and decide if the PVR manager handle the startup window activation
-      if (StartPVRManager())
-        uiInitializationFinished = false;
-      else
-      {
-        int firstWindow = g_SkinInfo->GetFirstWindow();
-        // the startup window is considered part of the initialization as it most likely switches to the final window
-        uiInitializationFinished = firstWindow != WINDOW_STARTUP_ANIM;
+      // start the PVR manager
+      StartPVRManager();
 
-        g_windowManager.ActivateWindow(firstWindow);
-      }
+      // activate the configured start window
+      int firstWindow = g_SkinInfo->GetFirstWindow();
+      g_windowManager.ActivateWindow(firstWindow);
+
+      // the startup window is considered part of the initialization as it most likely switches to the final window
+      uiInitializationFinished = firstWindow != WINDOW_STARTUP_ANIM;
 
       CStereoscopicsManager::Get().Initialize();
     }
@@ -1306,18 +1294,12 @@ bool CApplication::StartServer(enum ESERVERS eServer, bool bStart, bool bWait/*
   return ret;
 }
 
-bool CApplication::StartPVRManager()
+void CApplication::StartPVRManager()
 {
   if (!CSettings::Get().GetBool("pvrmanager.enabled"))
-    return false;
-
-  int firstWindowId = 0;
-  if (g_PVRManager.IsPVRWindow(g_SkinInfo->GetStartWindow()))
-    firstWindowId = g_SkinInfo->GetFirstWindow();
-
-  g_PVRManager.Start(true, firstWindowId);
+    return;
 
-  return (firstWindowId > 0);
+  g_PVRManager.Start(true);
 }
 
 void CApplication::StopPVRManager()
@@ -3899,6 +3881,9 @@ bool CApplication::OnMessage(CGUIMessage& message)
       }
       else if (message.GetParam1() == GUI_MSG_UI_READY)
       {
+        // remove splash window
+        g_windowManager.Delete(WINDOW_SPLASH);
+
         if (m_fallbackLanguageLoaded)
           CGUIDialogOK::ShowAndGetInput(24133, 24134);
 
diff --git a/xbmc/Application.h b/xbmc/Application.h
index 4b50ab2..362dd7a 100644
--- a/xbmc/Application.h
+++ b/xbmc/Application.h
@@ -147,11 +147,7 @@ public:
 
   bool StartServer(enum ESERVERS eServer, bool bStart, bool bWait = false);
 
-  /*!
-   * @brief Starts the PVR manager and decide if the manager should handle the startup window activation.
-   * @return true, if the startup window activation is handled by the pvr manager, otherwise false
-   */
-  bool StartPVRManager();
+  void StartPVRManager();
   void StopPVRManager();
   bool IsCurrentThread() const;
   void Stop(int exitCode);
@@ -367,7 +363,6 @@ public:
 
   bool SwitchToFullScreen(bool force = false);
 
-  CSplash* GetSplash() { return m_splash; }
   void SetRenderGUI(bool renderGUI);
   bool GetRenderGUI() const { return m_renderGUI; };
 
@@ -448,7 +443,6 @@ protected:
   CFileItemPtr m_stackFileItemToUpdate;
 
   std::string m_prevMedia;
-  CSplash* m_splash;
   ThreadIdentifier m_threadID;       // application thread ID.  Used in applicationMessanger to know where we are firing a thread with delay from.
   bool m_bInitializing;
   bool m_bPlatformDirectories;
diff --git a/xbmc/ApplicationMessenger.cpp b/xbmc/ApplicationMessenger.cpp
index 76ba9f2..90424af 100644
--- a/xbmc/ApplicationMessenger.cpp
+++ b/xbmc/ApplicationMessenger.cpp
@@ -40,7 +40,6 @@
 #include "guilib/GUIKeyboardFactory.h"
 #include "guilib/Resolution.h"
 #include "GUIInfoManager.h"
-#include "utils/Splash.h"
 #include "cores/VideoRenderers/RenderManager.h"
 #include "cores/AudioEngine/AEFactory.h"
 #include "music/tags/MusicInfoTag.h"
@@ -802,13 +801,6 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
         g_application.ShowVolumeBar(&action);
       }
       break;
-
-    case TMSG_SPLASH_MESSAGE:
-      {
-        if (g_application.GetSplash())
-          g_application.GetSplash()->Show(pMsg->strParam);
-      }
-      break;
       
     case TMSG_DISPLAY_SETUP:
     {
@@ -1332,18 +1324,6 @@ void CApplicationMessenger::ShowVolumeBar(bool up)
   SendMessage(tMsg, false);
 }
 
-void CApplicationMessenger::SetSplashMessage(const std::string& message)
-{
-  ThreadMessage tMsg = {TMSG_SPLASH_MESSAGE};
-  tMsg.strParam = message;
-  SendMessage(tMsg, true);
-}
-
-void CApplicationMessenger::SetSplashMessage(int stringID)
-{
-  SetSplashMessage(g_localizeStrings.Get(stringID));
-}
-
 bool CApplicationMessenger::SetupDisplay()
 {
   bool result;
diff --git a/xbmc/ApplicationMessenger.h b/xbmc/ApplicationMessenger.h
index fdaab45..8e1b4aa 100644
--- a/xbmc/ApplicationMessenger.h
+++ b/xbmc/ApplicationMessenger.h
@@ -111,7 +111,6 @@ namespace MUSIC_INFO
 #define TMSG_CALLBACK             800
 
 #define TMSG_VOLUME_SHOW          900
-#define TMSG_SPLASH_MESSAGE       901
 
 #define TMSG_DISPLAY_SETUP      1000
 #define TMSG_DISPLAY_DESTROY    1001
@@ -251,9 +250,6 @@ public:
 
   void ShowVolumeBar(bool up);
 
-  void SetSplashMessage(const std::string& message);
-  void SetSplashMessage(int stringID);
-
   /*! \brief Used to enable/disable PVR system without waiting.
    \param onOff if true it becomes switched on otherwise off
    */
diff --git a/xbmc/LangInfo.cpp b/xbmc/LangInfo.cpp
index 92d134b..844c6ae 100644
--- a/xbmc/LangInfo.cpp
+++ b/xbmc/LangInfo.cpp
@@ -39,6 +39,7 @@
 #include "utils/XMLUtils.h"
 
 #include <algorithm>
+#include <set>
 
 using namespace std;
 using namespace PVR;
@@ -1134,6 +1135,12 @@ void CLangInfo::SettingOptionsStreamLanguagesFiller(const CSetting *setting, std
 
   std::string dummy;
   SettingOptionsISO6391LanguagesFiller(NULL, list, dummy, NULL);
+  SettingOptionsLanguageNamesFiller(NULL, list, dummy, NULL);
+
+  // convert the vector to a set and back again to remove duplicates
+  std::set<std::pair<std::string, std::string>> languages(list.begin(), list.end());
+  list.assign(languages.begin(), languages.end());
+  std::sort(list.begin(), list.end(), SortLanguage());
 }
 
 void CLangInfo::SettingOptionsRegionsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current, void *data)
diff --git a/xbmc/SectionLoader.cpp b/xbmc/SectionLoader.cpp
index df92684..b9cd896 100644
--- a/xbmc/SectionLoader.cpp
+++ b/xbmc/SectionLoader.cpp
@@ -134,7 +134,6 @@ void CSectionLoader::UnloadAll()
   while (it != g_sectionLoader.m_vecLoadedDLLs.end())
   {
     CDll& dll = *it;
-    CLog::Log(LOGDEBUG,"SECTION:UnloadAll(DLL: %s)", dll.m_strDllName.c_str());
     if (dll.m_pDll)
       DllLoaderContainer::ReleaseModule(dll.m_pDll);
     it = g_sectionLoader.m_vecLoadedDLLs.erase(it);
diff --git a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
index 08ffdc6..ba6919c 100644
--- a/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
+++ b/xbmc/cores/VideoRenderers/OverlayRenderer.cpp
@@ -203,16 +203,19 @@ void CRenderer::Render(int idx)
 
     float adjust_height = 0.0f;
 
-    if(subalign == SUBTITLE_ALIGN_TOP_INSIDE ||
-       subalign == SUBTITLE_ALIGN_TOP_OUTSIDE)
+    if (o->m_type == COverlay::TYPE_GUITEXT)
     {
-      adjust_height = cur_height;
-      cur_height += o->m_height;
-    }
-    else
-    {
-      total_height -= o->m_height;
-      adjust_height = -total_height;
+      if(subalign == SUBTITLE_ALIGN_TOP_INSIDE ||
+         subalign == SUBTITLE_ALIGN_TOP_OUTSIDE)
+      {
+        adjust_height = cur_height;
+        cur_height += o->m_height;
+      }
+      else
+      {
+        total_height -= o->m_height;
+        adjust_height = -total_height;
+      }
     }
 
     Render(o, adjust_height);
diff --git a/xbmc/cores/VideoRenderers/OverlayRendererGUI.cpp b/xbmc/cores/VideoRenderers/OverlayRendererGUI.cpp
index c77ce03..d4b65d3 100644
--- a/xbmc/cores/VideoRenderers/OverlayRendererGUI.cpp
+++ b/xbmc/cores/VideoRenderers/OverlayRendererGUI.cpp
@@ -136,6 +136,8 @@ COverlayText::COverlayText(CDVDOverlayText * src)
   }
   m_width  = 0;
   m_height = 0;
+
+  m_type = TYPE_GUITEXT;
 }
 
 COverlayText::~COverlayText()
diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp
index 7f43949..cc6a2f6 100644
--- a/xbmc/cores/VideoRenderers/RenderManager.cpp
+++ b/xbmc/cores/VideoRenderers/RenderManager.cpp
@@ -1219,8 +1219,10 @@ void CXBMCRenderManager::DiscardBuffer()
   while(!m_queued.empty())
     requeue(m_discard, m_queued);
 
+  m_Queue[m_presentsource].timestamp = GetPresentTime();
+
   if(m_presentstep == PRESENT_READY)
-    m_presentstep   = PRESENT_IDLE;
+    m_presentstep = PRESENT_IDLE;
   m_presentevent.notifyAll();
 }
 
diff --git a/xbmc/cores/dvdplayer/DVDClock.cpp b/xbmc/cores/dvdplayer/DVDClock.cpp
index 1365682..0ddb91d 100644
--- a/xbmc/cores/dvdplayer/DVDClock.cpp
+++ b/xbmc/cores/dvdplayer/DVDClock.cpp
@@ -169,7 +169,16 @@ bool CDVDClock::Update(double clock, double absolute, double limit, const char*
   double was_absolute = SystemToAbsolute(m_startClock);
   double was_clock    = m_iDisc + absolute - was_absolute;
   lock.Leave();
-  if(std::abs(clock - was_clock) > limit)
+
+  double error = std::abs(clock - was_clock);
+
+  // skip minor updates while speed adjust is active
+  // -> adjusting buffer levels
+  if (m_speedAdjust != 0 && error < DVD_MSEC_TO_TIME(100))
+  {
+    return false;
+  }
+  else if (error > limit)
   {
     Discontinuity(clock, absolute);
 
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
index 1bb0102..e7bed43 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
@@ -273,39 +273,6 @@ CDVDOverlay* CDVDOverlayCodecFFmpeg::GetOverlay()
     overlay->height   = rect.h;
     overlay->bForced  = rect.flags != 0;
 
-    int right  = overlay->x + overlay->width;
-    int bottom = overlay->y + overlay->height;
-
-    if (render_stereo_mode == RENDER_STEREO_MODE_OFF)
-    {
-      if(bottom > m_height)
-      {
-        if     (bottom <= 480)
-          m_height      = 480;
-        else if(bottom <= 576)
-          m_height      = 576;
-        else if(bottom <= 720)
-          m_height      = 720;
-        else if(bottom <= 1080)
-          m_height      = 1080;
-        else
-          m_height      = bottom;
-      }
-      if(right > m_width)
-      {
-        if     (right <= 720)
-          m_width      = 720;
-        else if(right <= 1024)
-          m_width      = 1024;
-        else if(right <= 1280)
-          m_width      = 1280;
-        else if(right <= 1920)
-          m_width      = 1920;
-        else
-          m_width      = right;
-      }
-    }
-
     overlay->source_width  = m_width;
     overlay->source_height = m_height;
 
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
index 0503bec..450b4a9 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/AMLCodec.cpp
@@ -1867,9 +1867,7 @@ int CAMLCodec::Decode(uint8_t *pData, size_t iSize, double dts, double pts)
   if (m_old_pictcnt == m_cur_pictcnt)
     m_ready_event.WaitMSec(25);
 
-  // we must return VC_BUFFER or VC_PICTURE,
-  // default to VC_BUFFER.
-  int rtn = VC_BUFFER;
+  int rtn = 0;
   if (m_old_pictcnt != m_cur_pictcnt)
   {
     m_old_pictcnt++;
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
index 6fb88e0..e5a209d 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h
@@ -244,22 +244,6 @@ public:
    */
   virtual void SetSpeed(int iSpeed) {};
 
-  /*
-   * returns the number of demuxer bytes in any internal buffers
-   */
-  virtual int GetDataSize(void)
-  {
-    return 0;
-  }
-
-  /*
-   * returns the time in seconds for demuxer bytes in any internal buffers
-   */
-  virtual double GetTimeSize(void)
-  {
-    return 0;
-  }
-
   enum EFilterFlags {
     FILTER_NONE                =  0x0,
     FILTER_DEINTERLACE_YADIF   =  0x1,  /* use first deinterlace mode */
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index 0dee528..4269d8a 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -97,6 +97,15 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
     return avcodec_default_get_format(avctx, fmt);
   }
 
+  // hardware decoder de-selected, restore standard ffmpeg
+  if (ctx->GetHardware())
+  {
+    ctx->SetHardware(NULL);
+    avctx->get_buffer2 = avcodec_default_get_buffer2;
+    avctx->slice_flags = 0;
+    avctx->hwaccel_context = 0;
+  }
+
   const PixelFormat * cur = fmt;
   while(*cur != PIX_FMT_NONE)
   {
@@ -159,15 +168,6 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
     cur++;
   }
 
-  // hardware decoder de-selected, restore standard ffmpeg
-  if (ctx->GetHardware())
-  {
-    ctx->SetHardware(NULL);
-    avctx->get_buffer2     = avcodec_default_get_buffer2;
-    avctx->slice_flags     = 0;
-    avctx->hwaccel_context = 0;
-  }
-
   ctx->m_decoderState = STATE_HW_FAILED;
   return avcodec_default_get_format(avctx, fmt);
 }
@@ -353,7 +353,6 @@ void CDVDVideoCodecFFmpeg::Dispose()
     m_pCodecContext = NULL;
   }
   SAFE_RELEASE(m_pHardware);
-  DisposeHWDecoders();
 
   FilterClose();
 }
@@ -573,8 +572,6 @@ int CDVDVideoCodecFFmpeg::Decode(uint8_t* pData, int iSize, double dts, double p
   if(result & VC_FLUSHED)
     Reset();
 
-  DisposeHWDecoders();
-
   return result;
 }
 
@@ -919,17 +916,7 @@ void CDVDVideoCodecFFmpeg::SetCodecControl(int flags)
 
 void CDVDVideoCodecFFmpeg::SetHardware(IHardwareDecoder* hardware)
 {
-  if (m_pHardware)
-    m_disposeDecoders.push_back(m_pHardware);
+  SAFE_RELEASE(m_pHardware);
   m_pHardware = hardware;
   UpdateName();
 }
-
-void CDVDVideoCodecFFmpeg::DisposeHWDecoders()
-{
-  while (!m_disposeDecoders.empty())
-  {
-    m_disposeDecoders.back()->Release();
-    m_disposeDecoders.pop_back();
-  }
-}
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
index 5270565..6906e79 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
@@ -82,7 +82,6 @@ protected:
   int  FilterOpen(const std::string& filters, bool scale);
   void FilterClose();
   int  FilterProcess(AVFrame* frame);
-  void DisposeHWDecoders();
 
   void UpdateName()
   {
@@ -117,7 +116,6 @@ protected:
   std::string m_name;
   int m_decoderState;
   IHardwareDecoder *m_pHardware;
-  std::vector<IHardwareDecoder*> m_disposeDecoders;
   int m_iLastKeyframe;
   double m_dts;
   bool   m_started;
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.cpp
index 28601ef..68f5edc 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.cpp
@@ -818,7 +818,15 @@ bool CDecoder::Open(AVCodecContext *avctx, AVCodecContext* mainctx, enum PixelFo
     return false;
   }
 
-  m_format.SampleWidth  = avctx->coded_width;
+  CLog::Log(LOGDEBUG, "DXVA - source requires %d references", avctx->refs);
+  if (m_input == DXVADDI_Intel_ModeH264_E && avctx->refs > 11)
+  {
+    const dxva2_mode_t *mode = dxva2_find_mode(&m_input);
+    CLog::Log(LOGWARNING, "DXVA - too many references %d for selected decoder '%s'.", avctx->refs, mode->name);
+    return false;
+  }
+
+  m_format.SampleWidth = avctx->coded_width;
   m_format.SampleHeight = avctx->coded_height;
   m_format.SampleFormat.SampleFormat  = DXVA2_SampleProgressiveFrame;
   m_format.SampleFormat.VideoLighting = DXVA2_VideoLighting_dim;
@@ -929,8 +937,6 @@ bool CDecoder::Open(AVCodecContext *avctx, AVCodecContext* mainctx, enum PixelFo
     else
       m_refs = 2;
   }
-  CLog::Log(LOGDEBUG, "DXVA - source requires %d references", avctx->refs);
-
   DXVA2_ConfigPictureDecode config = {};
   if (!m_dxva_context->GetConfig(m_input, &m_format, config))
     return false;
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
index 82b5baa..7c84557 100644
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
@@ -1786,13 +1786,9 @@ void CDVDPlayer::HandlePlaySpeed()
         double adjust = -1.0; // a unique value
         if (m_clock.GetSpeedAdjust() == 0.0 && m_dvdPlayerAudio->GetLevel() < 5)
           adjust = -0.01;
-        else if (m_clock.GetSpeedAdjust() == 0.0 && m_dvdPlayerAudio->GetLevel() > 95)
-          adjust = 0.01;
 
         if (m_clock.GetSpeedAdjust() < 0 && m_dvdPlayerAudio->GetLevel() > 20)
           adjust = 0.0;
-        else if (m_clock.GetSpeedAdjust() > 0 && m_dvdPlayerAudio->GetLevel() < 80)
-          adjust = 0.0;
 
         if (adjust != -1.0)
         {
@@ -1831,7 +1827,7 @@ void CDVDPlayer::HandlePlaySpeed()
         check = false;
       // skip if frame on screen has not changed
       else if (m_SpeedState.lastpts == m_dvdPlayerVideo->GetCurrentPts() &&
-          fabs(m_SpeedState.lastabstime - CDVDClock::GetAbsoluteClock()) < DVD_MSEC_TO_TIME(1000))
+               (m_SpeedState.lastpts > m_State.dts || m_playSpeed > 0))
         check = false;
 
       if (check)
@@ -2988,7 +2984,7 @@ void CDVDPlayer::GetGeneralInfo(std::string& strGeneralInfo)
       CSingleLock lock(m_StateSection);
       if(m_StateInput.cache_bytes >= 0)
       {
-        strBuf += StringUtils::Format(" cache:%s %2.0f%%"
+        strBuf += StringUtils::Format(" forward:%s %2.0f%%"
                                       , StringUtils::SizeToString(m_StateInput.cache_bytes).c_str()
                                       , m_StateInput.cache_level * 100);
         if(m_playSpeed == 0 || m_caching == CACHESTATE_FULL)
@@ -3024,7 +3020,7 @@ void CDVDPlayer::GetGeneralInfo(std::string& strGeneralInfo)
       CSingleLock lock(m_StateSection);
       if(m_StateInput.cache_bytes >= 0)
       {
-        strBuf += StringUtils::Format(" cache:%s %2.0f%%"
+        strBuf += StringUtils::Format(" forward:%s %2.0f%%"
                                       , StringUtils::SizeToString(m_StateInput.cache_bytes).c_str()
                                       , m_StateInput.cache_level * 100);
         if(m_playSpeed == 0 || m_caching == CACHESTATE_FULL)
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
index f1a7e60..46fa635 100644
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
@@ -435,6 +435,8 @@ void CDVDPlayerVideo::Process()
 
       m_stalled = true;
       m_started = false;
+
+      g_renderManager.DiscardBuffer();
     }
     else if (pMsg->IsType(CDVDMsg::VIDEO_NOSKIP))
     {
@@ -807,34 +809,6 @@ void CDVDPlayerVideo::Flush()
   m_messageQueue.Put(new CDVDMsg(CDVDMsg::GENERAL_FLUSH), 1);
 }
 
-int CDVDPlayerVideo::GetLevel() const
-{
-  int level = m_messageQueue.GetLevel();
-
-  // fast exit, if the message queue is full, we do not care about the codec queue.
-  if (level == 100)
-    return level;
-
-  // Now for the harder choices, the message queue could be time or size based.
-  // In order to return the proper summed level, we need to know which.
-  if (m_messageQueue.IsDataBased())
-  {
-    int datasize = m_messageQueue.GetDataSize();
-    if (m_pVideoCodec)
-      datasize += m_pVideoCodec->GetDataSize();
-    return min(100, MathUtils::round_int((100.0 * datasize) / m_messageQueue.GetMaxDataSize()));
-  }
-  else
-  {
-    double timesize = m_messageQueue.GetTimeSize();
-    if (m_pVideoCodec)
-      timesize += m_pVideoCodec->GetTimeSize();
-    return min(100, MathUtils::round_int(100.0 * m_messageQueue.GetMaxTimeSize() * timesize));
-  }
-
-  return level;
-}
-
 #ifdef HAS_VIDEO_PLAYBACK
 void CDVDPlayerVideo::ProcessOverlays(DVDVideoPicture* pSource, double pts)
 {
@@ -1146,6 +1120,10 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
       }
       return result | EOS_DROPPED;
     }
+    else if (pts_org < iPlayingClock)
+    {
+      return result | EOS_DROPPED;
+    }
 
     if (iSleepTime > DVD_MSEC_TO_TIME(20))
       iSleepTime = DVD_MSEC_TO_TIME(20);
@@ -1165,9 +1143,6 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
       m_droppingStats.AddOutputDropGain(pts, 1/m_fFrameRate);
       return result | EOS_DROPPED;
     }
-
-    if (iSleepTime > DVD_MSEC_TO_TIME(20))
-      iSleepTime = DVD_MSEC_TO_TIME(20);
   }
 
   // sync clock if we are master
@@ -1205,7 +1180,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts)
   int maxWaitTime = std::max(DVD_TIME_TO_MSEC(iSleepTime) + 500, 50);
   // don't wait when going ff
   if (m_speed > DVD_PLAYSPEED_NORMAL)
-    maxWaitTime = 0;
+    maxWaitTime = std::max(DVD_TIME_TO_MSEC(iSleepTime), 0);
   int buffer = g_renderManager.WaitForBuffer(m_bStop, maxWaitTime);
   if (buffer < 0)
   {
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.h b/xbmc/cores/dvdplayer/DVDPlayerVideo.h
index 68e5210..3e0d065 100644
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.h
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.h
@@ -74,7 +74,7 @@ public:
   void WaitForBuffers()                             { m_messageQueue.WaitUntilEmpty(); }
   bool AcceptsData() const                          { return !m_messageQueue.IsFull(); }
   bool HasData() const                              { return m_messageQueue.GetDataSize() > 0; }
-  int  GetLevel() const;
+  int  GetLevel() const                             { return m_messageQueue.GetLevel(); }
   bool IsInited() const                             { return m_messageQueue.IsInited(); }
   void SendMessage(CDVDMsg* pMsg, int priority = 0) { m_messageQueue.Put(pMsg, priority); }
   void FlushMessages()                              { m_messageQueue.Flush(); }
diff --git a/xbmc/dbwrappers/mysqldataset.cpp b/xbmc/dbwrappers/mysqldataset.cpp
index 53e6e41..34c2477 100644
--- a/xbmc/dbwrappers/mysqldataset.cpp
+++ b/xbmc/dbwrappers/mysqldataset.cpp
@@ -277,7 +277,7 @@ int MysqlDatabase::copy(const char *backup_name) {
       if ( (ret=query_with_reconnect(sql)) != MYSQL_OK )
       {
         mysql_free_result(res);
-        throw DbErrors("Can't copy schema for table '%s'\nError: %s", db.c_str(), ret);
+        throw DbErrors("Can't copy schema for table '%s'\nError: %d", db.c_str(), ret);
       }
 
       // copy the table data
@@ -380,7 +380,7 @@ int MysqlDatabase::drop_analytics(void) {
       if ( (ret=query_with_reconnect(sql)) != MYSQL_OK )
       {
         mysql_free_result(res);
-        throw DbErrors("Can't create trigger '%s'\nError: %s", row[0], ret);
+        throw DbErrors("Can't create trigger '%s'\nError: %d", row[0], ret);
       }
     }
     mysql_free_result(res);
diff --git a/xbmc/epg/GUIEPGGridContainer.cpp b/xbmc/epg/GUIEPGGridContainer.cpp
index 5d28b97..113948a 100644
--- a/xbmc/epg/GUIEPGGridContainer.cpp
+++ b/xbmc/epg/GUIEPGGridContainer.cpp
@@ -44,8 +44,6 @@ using namespace EPG;
 #define BLOCKJUMP    4 // how many blocks are jumped with each analogue scroll action
 #define BLOCK_SCROLL_OFFSET 60 / MINSPERBLOCK // how many blocks are jumped if we are at left/right edge of grid
 
-#define MAX_UPDATE_FREQUENCY 3000 // Do at maximum 1 grid data update in MAX_UPDATE_FREQUENCY milliseconds
-
 CGUIEPGGridContainer::CGUIEPGGridContainer(int parentID, int controlID, float posX, float posY, float width,
                                            float height, int scrollTime, int preloadItems, int timeBlocks, int rulerUnit,
                                            const CTextureInfo& progressIndicatorTexture)
@@ -158,8 +156,8 @@ CGUIEPGGridContainer::CGUIEPGGridContainer(const CGUIEPGGridContainer &other)
   m_channelScrollLastTime   = other.m_channelScrollLastTime;
   m_channelScrollSpeed      = other.m_channelScrollSpeed;
   m_channelScrollOffset     = other.m_channelScrollOffset;
-  m_nextUpdateTimeout       = other.m_nextUpdateTimeout;
 }
+
 CGUIEPGGridContainer::~CGUIEPGGridContainer(void)
 {
   Reset();
@@ -803,7 +801,7 @@ bool CGUIEPGGridContainer::OnMessage(CGUIMessage& message)
         return true;
 
       case GUI_MSG_LABEL_BIND:
-        if (message.GetPointer() && m_nextUpdateTimeout.IsTimePast())
+        if (message.GetPointer())
         {
           CSingleLock lock(m_critSection);
 
@@ -889,10 +887,7 @@ bool CGUIEPGGridContainer::OnMessage(CGUIMessage& message)
           {
             // Grid index got recreated. Do cursors and offsets still point to the same epg tag?
             if (prevSelectedEpgTag == GetSelectedEpgInfoTag())
-            {
-              m_nextUpdateTimeout.Set(MAX_UPDATE_FREQUENCY); // TODO ksooo: Refactor to have only one return statement.
               return true;
-            }
 
             int newChannelCursor = GetChannel(prevSelectedEpgTag);
             if (newChannelCursor >= 0)
@@ -901,10 +896,7 @@ bool CGUIEPGGridContainer::OnMessage(CGUIMessage& message)
               if (newBlockCursor >= 0)
               {
                 if (newChannelCursor == m_channelCursor && newBlockCursor == m_blockCursor)
-                {
-                  m_nextUpdateTimeout.Set(MAX_UPDATE_FREQUENCY); // TODO ksooo: Refactor to have only one return statement.
                   return true;
-                }
 
                 if (newBlockCursor > 0 && newBlockCursor != m_blockCursor)
                 {
@@ -919,10 +911,7 @@ bool CGUIEPGGridContainer::OnMessage(CGUIMessage& message)
                 }
 
                 if (newBlockCursor > 0)
-                {
-                  m_nextUpdateTimeout.Set(MAX_UPDATE_FREQUENCY); // TODO ksooo: Refactor to have only one return statement.
                   return true;
-                }
               }
             }
           }
@@ -935,7 +924,6 @@ bool CGUIEPGGridContainer::OnMessage(CGUIMessage& message)
           SetInvalid();
           GoToNow();
 
-          m_nextUpdateTimeout.Set(MAX_UPDATE_FREQUENCY); // TODO ksooo: Refactor to have only one return statement.
           return true;
         }
         break;
diff --git a/xbmc/epg/GUIEPGGridContainer.h b/xbmc/epg/GUIEPGGridContainer.h
index 5ef0030..7ad1824 100644
--- a/xbmc/epg/GUIEPGGridContainer.h
+++ b/xbmc/epg/GUIEPGGridContainer.h
@@ -24,7 +24,6 @@
 #include "guilib/GUIControl.h"
 #include "guilib/GUIListItemLayout.h"
 #include "guilib/IGUIContainer.h"
-#include "threads/SystemClock.h"
 
 namespace EPG
 {
@@ -229,7 +228,5 @@ namespace EPG
     float m_channelScrollOffset;
 
     CCriticalSection m_critSection;
-
-    XbmcThreads::EndTime m_nextUpdateTimeout;
   };
 }
diff --git a/xbmc/filesystem/DirectoryFactory.cpp b/xbmc/filesystem/DirectoryFactory.cpp
index 052ac09..10d08ef 100644
--- a/xbmc/filesystem/DirectoryFactory.cpp
+++ b/xbmc/filesystem/DirectoryFactory.cpp
@@ -167,6 +167,10 @@ IDirectory* CDirectoryFactory::Create(const CURL& url)
 #if defined(TARGET_ANDROID)
   if (url.IsProtocol("androidapp")) return new CAndroidAppDirectory();
 #endif
+#ifdef HAVE_LIBBLURAY
+  if (url.IsProtocol("bluray")) return new CBlurayDirectory();
+#endif
+  if (url.IsProtocol("resource")) return new CResourceDirectory();
 
   bool networkAvailable = g_application.getNetwork().IsAvailable(true); // true to wait for the network (if possible)
   if (networkAvailable)
@@ -204,10 +208,6 @@ IDirectory* CDirectoryFactory::Create(const CURL& url)
 #ifdef HAS_FILESYSTEM_NFS
     if (url.IsProtocol("nfs")) return new CNFSDirectory();
 #endif
-#ifdef HAVE_LIBBLURAY
-      if (url.IsProtocol("bluray")) return new CBlurayDirectory();
-#endif
-      if (url.IsProtocol("resource")) return new CResourceDirectory();
   }
 
   CLog::Log(LOGWARNING, "%s - %sunsupported protocol(%s) in %s", __FUNCTION__, networkAvailable ? "" : "Network down or ", url.GetProtocol().c_str(), url.GetRedacted().c_str() );
diff --git a/xbmc/filesystem/FileFactory.cpp b/xbmc/filesystem/FileFactory.cpp
index c34bd13..fcf66ca 100644
--- a/xbmc/filesystem/FileFactory.cpp
+++ b/xbmc/filesystem/FileFactory.cpp
@@ -143,6 +143,11 @@ IFile* CFileFactory::CreateLoader(const CURL& url)
 #if defined(TARGET_ANDROID)
   else if (url.IsProtocol("androidapp")) return new CFileAndroidApp();
 #endif
+  else if (url.IsProtocol("pipe")) return new CPipeFile();
+#ifdef HAVE_LIBBLURAY
+  else if (url.IsProtocol("bluray")) return new CBlurayFile();
+#endif
+  else if (url.IsProtocol("resource")) return new CResourceFile();
 
   bool networkAvailable = g_application.getNetwork().IsAvailable();
   if (networkAvailable)
@@ -174,14 +179,9 @@ IFile* CFileFactory::CreateLoader(const CURL& url)
 #ifdef HAS_FILESYSTEM_NFS
     else if (url.IsProtocol("nfs")) return new CNFSFile();
 #endif
-    else if (url.IsProtocol("pipe")) return new CPipeFile();    
 #ifdef HAS_UPNP
     else if (url.IsProtocol("upnp")) return new CUPnPFile();
 #endif
-#ifdef HAVE_LIBBLURAY
-    else if (url.IsProtocol("bluray")) return new CBlurayFile();
-#endif
-    else if (url.IsProtocol("resource")) return new CResourceFile();
   }
 
   CLog::Log(LOGWARNING, "%s - %sunsupported protocol(%s) in %s", __FUNCTION__, networkAvailable ? "" : "Network down or ", url.GetProtocol().c_str(), url.GetRedacted().c_str());
diff --git a/xbmc/guilib/GUIButtonControl.cpp b/xbmc/guilib/GUIButtonControl.cpp
index 996502b..eb8c401 100644
--- a/xbmc/guilib/GUIButtonControl.cpp
+++ b/xbmc/guilib/GUIButtonControl.cpp
@@ -256,6 +256,7 @@ bool CGUIButtonControl::UpdateColors()
 {
   bool changed = CGUIControl::UpdateColors();
   changed |= m_label.UpdateColors();
+  changed |= m_label2.UpdateColors();
   changed |= m_imgFocus.SetDiffuseColor(m_diffuseColor);
   changed |= m_imgNoFocus.SetDiffuseColor(m_diffuseColor);
 
diff --git a/xbmc/guilib/GUISettingsSliderControl.cpp b/xbmc/guilib/GUISettingsSliderControl.cpp
index 7efc895..76672d7 100644
--- a/xbmc/guilib/GUISettingsSliderControl.cpp
+++ b/xbmc/guilib/GUISettingsSliderControl.cpp
@@ -136,6 +136,7 @@ bool CGUISettingsSliderControl::UpdateColors()
   bool changed = CGUISliderControl::UpdateColors();
   changed |= m_buttonControl.SetColorDiffuse(m_diffuseColor);
   changed |= m_buttonControl.UpdateColors();
+  changed |= m_label.UpdateColors();
 
   return changed;
 }
diff --git a/xbmc/guilib/GUISliderControl.cpp b/xbmc/guilib/GUISliderControl.cpp
index a076f13..3ef9345 100644
--- a/xbmc/guilib/GUISliderControl.cpp
+++ b/xbmc/guilib/GUISliderControl.cpp
@@ -554,13 +554,19 @@ EVENT_RESULT CGUISliderControl::OnMouseEvent(const CPoint &point, const CMouseEv
   }
   else if (event.m_id == ACTION_MOUSE_WHEEL_UP)
   {
-    Move(10);
-    return EVENT_RESULT_HANDLED;
+    if (m_guiBackground.HitTest(point))
+    {
+      Move(10);
+      return EVENT_RESULT_HANDLED;
+    }
   }
   else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN)
   {
-    Move(-10);
-    return EVENT_RESULT_HANDLED;
+    if (m_guiBackground.HitTest(point))
+    {
+      Move(-10);
+      return EVENT_RESULT_HANDLED;
+    }
   }
   else if (event.m_id == ACTION_GESTURE_NOTIFY)
   {
diff --git a/xbmc/guilib/GUISpinControl.cpp b/xbmc/guilib/GUISpinControl.cpp
index 57a9f6f..78e320a 100644
--- a/xbmc/guilib/GUISpinControl.cpp
+++ b/xbmc/guilib/GUISpinControl.cpp
@@ -948,13 +948,19 @@ EVENT_RESULT CGUISpinControl::OnMouseEvent(const CPoint &point, const CMouseEven
   }
   else if (event.m_id == ACTION_MOUSE_WHEEL_UP)
   {
-    MoveUp();
-    return EVENT_RESULT_HANDLED;
+    if (m_imgspinUpFocus.HitTest(point) || m_imgspinDownFocus.HitTest(point))
+    {
+      MoveUp();
+      return EVENT_RESULT_HANDLED;
+    }
   }
   else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN)
   {
-    MoveDown();
-    return EVENT_RESULT_HANDLED;
+    if (m_imgspinUpFocus.HitTest(point) || m_imgspinDownFocus.HitTest(point))
+    {
+      MoveDown();
+      return EVENT_RESULT_HANDLED;
+    }
   }
   return EVENT_RESULT_UNHANDLED;
 }
diff --git a/xbmc/guilib/GUITextBox.cpp b/xbmc/guilib/GUITextBox.cpp
index dd78377..2cdbf1c 100644
--- a/xbmc/guilib/GUITextBox.cpp
+++ b/xbmc/guilib/GUITextBox.cpp
@@ -239,7 +239,11 @@ void CGUITextBox::Render()
     {
       m_font->Begin();
       int current = offset;
-      m_colors.push_back(m_textColor);
+
+      // set the main text color
+      if (m_colors.size())
+        m_colors[0] = m_label.textColor;
+
       while (posY < m_posY + m_renderHeight && current < (int)m_lines.size())
       {
         uint32_t align = alignment;
diff --git a/xbmc/guilib/GUIWindowManager.cpp b/xbmc/guilib/GUIWindowManager.cpp
index 6030c4c..aa6713d 100644
--- a/xbmc/guilib/GUIWindowManager.cpp
+++ b/xbmc/guilib/GUIWindowManager.cpp
@@ -67,6 +67,7 @@
 #include "windows/GUIWindowScreensaver.h"
 #include "windows/GUIWindowScreensaverDim.h"
 #include "pictures/GUIWindowSlideShow.h"
+#include "windows/GUIWindowSplash.h"
 #include "windows/GUIWindowStartup.h"
 #include "video/windows/GUIWindowFullScreen.h"
 #include "video/dialogs/GUIDialogVideoOSD.h"
@@ -164,6 +165,7 @@ CGUIWindowManager::~CGUIWindowManager(void)
 void CGUIWindowManager::Initialize()
 {
   m_tracker.SelectAlgorithm();
+
   m_initialized = true;
 
   LoadNotOnDemandWindows();
@@ -291,12 +293,14 @@ void CGUIWindowManager::CreateWindows()
   Add(new CGUIWindowScreensaver);
   Add(new CGUIWindowWeather);
   Add(new CGUIWindowStartup);
+  Add(new CGUIWindowSplash);
 }
 
 bool CGUIWindowManager::DestroyWindows()
 {
   try
   {
+    Delete(WINDOW_SPLASH);
     Delete(WINDOW_MUSIC_PLAYLIST);
     Delete(WINDOW_MUSIC_PLAYLIST_EDITOR);
     Delete(WINDOW_MUSIC_FILES);
diff --git a/xbmc/guilib/WindowIDs.h b/xbmc/guilib/WindowIDs.h
index 2548e2b..145496e 100644
--- a/xbmc/guilib/WindowIDs.h
+++ b/xbmc/guilib/WindowIDs.h
@@ -157,6 +157,7 @@
 #define WINDOW_DIALOG_VIDEO_OVERLAY       12904
 #define WINDOW_VIDEO_TIME_SEEK            12905 // virtual window for time seeking during fullscreen video
 
+#define WINDOW_SPLASH                     12997 // splash window
 #define WINDOW_START                      12998 // first window to load
 #define WINDOW_STARTUP_ANIM               12999 // for startup animations
 
diff --git a/xbmc/interfaces/legacy/Addon.h b/xbmc/interfaces/legacy/Addon.h
index 58c1813..f1f6921 100644
--- a/xbmc/interfaces/legacy/Addon.h
+++ b/xbmc/interfaces/legacy/Addon.h
@@ -104,7 +104,7 @@ namespace XBMCAddon
        * *Note, You can use the above as keywords for arguments.
        * 
        * example:
-       *   - self.Settings.setSetting(id='username', value='teamxbmc')\n
+       *   - self.Addon.setSetting(id='username', value='teamxbmc')\n
        */
       void setSetting(const char* id, const String& value);
 
@@ -112,7 +112,7 @@ namespace XBMCAddon
        * openSettings() -- Opens this scripts settings dialog.
        * 
        * example:
-       *   - self.Settings.openSettings()
+       *   - self.Addon.openSettings()
        */
       void openSettings();
 
diff --git a/xbmc/interfaces/legacy/Control.h b/xbmc/interfaces/legacy/Control.h
index cadfb78..10430eb 100644
--- a/xbmc/interfaces/legacy/Control.h
+++ b/xbmc/interfaces/legacy/Control.h
@@ -126,7 +126,7 @@ namespace XBMCAddon
       // setVisibleCondition() Method
       /**
        * setVisibleCondition(visible[,allowHiddenFocus]) -- Set's the control's visible condition.
-       *     Allows XBMC to control the visible status of the control.
+       *     Allows Kodi to control the visible status of the control.
        * 
        * visible          : string - Visible condition.\n
        * allowHiddenFocus : bool - True=gains focus even if hidden.
@@ -141,7 +141,7 @@ namespace XBMCAddon
       // setEnableCondition() Method
       /**
        * setEnableCondition(enable) -- Set's the control's enabled condition.
-       *     Allows XBMC to control the enabled status of the control.
+       *     Allows Kodi to control the enabled status of the control.
        * 
        * enable           : string - Enable condition.
        * 
diff --git a/xbmc/interfaces/legacy/Dialog.h b/xbmc/interfaces/legacy/Dialog.h
index 5cc7c3e..9fc9694 100644
--- a/xbmc/interfaces/legacy/Dialog.h
+++ b/xbmc/interfaces/legacy/Dialog.h
@@ -56,7 +56,7 @@ namespace XBMCAddon
        * yesno(heading, line1[, line2, line3]) -- Show a dialog 'YES/NO'.\n
        * \n
        * heading        : string or unicode - dialog heading.\n
-       * line1          : string or unicode - line #1 text.\n
+       * line1          : string or unicode - line #1 multi-line text.\n
        * line2          : [opt] string or unicode - line #2 text.\n
        * line3          : [opt] string or unicode - line #3 text.\n
        * nolabel        : [opt] label to put on the no button.\n
@@ -64,11 +64,11 @@ namespace XBMCAddon
        * autoclose      : [opt] integer - milliseconds to autoclose dialog. (default=do not autoclose)\n
        * \n
        * *Note, Returns True if 'Yes' was pressed, else False.\n
-       * *Note, Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+       * *Note, it is preferred to only use line1 as it is actually a multi-line text. In this case line2 and line3 must be omitted.\n
        * \n
        * example:\n
        *   - dialog = xbmcgui.Dialog()\n
-       *   - ret = dialog.yesno('XBMC', 'Do you want to exit this script?')n\n
+       *   - ret = dialog.yesno('Kodi', 'Do you want to exit this script?')n\n
        */
       bool yesno(const String& heading, const String& line1, 
                  const String& line2 = emptyString,
@@ -96,12 +96,12 @@ namespace XBMCAddon
        * ok(heading, line1[, line2, line3]) -- Show a dialog 'OK'.\n
        * \n
        * heading        : string or unicode - dialog heading.\n
-       * line1          : string or unicode - line #1 text.\n
+       * line1          : string or unicode - line #1 multi-line text.\n
        * line2          : [opt] string or unicode - line #2 text.\n
        * line3          : [opt] string or unicode - line #3 text.\n
        * \n
        * *Note, Returns True if 'Ok' was pressed, else False.\n
-       * *Note: Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+       * *Note, it is preferred to only use line1 as it is actually a multi-line text. In this case line2 and line3 must be omitted.\n
        * \n
        * example:\n
        *   - dialog = xbmcgui.Dialog()\n
@@ -306,11 +306,11 @@ namespace XBMCAddon
        * create(heading[, line1, line2, line3]) -- Create and show a progress dialog.\n
        * \n
        * heading        : string or unicode - dialog heading.\n
-       * line1          : [opt] string or unicode - line #1 text.\n
+       * line1          : [opt] string or unicode - line #1 multi-line text.\n
        * line2          : [opt] string or unicode - line #2 text.\n
        * line3          : [opt] string or unicode - line #3 text.\n
        * \n
-       * *Note, Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+       * *Note, it is preferred to only use line1 as it is actually a multi-line text. In this case line2 and line3 must be omitted.\n
        * *Note, Use update() to update lines and progressbar.\n
        * \n
        * example:
@@ -325,11 +325,11 @@ namespace XBMCAddon
        * update(percent[, line1, line2, line3]) -- Updates the progress dialog.\n
        * \n
        * percent        : integer - percent complete. (0:100)\n
-       * line1          : [opt] string or unicode - line #1 text.\n
+       * line1          : [opt] string or unicode - line #1 multi-line text.\n
        * line2          : [opt] string or unicode - line #2 text.\n
        * line3          : [opt] string or unicode - line #3 text.\n
        * \n
-       * *Note, Optionally line1 can be sent as multi-line text. In this case line2 and line3 must be omitted.\n
+       * *Note, it is preferred to only use line1 as it is actually a multi-line text. In this case line2 and line3 must be omitted.\n
        * *Note, If percent == 0, the progressbar will be hidden.\n
        * \n
        * example:
diff --git a/xbmc/interfaces/legacy/ListItem.h b/xbmc/interfaces/legacy/ListItem.h
index a933300..c841068 100644
--- a/xbmc/interfaces/legacy/ListItem.h
+++ b/xbmc/interfaces/legacy/ListItem.h
@@ -199,8 +199,8 @@ namespace XBMCAddon
        *     - watched       : depreciated - use playcount instead
        *     - playcount     : integer (2) - number of times this item has been played
        *     - overlay       : integer (2) - range is 0..8.  See GUIListItem.h for values
-       *     - cast          : list (Michal C. Hall)
-       *     - castandrole   : list (Michael C. Hall|Dexter)
+       *     - cast          : list (["Michal C. Hall","Jennifer Carpenter"]) - if provided a list of tuples cast will be interpreted as castandrole
+       *     - castandrole   : list of tuples ([("Michael C. Hall","Dexter"),("Jennifer Carpenter","Debra")])
        *     - director      : string (Dagur Kari)
        *     - mpaa          : string (PG-13)
        *     - plot          : string (Long Description)
@@ -243,7 +243,7 @@ namespace XBMCAddon
        *     - exif*         : string (See CPictureInfoTag::TranslateString in PictureInfoTag.cpp for valid strings)
        * 
        * example:\n
-       *   - self.list.getSelectedItem().setInfo('video', { 'Genre': 'Comedy' })n\n
+       *   - self.list.getSelectedItem().setInfo('video', { 'genre': 'Comedy' })n\n
        */
       void setInfo(const char* type, const InfoLabelDict& infoLabels);
 
@@ -267,7 +267,7 @@ namespace XBMCAddon
        *     - language      : string (en)
        * 
        * example:
-       *   - self.list.getSelectedItem().addStreamInfo('video', { 'Codec': 'h264', 'Width' : 1280 })
+       *   - self.list.getSelectedItem().addStreamInfo('video', { 'codec': 'h264', 'width' : 1280 })
        */
       void addStreamInfo(const char* cType, const Properties& dictionary);
 
@@ -340,7 +340,7 @@ namespace XBMCAddon
        * \n
        * mimetype           : string or unicode - mimetype.\n
        * \n
-       * *If known prehand, this can avoid xbmc doing HEAD requests to http servers to figure out file type.\n
+       * *If known prehand, this can avoid Kodi doing HEAD requests to http servers to figure out file type.\n
        */
       void setMimeType(const String& mimetype);
 
diff --git a/xbmc/interfaces/legacy/ModuleXbmc.h b/xbmc/interfaces/legacy/ModuleXbmc.h
index cde3dd4..9817525 100644
--- a/xbmc/interfaces/legacy/ModuleXbmc.h
+++ b/xbmc/interfaces/legacy/ModuleXbmc.h
@@ -44,9 +44,9 @@ namespace XBMCAddon
      *        Once you use a keyword, all following arguments require the keyword.\n
      * \n
      * Text is written to the log for the following conditions.\n
-     *           XBMC loglevel == -1 (NONE, nothing at all is logged)\n
-     *           XBMC loglevel == 0 (NORMAL, shows LOGNOTICE, LOGERROR, LOGSEVERE and LOGFATAL)\n
-     *           XBMC loglevel == 1 (DEBUG, shows all)\n
+     *           - loglevel == -1 (NONE, nothing at all is logged)
+     *           - loglevel == 0 (NORMAL, shows LOGNOTICE, LOGERROR, LOGSEVERE and LOGFATAL)
+     *           - loglevel == 1 (DEBUG, shows all)
      *           See pydocs for valid values for level.\n
      *           
      *           example:
@@ -80,7 +80,7 @@ namespace XBMCAddon
     void executescript(const char* script);
 
     /**
-     * executebuiltin(function) -- Execute a built in XBMC function.
+     * executebuiltin(function) -- Execute a built in Kodi function.
      * 
      * function       : string - builtin function to execute.
      * 
diff --git a/xbmc/interfaces/legacy/ModuleXbmcplugin.h b/xbmc/interfaces/legacy/ModuleXbmcplugin.h
index f89e220..d610677 100644
--- a/xbmc/interfaces/legacy/ModuleXbmcplugin.h
+++ b/xbmc/interfaces/legacy/ModuleXbmcplugin.h
@@ -47,7 +47,7 @@ namespace XBMCAddon
                           bool isFolder = false, int totalItems = 0);
 
     /**
-     * addDirectoryItems(handle, items [,totalItems]) -- Callback function to pass directory contents back to XBMC as a list.
+     * addDirectoryItems(handle, items [,totalItems]) -- Callback function to pass directory contents back to Kodi as a list.
      *  - Returns a bool for successful completion.
      * 
      * handle      : integer - handle the plugin was started with.\n
@@ -65,7 +65,7 @@ namespace XBMCAddon
                            int totalItems = 0);
 
     /**
-     * endOfDirectory(handle[, succeeded, updateListing, cacheToDisc]) -- Callback function to tell XBMC that the end of the directory listing in a virtualPythonFolder module is reached.
+     * endOfDirectory(handle[, succeeded, updateListing, cacheToDisc]) -- Callback function to tell Kodi that the end of the directory listing in a virtualPythonFolder module is reached.
      * 
      * handle           : integer - handle the plugin was started with.\n
      * succeeded        : [opt] bool - True=script completed successfully(Default)/False=Script did not.\n
@@ -79,7 +79,7 @@ namespace XBMCAddon
                         bool cacheToDisc = true);
 
     /**
-     * setResolvedUrl(handle, succeeded, listitem) -- Callback function to tell XBMC that the file plugin has been resolved to a url
+     * setResolvedUrl(handle, succeeded, listitem) -- Callback function to tell Kodi that the file plugin has been resolved to a url
      * 
      * handle           : integer - handle the plugin was started with.\n
      * succeeded        : bool - True=script completed successfully/False=Script did not.\n
@@ -91,10 +91,10 @@ namespace XBMCAddon
     void setResolvedUrl(int handle, bool succeeded, const XBMCAddon::xbmcgui::ListItem* listitem);
 
     /**
-     * addSortMethod(handle, sortMethod, label2Mask) -- Adds a sorting method for the media list.
+     * addSortMethod(handle, sortMethod [,label2Mask]) -- Adds a sorting method for the media list.
      * 
      * handle      : integer - handle the plugin was started with.\n
-     * sortMethod  : integer - number for sortmethod see SortFileItem.h.\n
+     * sortMethod  : integer - see available sort methods at the bottom (or see SortFileItem.h).\n
      * label2Mask  : [opt] string - the label mask to use for the second label.  Defaults to '%D'
      *               - applies to:
      *                           - SORT_METHOD_NONE, SORT_METHOD_UNSORTED, SORT_METHOD_VIDEO_TITLE,
@@ -103,9 +103,10 @@ namespace XBMCAddon
      *                           - SORT_METHOD_LABEL_IGNORE_THE, SORT_METHOD_VIDEO_SORT_TITLE,
      *                           - SORT_METHOD_VIDEO_SORT_TITLE_IGNORE_THE, SORT_METHOD_FULLPATH,
      *                           - SORT_METHOD_LABEL_IGNORE_FOLDERS, SORT_METHOD_CHANNEL
-     * 
+     *  *Note: to add multiple sort methods just call the method multiple times.
+     *
      * example:
-     *   - xbmcplugin.addSortMethod(int(sys.argv[1]), 1)
+     *   - xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORTMETHOD_DATEADDED)
      */
     void addSortMethod(int handle, int sortMethod, const String& label2Mask = emptyString);
 
diff --git a/xbmc/interfaces/legacy/Monitor.h b/xbmc/interfaces/legacy/Monitor.h
index fa94c49..7312fbd 100644
--- a/xbmc/interfaces/legacy/Monitor.h
+++ b/xbmc/interfaces/legacy/Monitor.h
@@ -159,7 +159,7 @@ namespace XBMCAddon
        * method : name of the notification\n
        * data   : JSON-encoded data of the notification\n
        *\n
-       * Will be called when XBMC receives or sends a notification\n
+       * Will be called when Kodi receives or sends a notification\n
        */
       virtual void    onNotification(const String sender, const String method, const String data) { XBMC_TRACE; }
 
diff --git a/xbmc/interfaces/legacy/Player.h b/xbmc/interfaces/legacy/Player.h
index 1908f51..551d7e3 100644
--- a/xbmc/interfaces/legacy/Player.h
+++ b/xbmc/interfaces/legacy/Player.h
@@ -124,7 +124,7 @@ namespace XBMCAddon
       /**
        * onPlayBackStarted() -- onPlayBackStarted method.
        * 
-       * Will be called when xbmc starts playing a file
+       * Will be called when Kodi starts playing a file
        */
       // Player_OnPlayBackStarted
       virtual void onPlayBackStarted();
@@ -133,7 +133,7 @@ namespace XBMCAddon
       /**
        * onPlayBackEnded() -- onPlayBackEnded method.
        * 
-       * Will be called when xbmc stops playing a file
+       * Will be called when Kodi stops playing a file
        */
       // Player_OnPlayBackEnded
       virtual void onPlayBackEnded();
@@ -141,7 +141,7 @@ namespace XBMCAddon
       /**
        * onPlayBackStopped() -- onPlayBackStopped method.
        * 
-       * Will be called when user stops xbmc playing a file
+       * Will be called when user stops Kodi playing a file
        */
       // Player_OnPlayBackStopped
       virtual void onPlayBackStopped();
@@ -200,19 +200,19 @@ namespace XBMCAddon
       virtual void onPlayBackSeekChapter(int chapter);
 
       /**
-       * isPlaying() -- returns True is xbmc is playing a file.
+       * isPlaying() -- returns True is Kodi is playing a file.
        */
       // Player_IsPlaying
       bool isPlaying();
 
       /**
-       * isPlayingAudio() -- returns True is xbmc is playing an audio file.
+       * isPlayingAudio() -- returns True is Kodi is playing an audio file.
        */
       // Player_IsPlayingAudio
       bool isPlayingAudio();
 
       /**
-       * isPlayingVideo() -- returns True if xbmc is playing a video.
+       * isPlayingVideo() -- returns True if Kodi is playing a video.
        */
       // Player_IsPlayingVideo
       bool isPlayingVideo();
diff --git a/xbmc/interfaces/legacy/WindowXML.h b/xbmc/interfaces/legacy/WindowXML.h
index fb65314..e166189 100644
--- a/xbmc/interfaces/legacy/WindowXML.h
+++ b/xbmc/interfaces/legacy/WindowXML.h
@@ -40,14 +40,14 @@ namespace XBMCAddon
      * WindowXML(self, xmlFilename, scriptPath[, defaultSkin, defaultRes]) -- Create a new WindowXML script.
      * 
      * xmlFilename     : string - the name of the xml file to look for.\n
-     * scriptPath      : string - path to script. used to fallback to if the xml doesn't exist in the current skin. (eg os.getcwd())\n
+     * scriptPath      : string - path to script. used to fallback to if the xml doesn't exist in the current skin. (eg xbmcaddon.Addon().getAddonInfo('path').decode('utf-8'))\n
      * defaultSkin     : [opt] string - name of the folder in the skins path to look in for the xml. (default='Default')\n
      * defaultRes      : [opt] string - default skins resolution. (default='720p')
      * 
      * *Note, skin folder structure is eg(resources/skins/Default/720p)
      * 
      * example:\n
-     *  - ui = GUI('script-Lyrics-main.xml', os.getcwd(), 'LCARS', 'PAL')\n
+     *  - ui = GUI('script-Lyrics-main.xml', xbmcaddon.Addon().getAddonInfo('path').decode('utf-8'), 'default', '1080p')\n
      *    ui.doModal()\n
      *    del ui
      */
@@ -209,14 +209,14 @@ namespace XBMCAddon
      * WindowXMLDialog(self, xmlFilename, scriptPath[, defaultSkin, defaultRes]) -- Create a new WindowXMLDialog script.
      * 
      * xmlFilename     : string - the name of the xml file to look for.\n
-     * scriptPath      : string - path to script. used to fallback to if the xml doesn't exist in the current skin. (eg os.getcwd())\n
+     * scriptPath      : string - path to script. used to fallback to if the xml doesn't exist in the current skin. (eg xbmcaddon.Addon().getAddonInfo('path').decode('utf-8'))\n
      * defaultSkin     : [opt] string - name of the folder in the skins path to look in for the xml. (default='Default')\n
      * defaultRes      : [opt] string - default skins resolution. (default='720p')
      * 
      * *Note, skin folder structure is eg(resources/skins/Default/720p)
      * 
      * example:
-     *  - ui = GUI('script-Lyrics-main.xml', os.getcwd(), 'LCARS', 'PAL')
+     *  - ui = GUI('script-Lyrics-main.xml', xbmcaddon.Addon().getAddonInfo('path').decode('utf-8'), 'default', '1080p')
      *  - ui.doModal()
      *  - del ui
      */
diff --git a/xbmc/messaging/Makefile b/xbmc/messaging/Makefile
new file mode 100644
index 0000000..976e0b8
--- /dev/null
+++ b/xbmc/messaging/Makefile
@@ -0,0 +1,7 @@
+SRCS = ApplicationMessenger.cpp
+
+LIB = messaging.a
+
+include /Users/haggi/Home/devs/workspace/xbmc/Makefile.include
+-include $(patsubst %.cpp,%.P,$(patsubst %c,%.P,$(patsubst %.S,,$(SRCS))))
+
diff --git a/xbmc/osx/CocoaInterface.mm b/xbmc/osx/CocoaInterface.mm
index a827af9..252d9d3 100644
--- a/xbmc/osx/CocoaInterface.mm
+++ b/xbmc/osx/CocoaInterface.mm
@@ -286,54 +286,32 @@ char* Cocoa_MountPoint2DeviceName(char *path)
 bool Cocoa_GetVolumeNameFromMountPoint(const std::string &mountPoint, std::string &volumeName)
 {
   CCocoaAutoPool pool;
-  unsigned i, count = 0;
-  struct statfs *buf = NULL;
-  std::string mountpoint, devicepath;
-
-  count = getmntinfo(&buf, 0);
-  for (i=0; i<count; i++)
+  NSFileManager *fm = [NSFileManager defaultManager];
+  NSArray *mountedVolumeUrls = [fm mountedVolumeURLsIncludingResourceValuesForKeys:@[ NSURLVolumeNameKey, NSURLPathKey ] options:0];
+  bool resolved = false;
+  
+  for (NSURL *volumeURL in mountedVolumeUrls)
   {
-    mountpoint = buf[i].f_mntonname;
-    if (mountpoint == mountPoint)
+    NSString *path;
+    BOOL success = [volumeURL getResourceValue:&path forKey:NSURLPathKey error:nil];
+    
+    if (success && path != nil)
     {
-      devicepath = buf[i].f_mntfromname;
-      break;
+      std::string mountpoint = [path UTF8String];
+      if (mountpoint == mountPoint)
+      {
+        NSString *name;
+        success = [volumeURL getResourceValue:&name forKey:NSURLVolumeNameKey error:nil];
+        if (success && name != nil)
+        {
+          volumeName = [name UTF8String];
+          resolved = true;
+          break;
+        }
+      }
     }
   }
-  if (devicepath.empty())
-  {
-    return false;
-  }
-
-  DASessionRef session = DASessionCreate(kCFAllocatorDefault);
-  if (!session)
-  {
-      return false;
-  }
-
-  DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, session, devicepath.c_str());
-  if (!disk)
-  {
-      CFRelease(session);
-      return false;
-  }
-
-  NSDictionary *dd = (NSDictionary*) DADiskCopyDescription(disk);
-  if (!dd)
-  {
-      CFRelease(session);
-      CFRelease(disk);
-      return false;
-  }
-
-  NSString *volumename = [dd objectForKey:(NSString*)kDADiskDescriptionVolumeNameKey];
-  volumeName = [volumename UTF8String];
-
-  CFRelease(session);		        
-  CFRelease(disk);		        
-  [dd release];
-
-  return true ;
+  return resolved;
 }
 
 /*
diff --git a/xbmc/osx/ios/IOSKeyboardView.mm b/xbmc/osx/ios/IOSKeyboardView.mm
index 7b730e6..492f2a6 100644
--- a/xbmc/osx/ios/IOSKeyboardView.mm
+++ b/xbmc/osx/ios/IOSKeyboardView.mm
@@ -93,6 +93,10 @@ static CEvent keyboardFinishedEvent;
                                                  name:UIKeyboardDidHideNotification
                                                object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(keyboardDidChangeFrame:)
+                                                 name:UIKeyboardDidChangeFrameNotification 
+                                               object:nil];
+    [[NSNotificationCenter defaultCenter] addObserver:self
                                              selector:@selector(keyboardWillShow:)
                                                  name:UIKeyboardWillShowNotification
                                                object:nil];
@@ -176,6 +180,34 @@ static CEvent keyboardFinishedEvent;
   return YES;
 }
 
+- (void)keyboardDidChangeFrame:(id)sender
+{
+#if __IPHONE_8_0
+  // when compiled against ios 8.x sdk and runtime is ios
+  // 5.1.1 (f.e. ipad1 which has 5.1.1 as latest available ios version)
+  // there is an incompatibility which somehowe prevents us from getting
+  // notified about "keyboardDidHide". This makes the keyboard
+  // useless on those ios platforms.
+  // Instead we are called here with "DidChangeFrame" and
+  // and an invalid frame set (height, width == 0 and pos is inf).
+  // Lets detect this situation and treat this as "keyboard was hidden"
+  // message
+  if (CDarwinUtils::GetIOSVersion() < 6.0)
+  {
+    PRINT_SIGNATURE();
+
+    NSDictionary* info = [sender userInfo];
+    CGRect kbRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
+//    LOG(@"keyboardWillShow: keyboard frame: %f %f %f %f", kbRect.origin.x, kbRect.origin.y, kbRect.size.width, kbRect.size.height);
+    if (kbRect.size.height == 0)
+    {
+      LOG(@"keyboardDidChangeFrame: working around missing keyboardDidHide Message on iOS 5.x");
+      [self keyboardDidHide:sender];
+    }
+  }
+#endif
+}
+
 - (void)keyboardDidHide:(id)sender
 {
   PRINT_SIGNATURE();
diff --git a/xbmc/pvr/PVRActionListener.cpp b/xbmc/pvr/PVRActionListener.cpp
index fbd6a9a..e303a76 100644
--- a/xbmc/pvr/PVRActionListener.cpp
+++ b/xbmc/pvr/PVRActionListener.cpp
@@ -24,6 +24,7 @@
 #include "ApplicationMessenger.h"
 #include "input/Key.h"
 #include "guilib/LocalizeStrings.h"
+#include "guilib/GUIWindowManager.h"
 #include "dialogs/GUIDialogNumeric.h"
 #include "settings/AdvancedSettings.h"
 #include "settings/Settings.h"
@@ -84,7 +85,9 @@ bool CPVRActionListener::OnAction(const CAction &action)
     case REMOTE_8:
     case REMOTE_9:
     {
-      if (g_application.IsFullScreen() && g_application.CurrentFileItem().IsLiveTV())
+      if (g_application.CurrentFileItem().IsLiveTV() &&
+          (g_windowManager.IsWindowActive(WINDOW_FULLSCREEN_VIDEO) ||
+           g_windowManager.IsWindowActive(WINDOW_VISUALISATION)))
       {
         if(g_PVRManager.IsPlaying())
         {
diff --git a/xbmc/pvr/PVRGUIInfo.cpp b/xbmc/pvr/PVRGUIInfo.cpp
index 627fa77..d64b598 100644
--- a/xbmc/pvr/PVRGUIInfo.cpp
+++ b/xbmc/pvr/PVRGUIInfo.cpp
@@ -681,7 +681,14 @@ void CPVRGUIInfo::UpdateBackendCache(void)
 
   // Update the backend information for all backends once per iteration
   if (m_iCurrentActiveClient == 0)
-    m_backendProperties = g_PVRClients->GetBackendProperties();
+  {
+    std::vector<SBackend> backendProperties;
+    {
+      CSingleExit exit(m_critSection);
+      backendProperties = g_PVRClients->GetBackendProperties();
+    }
+    m_backendProperties = backendProperties;
+  }
 
   // Get the properties for the currently active backend
   const auto &backend = GetCurrentActiveBackend();
diff --git a/xbmc/pvr/PVRManager.cpp b/xbmc/pvr/PVRManager.cpp
index eb40585..19fadb2 100644
--- a/xbmc/pvr/PVRManager.cpp
+++ b/xbmc/pvr/PVRManager.cpp
@@ -92,8 +92,7 @@ CPVRManager::CPVRManager(void) :
     m_bFirstStart(true),
     m_bEpgsCreated(false),
     m_progressHandle(NULL),
-    m_managerState(ManagerStateStopped),
-    m_openWindowId(0)
+    m_managerState(ManagerStateStopped)
 {
   CAnnouncementManager::Get().AddAnnouncer(this);
   ResetProperties();
@@ -355,7 +354,6 @@ void CPVRManager::Cleanup(void)
   m_currentFile           = NULL;
   m_bIsSwitchingChannels  = false;
   m_outdatedAddons.clear();
-  m_openWindowId = 0;
   m_bEpgsCreated = false;
 
   for (unsigned int iJobPtr = 0; iJobPtr < m_pendingUpdates.size(); iJobPtr++)
@@ -389,24 +387,23 @@ void CPVRManager::ResetProperties(void)
 class CPVRManagerStartJob : public CJob
 {
 public:
-  CPVRManagerStartJob(int openWindowId = 0) :
-    m_openWindowId(openWindowId) {}
+  CPVRManagerStartJob() {}
   ~CPVRManagerStartJob(void) {}
 
   bool DoWork(void)
   {
-    g_PVRManager.Start(false, m_openWindowId);
+    g_PVRManager.Start(false);
     return true;
   }
 private:
   int m_openWindowId;
 };
 
-void CPVRManager::Start(bool bAsync /* = false */, int openWindowId /* = 0 */)
+void CPVRManager::Start(bool bAsync /* = false */)
 {
   if (bAsync)
   {
-    CPVRManagerStartJob *job = new CPVRManagerStartJob(openWindowId);
+    CPVRManagerStartJob *job = new CPVRManagerStartJob();
     CJobManager::GetInstance().AddJob(job, NULL);
     return;
   }
@@ -422,7 +419,6 @@ void CPVRManager::Start(bool bAsync /* = false */, int openWindowId /* = 0 */)
 
   ResetProperties();
   SetState(ManagerStateStarting);
-  m_openWindowId = openWindowId;
 
   /* create and open database */
   if (!m_database)
@@ -510,17 +506,6 @@ void CPVRManager::Process(void)
   CLog::Log(LOGDEBUG, "PVRManager - %s - entering main loop", __FUNCTION__);
   g_EpgContainer.Start();
 
-  /* activate startup window */
-  if (m_openWindowId > 0)
-  {
-    g_windowManager.ActivateWindow(m_openWindowId);
-    m_openWindowId = 0;
-
-    // let everyone know that the user interface is now ready for usage
-    CGUIMessage msg(GUI_MSG_NOTIFY_ALL, 0, 0, GUI_MSG_UI_READY);
-    g_windowManager.SendThreadMessage(msg);
-  }
-
   bool bRestart(false);
   while (IsStarted() && m_addons && m_addons->HasConnectedClients() && !bRestart)
   {
@@ -564,11 +549,6 @@ void CPVRManager::Process(void)
     CLog::Log(LOGNOTICE, "PVRManager - %s - no add-ons enabled anymore. restarting the pvrmanager", __FUNCTION__);
     CApplicationMessenger::Get().SetPVRManagerState(true);
   }
-  else
-  {
-    if (IsPVRWindow(g_windowManager.GetActiveWindow()))
-      g_windowManager.ActivateWindow(WINDOW_HOME);
-  }
 }
 
 bool CPVRManager::SetWakeupCommand(void)
diff --git a/xbmc/pvr/PVRManager.h b/xbmc/pvr/PVRManager.h
index 3b71ca6..fd3363e 100644
--- a/xbmc/pvr/PVRManager.h
+++ b/xbmc/pvr/PVRManager.h
@@ -148,9 +148,8 @@ namespace PVR
     /*!
      * @brief Start the PVRManager, which loads all PVR data and starts some threads to update the PVR data.
      * @param bAsync True to (re)start the manager from another thread
-     * @param openWindowId Window id to open after starting
      */
-    void Start(bool bAsync = false, int openWindowId = 0);
+    void Start(bool bAsync = false);
 
     /*!
      * @brief Stop the PVRManager and destroy all objects it created.
@@ -668,7 +667,6 @@ namespace PVR
     CCriticalSection                m_managerStateMutex;
     ManagerState                    m_managerState;
     CStopWatch                     *m_parentalTimer;
-    int                             m_openWindowId;
     std::map<std::string, std::string> m_outdatedAddons;
     static int                      m_pvrWindowIds[10];
   };
diff --git a/xbmc/pvr/addons/PVRClients.cpp b/xbmc/pvr/addons/PVRClients.cpp
index d09e195..32e0526 100644
--- a/xbmc/pvr/addons/PVRClients.cpp
+++ b/xbmc/pvr/addons/PVRClients.cpp
@@ -261,12 +261,21 @@ bool CPVRClients::GetClientName(int iClientId, std::string &strName) const
 std::vector<SBackend> CPVRClients::GetBackendProperties() const
 {
   std::vector<SBackend> backendProperties;
-  CSingleLock lock(m_critSection);
+  std::vector<PVR_CLIENT> clients;
+
+  {
+    CSingleLock lock(m_critSection);
+
+    for (PVR_CLIENTMAP_CITR itr = m_clientMap.begin(); itr != m_clientMap.end(); itr++)
+    {
+      PVR_CLIENT client = itr->second;
+      if (client)
+        clients.push_back(client);
+    }
+  }
 
-  for (const auto &entry : m_clientMap)
+  for (const auto &client : clients)
   {
-    const auto &client = entry.second;
-    
     if (!client->ReadyToUse())
       continue;
 
diff --git a/xbmc/pvr/channels/PVRChannel.cpp b/xbmc/pvr/channels/PVRChannel.cpp
index a2a175a..5427882 100644
--- a/xbmc/pvr/channels/PVRChannel.cpp
+++ b/xbmc/pvr/channels/PVRChannel.cpp
@@ -807,8 +807,13 @@ int CPVRChannel::EpgID(void) const
 void CPVRChannel::SetEpgID(int iEpgId)
 {
   CSingleLock lock(m_critSection);
-  m_iEpgId = iEpgId;
-  SetChanged();
+
+  if (m_iEpgId != iEpgId)
+  {
+    m_iEpgId = iEpgId;
+    SetChanged();
+    m_bChanged = true;
+  }
 }
 
 bool CPVRChannel::EPGEnabled(void) const
diff --git a/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.cpp b/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.cpp
index 1194d4c..0aaeebc 100644
--- a/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.cpp
+++ b/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.cpp
@@ -35,10 +35,13 @@
 #include "pvr/PVRManager.h"
 #include "pvr/channels/PVRChannelGroupsContainer.h"
 #include "pvr/windows/GUIWindowPVRBase.h"
+#include "epg/EpgContainer.h"
 
 using namespace PVR;
 using namespace EPG;
 
+#define MAX_INVALIDATION_FREQUENCY 2000 // limit to one invalidation per X milliseconds
+
 #define CONTROL_LIST                  11
 
 CGUIDialogPVRChannelsOSD::CGUIDialogPVRChannelsOSD() :
@@ -54,6 +57,8 @@ CGUIDialogPVRChannelsOSD::~CGUIDialogPVRChannelsOSD()
 
   if (IsObserving(g_infoManager))
     g_infoManager.UnregisterObserver(this);
+  if (IsObserving(g_EpgContainer))
+    g_EpgContainer.UnregisterObserver(this);
 }
 
 bool CGUIDialogPVRChannelsOSD::OnMessage(CGUIMessage& message)
@@ -84,6 +89,22 @@ bool CGUIDialogPVRChannelsOSD::OnMessage(CGUIMessage& message)
       }
     }
     break;
+  case GUI_MSG_REFRESH_LIST:
+    {
+      switch(message.GetParam1())
+      {
+        case ObservableMessageCurrentItem:
+          m_viewControl.SetItems(*m_vecItems);
+          return true;
+        case ObservableMessageEpg:
+        case ObservableMessageEpgContainer:
+        case ObservableMessageEpgActiveItem:
+          if (IsActive())
+            SetInvalid();
+          return true;
+      }
+    }
+    break;
   }
 
   return CGUIDialog::OnMessage(message);
@@ -166,6 +187,8 @@ void CGUIDialogPVRChannelsOSD::Update()
 
   if (!IsObserving(g_infoManager))
     g_infoManager.RegisterObserver(this);
+  if (!IsObserving(g_EpgContainer))
+    g_EpgContainer.RegisterObserver(this);
 
   m_viewControl.SetCurrentView(DEFAULT_VIEW_LIST);
 
@@ -193,6 +216,18 @@ void CGUIDialogPVRChannelsOSD::Update()
   g_graphicsContext.Unlock();
 }
 
+void CGUIDialogPVRChannelsOSD::SetInvalid()
+{
+  if (m_refreshTimeout.IsTimePast())
+  {
+    VECFILEITEMS items = m_vecItems->GetList();
+    for (VECFILEITEMS::iterator it = items.begin(); it != items.end(); ++it)
+      (*it)->SetInvalid();
+    CGUIDialog::SetInvalid();
+    m_refreshTimeout.Set(MAX_INVALIDATION_FREQUENCY);
+  }
+}
+
 void CGUIDialogPVRChannelsOSD::SaveControlStates()
 {
   CGUIDialog::SaveControlStates();
@@ -324,12 +359,8 @@ CGUIControl *CGUIDialogPVRChannelsOSD::GetFirstFocusableControl(int id)
 
 void CGUIDialogPVRChannelsOSD::Notify(const Observable &obs, const ObservableMessage msg)
 {
-  if (msg == ObservableMessageCurrentItem)
-  {
-    g_graphicsContext.Lock();
-    m_viewControl.SetItems(*m_vecItems);
-    g_graphicsContext.Unlock();
-  }
+  CGUIMessage m(GUI_MSG_REFRESH_LIST, GetID(), 0, msg);
+  CApplicationMessenger::Get().SendGUIMessage(m);
 }
 
 void CGUIDialogPVRChannelsOSD::SaveSelectedItemPath(int iGroupID)
diff --git a/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.h b/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.h
index f19c134..376c37b 100644
--- a/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.h
+++ b/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.h
@@ -45,6 +45,7 @@ namespace PVR
     virtual void OnDeinitWindow(int nextWindowID);
     virtual void RestoreControlStates();
     virtual void SaveControlStates();
+    virtual void SetInvalid();
 
     void CloseOrSelect(unsigned int iItem);
     void GotoChannel(int iItem);
@@ -62,6 +63,7 @@ namespace PVR
     std::map<int, std::string> m_groupSelectedItemPaths;
     void SaveSelectedItemPath(int iGroupID);
     std::string GetLastSelectedItemPath(int iGroupID) const;
+    XbmcThreads::EndTime m_refreshTimeout;
   };
 }
 
diff --git a/xbmc/pvr/windows/GUIWindowPVRBase.cpp b/xbmc/pvr/windows/GUIWindowPVRBase.cpp
index 5a23447..841fef0 100644
--- a/xbmc/pvr/windows/GUIWindowPVRBase.cpp
+++ b/xbmc/pvr/windows/GUIWindowPVRBase.cpp
@@ -27,6 +27,7 @@
 #include "dialogs/GUIDialogOK.h"
 #include "dialogs/GUIDialogYesNo.h"
 #include "dialogs/GUIDialogSelect.h"
+#include "dialogs/GUIDialogProgress.h"
 #include "filesystem/StackDirectory.h"
 #include "input/Key.h"
 #include "guilib/GUIMessage.h"
@@ -45,6 +46,8 @@
 #include "utils/StringUtils.h"
 #include "utils/Observer.h"
 
+#define MAX_INVALIDATION_FREQUENCY 2000 // limit to one invalidation per X milliseconds
+
 using namespace PVR;
 using namespace EPG;
 
@@ -104,7 +107,10 @@ bool CGUIWindowPVRBase::OnBack(int actionID)
   {
     // don't call CGUIMediaWindow as it will attempt to go to the parent folder which we don't want.
     if (GetPreviousWindow() != WINDOW_FULLSCREEN_LIVETV)
+    {
       g_windowManager.ActivateWindow(WINDOW_HOME);
+      return true;
+    }
     else
       return CGUIWindow::OnBack(actionID);
   }
@@ -115,13 +121,49 @@ void CGUIWindowPVRBase::OnInitWindow(void)
 {
   if (!g_PVRManager.IsStarted() || !g_PVRClients->HasConnectedClients())
   {
-    g_windowManager.PreviousWindow();
-    CGUIDialogKaiToast::QueueNotification(CGUIDialogKaiToast::Warning,
-        g_localizeStrings.Get(19045),
-        g_localizeStrings.Get(19044));
-    return;
+    // wait until the PVR manager has been started
+    CGUIDialogProgress* dialog = static_cast<CGUIDialogProgress*>(g_windowManager.GetWindow(WINDOW_DIALOG_PROGRESS));
+    if (dialog)
+    {
+      dialog->SetHeading(CVariant{19235});
+      dialog->SetText(CVariant{19045});
+      dialog->ShowProgressBar(false);
+      dialog->StartModal();
+
+      // do not block the gfx context while waiting
+      CSingleExit exit(g_graphicsContext);
+
+      CEvent event(true);
+      while(!event.WaitMSec(1))
+      {
+        if (g_PVRManager.IsStarted() && g_PVRClients->HasConnectedClients())
+          event.Set();
+
+        if (dialog->IsCanceled())
+        {
+          // return to previous window if canceled
+          dialog->Close();
+          g_windowManager.PreviousWindow();
+          return;
+        }
+
+        g_windowManager.ProcessRenderLoop(false);
+      }
+
+      dialog->Close();
+    }
   }
 
+  {
+    // set window group to playing group
+    CPVRChannelGroupPtr group = g_PVRManager.GetPlayingGroup(m_bRadio);
+    CSingleLock lock(m_critSection);
+    if (m_group != group)
+      m_viewControl.SetSelectedItem(0);
+    m_group = group;
+  }
+  SetProperty("IsRadio", m_bRadio ? "true" : "");
+
   m_vecItems->SetPath(GetDirectoryPath());
 
   CGUIMediaWindow::OnInitWindow();
@@ -139,16 +181,6 @@ bool CGUIWindowPVRBase::OnMessage(CGUIMessage& message)
 {
   switch (message.GetMessage())
   {
-    case GUI_MSG_WINDOW_INIT:
-    {
-      CPVRChannelGroupPtr group = g_PVRManager.GetPlayingGroup(m_bRadio);
-      if (m_group != group)
-        m_viewControl.SetSelectedItem(0);
-      m_group = group;
-      SetProperty("IsRadio", m_bRadio ? "true" : "");
-    }
-    break;
-
     case GUI_MSG_CLICKED:
     {
       switch (message.GetSenderId())
@@ -163,6 +195,32 @@ bool CGUIWindowPVRBase::OnMessage(CGUIMessage& message)
   return CGUIMediaWindow::OnMessage(message);
 }
 
+bool CGUIWindowPVRBase::IsValidMessage(CGUIMessage& message)
+{
+  bool bReturn = false;
+
+  // we need to protect the pvr windows against certain messages
+  // if the pvr manager is not started yet. we only want to support
+  // that the window can be loaded to show the user an info about
+  // the manager startup. Any other interactions with the windows
+  // would cause access violations.
+  switch (message.GetMessage())
+  {
+    // valid messages
+    case GUI_MSG_WINDOW_LOAD:
+    case GUI_MSG_WINDOW_INIT:
+    case GUI_MSG_WINDOW_DEINIT:
+      bReturn = true;
+      break;
+    default:
+      if (g_PVRManager.IsStarted())
+        bReturn = true;
+      break;
+  }
+
+  return bReturn;
+}
+
 bool CGUIWindowPVRBase::OnContextButton(int itemNumber, CONTEXT_BUTTON button)
 {
   bool bReturn = false;
@@ -209,10 +267,14 @@ bool CGUIWindowPVRBase::OnContextButton(int itemNumber, CONTEXT_BUTTON button)
 
 void CGUIWindowPVRBase::SetInvalid()
 {
-  VECFILEITEMS items = m_vecItems->GetList();
-  for (VECFILEITEMS::iterator it = items.begin(); it != items.end(); ++it)
-    (*it)->SetInvalid();
-  CGUIMediaWindow::SetInvalid();
+  if (m_refreshTimeout.IsTimePast())
+  {
+    VECFILEITEMS items = m_vecItems->GetList();
+    for (VECFILEITEMS::iterator it = items.begin(); it != items.end(); ++it)
+      (*it)->SetInvalid();
+    CGUIMediaWindow::SetInvalid();
+    m_refreshTimeout.Set(MAX_INVALIDATION_FREQUENCY);
+  }
 }
 
 bool CGUIWindowPVRBase::OpenGroupSelectionDialog(void)
diff --git a/xbmc/pvr/windows/GUIWindowPVRBase.h b/xbmc/pvr/windows/GUIWindowPVRBase.h
index b6f5eb9..bfe3209 100644
--- a/xbmc/pvr/windows/GUIWindowPVRBase.h
+++ b/xbmc/pvr/windows/GUIWindowPVRBase.h
@@ -95,6 +95,7 @@ namespace PVR
     virtual void ShowRecordingInfo(CFileItem *item);
     virtual bool UpdateEpgForChannel(CFileItem *item);
     virtual void UpdateSelectedItemPath();
+    virtual bool IsValidMessage(CGUIMessage& message);
     void CheckResumeRecording(CFileItem *item);
 
     static std::map<bool, std::string> m_selectedItemPaths;
@@ -104,5 +105,6 @@ namespace PVR
 
   private:
     CPVRChannelGroupPtr m_group;
+    XbmcThreads::EndTime m_refreshTimeout;
   };
 }
diff --git a/xbmc/pvr/windows/GUIWindowPVRChannels.cpp b/xbmc/pvr/windows/GUIWindowPVRChannels.cpp
index 9940ca3..dad4af5 100644
--- a/xbmc/pvr/windows/GUIWindowPVRChannels.cpp
+++ b/xbmc/pvr/windows/GUIWindowPVRChannels.cpp
@@ -162,6 +162,9 @@ bool CGUIWindowPVRChannels::OnAction(const CAction &action)
 
 bool CGUIWindowPVRChannels::OnMessage(CGUIMessage& message)
 {
+  if (!IsValidMessage(message))
+    return false;
+
   bool bReturn = false;
   switch (message.GetMessage())
   {
@@ -220,6 +223,8 @@ bool CGUIWindowPVRChannels::OnMessage(CGUIMessage& message)
       {
         case ObservableMessageChannelGroup:
         case ObservableMessageTimers:
+        case ObservableMessageEpg:
+        case ObservableMessageEpgContainer:
         case ObservableMessageEpgActiveItem:
         case ObservableMessageCurrentItem:
         {
diff --git a/xbmc/pvr/windows/GUIWindowPVRGuide.cpp b/xbmc/pvr/windows/GUIWindowPVRGuide.cpp
index 536aabe..dbb599b 100644
--- a/xbmc/pvr/windows/GUIWindowPVRGuide.cpp
+++ b/xbmc/pvr/windows/GUIWindowPVRGuide.cpp
@@ -33,6 +33,8 @@
 #include "pvr/addons/PVRClients.h"
 #include "pvr/timers/PVRTimers.h"
 
+#define MAX_UPDATE_FREQUENCY 3000 // limit to maximum one update/refresh in x milliseconds
+
 using namespace PVR;
 using namespace EPG;
 
@@ -54,6 +56,11 @@ void CGUIWindowPVRGuide::OnInitWindow()
   if (m_guiState.get())
     m_viewControl.SetCurrentView(m_guiState->GetViewAsControl(), false);
 
+  CGUIEPGGridContainer *epgGridContainer =
+    dynamic_cast<CGUIEPGGridContainer*>(GetControl(m_viewControl.GetCurrentControl()));
+  if (epgGridContainer)
+    epgGridContainer->GoToNow();
+
   CGUIWindowPVRBase::OnInitWindow();
 }
 
@@ -178,6 +185,9 @@ bool CGUIWindowPVRGuide::OnAction(const CAction &action)
 
 bool CGUIWindowPVRGuide::OnMessage(CGUIMessage& message)
 {
+  if (!IsValidMessage(message))
+    return false;
+  
   bool bReturn = false;
   switch (message.GetMessage())
   {
@@ -251,6 +261,7 @@ bool CGUIWindowPVRGuide::OnMessage(CGUIMessage& message)
     {
       // let's set the view mode first before update
       CGUIWindowPVRBase::OnMessage(message);
+      m_nextUpdateTimeout.SetExpired();
       Refresh(true);
       bReturn = true;
       break;
@@ -263,9 +274,12 @@ bool CGUIWindowPVRGuide::OnMessage(CGUIMessage& message)
         case ObservableMessageEpgContainer:
         {
           m_bUpdateRequired = true;
-          /* update the current window if the EPG timeline view is visible */
-          if (IsActive() && m_viewControl.GetCurrentControl() == GUIDE_VIEW_TIMELINE)
+          // do not allow more than MAX_UPDATE_FREQUENCY updates
+          if (IsActive() && m_nextUpdateTimeout.IsTimePast())
+          {
             Refresh(true);
+            m_nextUpdateTimeout.Set(MAX_UPDATE_FREQUENCY);
+          }
           bReturn = true;
           break;
         }
diff --git a/xbmc/pvr/windows/GUIWindowPVRGuide.h b/xbmc/pvr/windows/GUIWindowPVRGuide.h
index cc815b2..af30eb6 100644
--- a/xbmc/pvr/windows/GUIWindowPVRGuide.h
+++ b/xbmc/pvr/windows/GUIWindowPVRGuide.h
@@ -22,6 +22,7 @@
 
 #include "GUIWindowPVRBase.h"
 #include "epg/GUIEPGGridContainer.h"
+#include "threads/SystemClock.h"
 
 class CSetting;
 
@@ -65,5 +66,7 @@ namespace PVR
     CPVRChannelGroupPtr m_cachedChannelGroup;
 
     bool m_bUpdateRequired;
+
+    XbmcThreads::EndTime m_nextUpdateTimeout;
   };
 }
diff --git a/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp b/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp
index a028ca0..763c861 100644
--- a/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp
+++ b/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp
@@ -235,6 +235,9 @@ void CGUIWindowPVRRecordings::UpdateButtons(void)
 
 bool CGUIWindowPVRRecordings::OnMessage(CGUIMessage &message)
 {
+  if (!IsValidMessage(message))
+    return false;
+  
   bool bReturn = false;
   switch (message.GetMessage())
   {
@@ -293,6 +296,9 @@ bool CGUIWindowPVRRecordings::OnMessage(CGUIMessage &message)
       switch(message.GetParam1())
       {
         case ObservableMessageTimers:
+        case ObservableMessageEpg:
+        case ObservableMessageEpgContainer:
+        case ObservableMessageEpgActiveItem:
         case ObservableMessageCurrentItem:
         {
           if (IsActive())
diff --git a/xbmc/pvr/windows/GUIWindowPVRSearch.cpp b/xbmc/pvr/windows/GUIWindowPVRSearch.cpp
index 6ae15ae..4f2221f 100644
--- a/xbmc/pvr/windows/GUIWindowPVRSearch.cpp
+++ b/xbmc/pvr/windows/GUIWindowPVRSearch.cpp
@@ -170,6 +170,9 @@ void CGUIWindowPVRSearch::OnPrepareFileItems(CFileItemList &items)
 
 bool CGUIWindowPVRSearch::OnMessage(CGUIMessage &message)
 {
+  if (!IsValidMessage(message))
+    return false;
+  
   if (message.GetMessage() == GUI_MSG_CLICKED)
   {
     if (message.GetSenderId() == m_viewControl.GetCurrentControl())
diff --git a/xbmc/pvr/windows/GUIWindowPVRTimers.cpp b/xbmc/pvr/windows/GUIWindowPVRTimers.cpp
index 70794b7..c769d2a 100644
--- a/xbmc/pvr/windows/GUIWindowPVRTimers.cpp
+++ b/xbmc/pvr/windows/GUIWindowPVRTimers.cpp
@@ -108,6 +108,9 @@ bool CGUIWindowPVRTimers::Update(const std::string &strDirectory, bool updateFil
 
 bool CGUIWindowPVRTimers::OnMessage(CGUIMessage &message)
 {
+  if (!IsValidMessage(message))
+    return false;
+  
   bool bReturn = false;
   switch (message.GetMessage())
   {
@@ -143,6 +146,10 @@ bool CGUIWindowPVRTimers::OnMessage(CGUIMessage &message)
       switch(message.GetParam1())
       {
         case ObservableMessageTimers:
+        case ObservableMessageEpg:
+        case ObservableMessageEpgContainer:
+        case ObservableMessageEpgActiveItem:
+        case ObservableMessageCurrentItem:
         {
           if (IsActive())
             SetInvalid();
diff --git a/xbmc/utils/ProgressJob.cpp b/xbmc/utils/ProgressJob.cpp
index 3a69eaf..069e361 100644
--- a/xbmc/utils/ProgressJob.cpp
+++ b/xbmc/utils/ProgressJob.cpp
@@ -81,9 +81,8 @@ bool CProgressJob::DoModal()
   // do the work
   bool result = DoWork();
 
-  // close the progress dialog
-  if (m_autoClose)
-    m_progressDialog->Close();
+  // mark the progress dialog as finished (will close it)
+  MarkFinished();
   m_modal = false;
 
   return result;
@@ -179,7 +178,12 @@ void CProgressJob::MarkFinished()
   if (m_progress != NULL)
   {
     if (m_updateProgress)
+    {
       m_progress->MarkFinished();
+      // We don't own this pointer and it will be deleted after it's marked finished
+      // just set it to nullptr so we don't try to use it again
+      m_progress = nullptr;
+    }
   }
   else if (m_progressDialog != NULL && m_autoClose)
     m_progressDialog->Close();
diff --git a/xbmc/utils/Splash.cpp b/xbmc/utils/Splash.cpp
index c5da041..5d66391 100644
--- a/xbmc/utils/Splash.cpp
+++ b/xbmc/utils/Splash.cpp
@@ -29,46 +29,39 @@
 
 using namespace XFILE;
 
-CSplash::CSplash(const std::string& imageName) : CThread("Splash"), m_ImageName(imageName)
+CSplash::CSplash()
 {
-  fade = 0.5;
-  m_messageLayout = NULL;
-  m_image = NULL;
-  m_layoutWasLoading = false;
 }
 
-
 CSplash::~CSplash()
 {
-  Stop();
   delete m_image;
-  delete m_messageLayout;
 }
 
-void CSplash::OnStartup()
-{}
-
-void CSplash::OnExit()
-{}
-
-void CSplash::Show()
+CSplash& CSplash::Get()
 {
-  Show("");
+  static CSplash instance;
+  return instance;
 }
 
-void CSplash::Show(const std::string& message)
+void CSplash::Show()
 {
-  g_graphicsContext.Lock();
-  g_graphicsContext.Clear();
-
-  RESOLUTION_INFO res(1280,720,0);
-  g_graphicsContext.SetRenderingResolution(res, true);  
   if (!m_image)
   {
-    m_image = new CGUIImage(0, 0, 0, 0, 1280, 720, CTextureInfo(m_ImageName));
+    std::string splashImage = "special://home/media/Splash.png";
+    if (!XFILE::CFile::Exists(splashImage))
+      splashImage = "special://xbmc/media/Splash.png";
+
+    m_image = new CGUIImage(0, 0, 0, 0, g_graphicsContext.GetWidth(), g_graphicsContext.GetHeight(), CTextureInfo(splashImage));
     m_image->SetAspectRatio(CAspectRatio::AR_CENTER);
   }
 
+  g_graphicsContext.Lock();
+  g_graphicsContext.Clear();
+
+  RESOLUTION_INFO res = g_graphicsContext.GetResInfo();
+  g_graphicsContext.SetRenderingResolution(res, true);
+
   //render splash image
   g_Windowing.BeginRender();
 
@@ -76,60 +69,9 @@ void CSplash::Show(const std::string& message)
   m_image->Render();
   m_image->FreeResources();
 
-  // render message
-  if (!message.empty())
-  {
-    if (!m_layoutWasLoading)
-    {
-      // load arial font, white body, no shadow, size: 20, no additional styling
-      CGUIFont *messageFont = g_fontManager.LoadTTF("__splash__", "arial.ttf", 0xFFFFFFFF, 0, 20, FONT_STYLE_NORMAL, false, 1.0f, 1.0f, &res);
-      if (messageFont)
-        m_messageLayout = new CGUITextLayout(messageFont, true, 0);
-      m_layoutWasLoading = true;
-    }
-    if (m_messageLayout)
-    {
-      m_messageLayout->Update(message, 1150, false, true);
-
-      float textWidth, textHeight;
-      m_messageLayout->GetTextExtent(textWidth, textHeight);
-      // ideally place text in center of empty area below splash image
-      float y = 540 + m_image->GetTextureHeight() / 4 - textHeight / 2;
-      if (y + textHeight > 720) // make sure entire text is visible
-        y = 720 - textHeight;
-
-      m_messageLayout->RenderOutline(640, y, 0, 0xFF000000, XBFONT_CENTER_X, 1280);
-    }
-  }
-
   //show it on screen
   g_Windowing.EndRender();
   CDirtyRegionList dirty;
   g_graphicsContext.Flip(dirty);
   g_graphicsContext.Unlock();
 }
-
-void CSplash::Hide()
-{
-}
-
-void CSplash::Process()
-{
-  Show();
-}
-
-bool CSplash::Start()
-{
-  if (m_ImageName.empty() || !CFile::Exists(m_ImageName))
-  {
-    CLog::Log(LOGDEBUG, "Splash image %s not found", m_ImageName.c_str());
-    return false;
-  }
-  Create();
-  return true;
-}
-
-void CSplash::Stop()
-{
-  StopThread();
-}
diff --git a/xbmc/utils/Splash.h b/xbmc/utils/Splash.h
index 2cd7a4b..5f4375d 100644
--- a/xbmc/utils/Splash.h
+++ b/xbmc/utils/Splash.h
@@ -21,36 +21,24 @@
  */
 
 #include <string>
-#include "threads/Thread.h"
 
-class CGUITextLayout;
 class CGUIImage;
 
-class CSplash : public CThread
+class CSplash
 {
 public:
-  CSplash(const std::string& imageName);
-  virtual ~CSplash();
-
-  bool Start();
-  void Stop();
+  static CSplash& Get();
 
-  // In case you don't want to use another thread
   void Show();
-  void Show(const std::string& message);
-  void Hide();
-
-private:
-  virtual void Process();
-  virtual void OnStartup();
-  virtual void OnExit();
 
-  float fade;
-  std::string m_ImageName;
+protected:
+  CSplash();
+  CSplash(const CSplash&);
+  CSplash& operator=(CSplash const&);
+  virtual ~CSplash();
 
-  CGUITextLayout* m_messageLayout;
+private:
   CGUIImage* m_image;
-  bool m_layoutWasLoading;
 #ifdef HAS_DX
   D3DGAMMARAMP newRamp;
   D3DGAMMARAMP oldRamp;
diff --git a/xbmc/utils/posix/PosixInterfaceForCLog.cpp b/xbmc/utils/posix/PosixInterfaceForCLog.cpp
index 3f80594..4b7d096 100644
--- a/xbmc/utils/posix/PosixInterfaceForCLog.cpp
+++ b/xbmc/utils/posix/PosixInterfaceForCLog.cpp
@@ -40,6 +40,7 @@ CPosixInterfaceForCLog::~CPosixInterfaceForCLog()
 {
   if (m_file)
     fclose(m_file);
+  m_file = NULL;
 }
 
 bool CPosixInterfaceForCLog::OpenLogFile(const std::string &logFilename, const std::string &backupOldLogToFilename)
diff --git a/xbmc/video/VideoDatabase.cpp b/xbmc/video/VideoDatabase.cpp
index 7e0113f..e6b6144 100644
--- a/xbmc/video/VideoDatabase.cpp
+++ b/xbmc/video/VideoDatabase.cpp
@@ -6844,19 +6844,21 @@ std::string CVideoDatabase::GetContentForPath(const std::string& strPath)
   {
     if (scraper->Content() == CONTENT_TVSHOWS)
     {
-      if (foundDirectly)
-        return "tvshows";
-
       // check for episodes or seasons.  Assumptions are:
       // 1. if episodes are in the path then we're in episodes.
       // 2. if no episodes are found, and content was set directly on this path, then we're in shows.
       // 3. if no episodes are found, and content was not set directly on this path, we're in seasons (assumes tvshows/seasons/episodes)
-      std::string sql = PrepareSQL("SELECT count(1) FROM episode_view WHERE strPath LIKE '%s%%' LIMIT 1", strPath.c_str());
+      std::string sql = "SELECT COUNT(*) FROM episode_view ";
+
+      if (foundDirectly)
+        sql += PrepareSQL("WHERE strPath = '%s'", strPath.c_str());
+      else
+        sql += PrepareSQL("WHERE strPath LIKE '%s%%'", strPath.c_str());
 
       m_pDS->query( sql.c_str() );
       if (m_pDS->num_rows() && m_pDS->fv(0).get_asInt() > 0)
         return "episodes";
-      return "seasons";
+      return foundDirectly ? "tvshows" : "seasons";
     }
     return TranslateContent(scraper->Content());
   }
diff --git a/xbmc/windows/GUIWindowSplash.cpp b/xbmc/windows/GUIWindowSplash.cpp
new file mode 100644
index 0000000..8ac1827
--- /dev/null
+++ b/xbmc/windows/GUIWindowSplash.cpp
@@ -0,0 +1,59 @@
+/*
+ *      Copyright (C) 2015 Team XBMC
+ *      http://xbmc.org
+ *
+ *  This Program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This Program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with XBMC; see the file COPYING.  If not, see
+ *  <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "GUIWindowSplash.h"
+#include "filesystem/File.h"
+#include "filesystem/SpecialProtocol.h"
+#include "guilib/GUIImage.h"
+#include "guilib/GUIWindowManager.h"
+#include "utils/log.h"
+
+CGUIWindowSplash::CGUIWindowSplash(void) : CGUIWindow(WINDOW_SPLASH, "")
+{
+  m_loadType = LOAD_ON_GUI_INIT;
+  m_image = nullptr;
+}
+
+CGUIWindowSplash::~CGUIWindowSplash(void)
+{
+  delete m_image;
+}
+
+void CGUIWindowSplash::OnInitWindow()
+{
+  std::string splashImage = "special://home/media/Splash.png";
+  if (!XFILE::CFile::Exists(splashImage))
+    splashImage = "special://xbmc/media/Splash.png";
+
+  CLog::Log(LOGINFO, "load splash image: %s", CSpecialProtocol::TranslatePath(splashImage).c_str());
+
+  m_image = new CGUIImage(0, 0, 0, 0, g_graphicsContext.GetWidth(), g_graphicsContext.GetHeight(), CTextureInfo(splashImage));
+  m_image->SetAspectRatio(CAspectRatio::AR_CENTER);
+}
+
+void CGUIWindowSplash::Render()
+{
+  g_graphicsContext.SetRenderingResolution(g_graphicsContext.GetResInfo(), true);
+  m_image->SetWidth(g_graphicsContext.GetWidth());
+  m_image->SetHeight(g_graphicsContext.GetHeight());
+  m_image->AllocResources();
+  m_image->Render();
+  m_image->FreeResources();
+}
\ No newline at end of file
diff --git a/xbmc/windows/GUIWindowScreensaverDim.h b/xbmc/windows/GUIWindowSplash.h
similarity index 69%
copy from xbmc/windows/GUIWindowScreensaverDim.h
copy to xbmc/windows/GUIWindowSplash.h
index e0db07d..510db06 100644
--- a/xbmc/windows/GUIWindowScreensaverDim.h
+++ b/xbmc/windows/GUIWindowSplash.h
@@ -1,7 +1,7 @@
 #pragma once
 
 /*
- *      Copyright (C) 2005-2013 Team XBMC
+ *      Copyright (C) 2015 Team XBMC
  *      http://xbmc.org
  *
  *  This Program is free software; you can redistribute it and/or modify
@@ -20,18 +20,20 @@
  *
  */
 
-#include "guilib/GUIDialog.h"
+#include "guilib/GUIWindow.h"
 
-class CGUIWindowScreensaverDim :
-      public CGUIDialog
+class CGUITextLayout;
+class CGUIImage;
+
+class CGUIWindowSplash : public CGUIWindow
 {
 public:
-  CGUIWindowScreensaverDim();
-  virtual ~CGUIWindowScreensaverDim();
-  virtual void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions);
+  CGUIWindowSplash(void);
+  virtual ~CGUIWindowSplash(void);
+  virtual bool OnAction(const CAction &action) { return false; };
   virtual void Render();
 protected:
-  virtual void UpdateVisibility();
+  virtual void OnInitWindow();
 private:
-  float m_dimLevel;
+  CGUIImage* m_image;
 };
diff --git a/xbmc/windows/Makefile b/xbmc/windows/Makefile
index 059f24a..a328db2 100644
--- a/xbmc/windows/Makefile
+++ b/xbmc/windows/Makefile
@@ -6,6 +6,7 @@ SRCS=GUIMediaWindow.cpp \
      GUIWindowPointer.cpp \
      GUIWindowScreensaver.cpp \
      GUIWindowScreensaverDim.cpp \
+     GUIWindowSplash.cpp \
      GUIWindowStartup.cpp \
      GUIWindowSystemInfo.cpp \
      GUIWindowWeather.cpp \

-- 
kodi packaging



More information about the pkg-multimedia-commits mailing list