diff options
-rw-r--r-- | addons/resource.language.en_gb/resources/strings.po | 4 | ||||
l---------[-rw-r--r--] | system/settings/freebsd.xml | 165 | ||||
-rw-r--r-- | system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl | 19 | ||||
-rw-r--r-- | tools/darwin/packaging/darwin_embedded/mkdeb-darwin_embedded.sh.in | 2 | ||||
-rwxr-xr-x | tools/depends/bootstrap | 2 | ||||
-rw-r--r-- | xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 33 | ||||
-rw-r--r-- | xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp | 47 | ||||
-rw-r--r-- | xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGL.cpp | 3 | ||||
-rw-r--r-- | xbmc/interfaces/builtins/PlayerBuiltins.cpp | 16 | ||||
-rw-r--r-- | xbmc/music/windows/GUIWindowMusicBase.cpp | 9 | ||||
-rw-r--r-- | xbmc/music/windows/GUIWindowMusicNav.cpp | 29 | ||||
-rw-r--r-- | xbmc/rendering/dx/DeviceResources.cpp | 1 | ||||
-rw-r--r-- | xbmc/utils/SystemInfo.cpp | 2 |
13 files changed, 111 insertions, 221 deletions
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po index dc73e73828..0b3a3d72f1 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -6896,7 +6896,7 @@ msgid "There are no presets available for this visualisation" msgstr "" msgctxt "#13390" -msgid "There are no settings available\nfor this visualisation" +msgid "There are no settings available[CR]for this visualisation" msgstr "" #: xbmc/ContextMenus.h @@ -19455,7 +19455,7 @@ msgstr "" #. Description of setting with label #13436 "Use display HDR capabilities" #: system/settings/settings.xml msgctxt "#36299" -msgid "Switch display into HDR mode if media with HDR information is played.\nIf disabled, HDR information are applied using Kodi's internal HDR path." +msgid "Switch display into HDR mode if media with HDR information is played.[CR]If disabled, HDR information are applied using Kodi's internal HDR path." msgstr "" #. Description of setting with label #20226 "Movie set information folder" diff --git a/system/settings/freebsd.xml b/system/settings/freebsd.xml index a500ce9fe2..fde0ce778e 100644..120000 --- a/system/settings/freebsd.xml +++ b/system/settings/freebsd.xml @@ -1,164 +1 @@ -<?xml version="1.0" encoding="utf-8" ?> -<settings version="1"> - <section id="player"> - <category id="videoplayer"> - <group id="3"> - <setting id="videoplayer.usevdpau" type="boolean" label="13425" help="36155"> - <requirement>HAVE_LIBVDPAU</requirement> - <visible>false</visible> - <level>2</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevdpaumixer" type="boolean" label="13437" help="36421"> - <requirement>HAVE_LIBVDPAU</requirement> - <visible>false</visible> - <level>2</level> - <default>true</default> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> - </dependency> - </dependencies> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevdpaumpeg2" type="boolean" parent="videoplayer.usevdpau" label="13441" help="13442"> - <requirement>HAVE_LIBVDPAU</requirement> - <visible>false</visible> - <level>3</level> - <default>true</default> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> - </dependency> - </dependencies> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevdpaumpeg4" type="boolean" parent="videoplayer.usevdpau" label="13443" help="13444"> - <requirement>HAVE_LIBVDPAU</requirement> - <visible>false</visible> - <level>3</level> - <default>false</default> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> - </dependency> - </dependencies> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevdpauvc1" type="boolean" parent="videoplayer.usevdpau" label="13445" help="13446"> - <requirement>HAVE_LIBVDPAU</requirement> - <visible>false</visible> - <level>3</level> - <default>true</default> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> - </dependency> - </dependencies> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevaapi" type="boolean" label="13426" help="36156"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <level>2</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevaapimpeg2" type="boolean" parent="videoplayer.usevaapi" label="13447" help="13448"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevaapi" operator="is">true</condition> - </dependency> - </dependencies> - <level>3</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevaapimpeg4" type="boolean" parent="videoplayer.usevaapi" label="13449" help="13450"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevaapi" operator="is">true</condition> - </dependency> - </dependencies> - <level>3</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevaapivc1" type="boolean" parent="videoplayer.usevaapi" label="13451" help="13452"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevaapi" operator="is">true</condition> - </dependency> - </dependencies> - <level>3</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevaapivp8" type="boolean" parent="videoplayer.usevaapi" label="13453" help="13454"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevaapi" operator="is">true</condition> - </dependency> - </dependencies> - <level>3</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevaapivp9" type="boolean" parent="videoplayer.usevaapi" label="13455" help="13456"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevaapi" operator="is">true</condition> - </dependency> - </dependencies> - <level>3</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.usevaapihevc" type="boolean" parent="videoplayer.usevaapi" label="13460" help="13461"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevaapi" operator="is">true</condition> - </dependency> - </dependencies> - <level>3</level> - <default>true</default> - <control type="toggle" /> - </setting> - <setting id="videoplayer.prefervaapirender" type="boolean" parent="videoplayer.usevaapi" label="13457" help="36433"> - <requirement>HAVE_LIBVA</requirement> - <visible>false</visible> - <dependencies> - <dependency type="enable"> - <condition setting="videoplayer.usevaapi" operator="is">true</condition> - </dependency> - </dependencies> - <level>3</level> - <default>true</default> - <control type="toggle" /> - </setting> - </group> - </category> - </section> - <section id="system"> - <category id="display"> - <group id="1"> - <setting id="videoscreen.fakefullscreen"> - <visible>false</visible> - </setting> - </group> - </category> - </section> -</settings> +linux.xml
\ No newline at end of file diff --git a/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl b/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl index 84e480c5ec..8a4658cd7b 100644 --- a/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl +++ b/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl @@ -17,6 +17,7 @@ uniform mat3 m_primMat; uniform float m_gammaDstInv; uniform float m_gammaSrc; uniform float m_toneP1; +uniform float m_luminance; uniform vec3 m_coefsDst; in vec2 m_cordY; in vec2 m_cordU; @@ -115,9 +116,23 @@ vec4 process() rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); -#if defined(XBMC_TONE_MAPPING) +#if defined(KODI_TONE_MAPPING_REINHARD) float luma = dot(rgb.rgb, m_coefsDst); - rgb.rgb *= tonemap(luma) / luma; + rgb.rgb *= reinhard(luma) / luma; + +#elif defined(KODI_TONE_MAPPING_ACES) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= (10000.0 / m_luminance) * (2.0 / m_toneP1); + rgb.rgb = aces(rgb.rgb); + rgb.rgb *= (1.24 / m_toneP1); + rgb.rgb = pow(rgb.rgb, vec3(0.27)); + +#elif defined(KODI_TONE_MAPPING_HABLE) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= m_toneP1; + float wp = m_luminance / 100.0; + rgb.rgb = hable(rgb.rgb * wp) / hable(vec3(wp)); + rgb.rgb = pow(rgb.rgb, vec3(1.0 / 2.2)); #endif #endif diff --git a/tools/darwin/packaging/darwin_embedded/mkdeb-darwin_embedded.sh.in b/tools/darwin/packaging/darwin_embedded/mkdeb-darwin_embedded.sh.in index 0d318be595..bd508d435c 100644 --- a/tools/darwin/packaging/darwin_embedded/mkdeb-darwin_embedded.sh.in +++ b/tools/darwin/packaging/darwin_embedded/mkdeb-darwin_embedded.sh.in @@ -102,7 +102,7 @@ chmod +x $DIRNAME/$PACKAGE/DEBIAN/postinst # prep @APP_NAME@.app mkdir -p $DIRNAME/$PACKAGE/Applications -cp -r $APP $DIRNAME/$PACKAGE/Applications/ +rsync -a --no-links $APP $DIRNAME/$PACKAGE/Applications/ find $DIRNAME/$PACKAGE/Applications/ -name '.svn' -exec rm -rf {} \; find $DIRNAME/$PACKAGE/Applications/ -name '.git*' -exec rm -rf {} \; find $DIRNAME/$PACKAGE/Applications/ -name '.DS_Store' -exec rm -rf {} \; diff --git a/tools/depends/bootstrap b/tools/depends/bootstrap index d9e14e783f..9f03bce44f 100755 --- a/tools/depends/bootstrap +++ b/tools/depends/bootstrap @@ -3,7 +3,7 @@ # Some platforms may not have m4/autoconf. If not, build temporary copies in # order to bootstrap. DEPENDS=`dirname $0` -export PATH=$DEPENDS/pre-build-deps/bin:$PATH +export PATH="$DEPENDS/pre-build-deps/bin:$PATH" which m4 >/dev/null 2>/dev/null || make -C $DEPENDS/pre-depends/m4-pre-depends which autoconf >/dev/null 2>/dev/null || make -C $DEPENDS/pre-depends/autoconf-pre-depends which autoconf >/dev/null 2>/dev/null || \ diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp index 46e29ba4c3..ff13cad28d 100644 --- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp @@ -70,6 +70,31 @@ static const struct StereoModeConversionMap WmvToInternalStereoModeMap[] = {} }; +namespace +{ +const std::vector<std::string> font_mimetypes = {"application/x-truetype-font", + "application/vnd.ms-opentype", + "application/x-font-ttf", + "application/x-font", // probably incorrect + "application/font-sfnt", + "font/collection", + "font/otf", + "font/sfnt", + "font/ttf"}; + +bool AttachmentIsFont(const AVDictionaryEntry* dict) +{ + if (dict) + { + const std::string mimeType = dict->value; + return std::find_if(font_mimetypes.begin(), font_mimetypes.end(), [&mimeType](std::string str) { + return str == mimeType; + }) != font_mimetypes.end(); + } + return false; +} +} // namespace + #define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) std::string CDemuxStreamAudioFFmpeg::GetStreamName() @@ -1652,9 +1677,13 @@ CDemuxStream* CDVDDemuxFFmpeg::AddStream(int streamIdx) } } case AVMEDIA_TYPE_ATTACHMENT: - { //mkv attachments. Only bothering with fonts for now. + { + // mkv attachments. Only bothering with fonts for now. + AVDictionaryEntry* attachmentMimetype = + av_dict_get(pStream->metadata, "mimetype", nullptr, 0); + if (pStream->codecpar->codec_id == AV_CODEC_ID_TTF || - pStream->codecpar->codec_id == AV_CODEC_ID_OTF) + pStream->codecpar->codec_id == AV_CODEC_ID_OTF || AttachmentIsFont(attachmentMimetype)) { std::string fileName = "special://temp/fonts/"; XFILE::CDirectory::Create(fileName); diff --git a/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp b/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp index 41c824969f..6baddb26e0 100644 --- a/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp +++ b/xbmc/cores/VideoPlayer/DVDSubtitles/DVDSubtitlesLibass.cpp @@ -22,17 +22,8 @@ namespace { -void AppendFont(const std::string& font) +std::string GetDefaultFontPath(std::string& font) { - std::string finalFontPath = URIUtils::AddFileToFolder("special://temp/fonts/", font); - if (XFILE::CFile::Exists(finalFontPath)) - { - CLog::Log(LOGDEBUG, - "CDVDSubtitlesLibass: Skipping copy of {} to special://temp/fonts/ (already exists)", - font); - return; - } - std::string fontSources[]{"special://home/media/Fonts/", "special://xbmc/media/Fonts/"}; for (const auto& path : fontSources) @@ -40,12 +31,11 @@ void AppendFont(const std::string& font) auto fontPath = URIUtils::AddFileToFolder(path, font); if (XFILE::CFile::Exists(fontPath)) { - XFILE::CFile::Copy(fontPath, finalFontPath); - CLog::Log(LOGDEBUG, "CDVDSubtitlesLibass: Copied {} to {}", fontPath, finalFontPath); - return; + return CSpecialProtocol::TranslatePath(fontPath).c_str(); } - CLog::Log(LOGDEBUG, "CDVDSubtitlesLibass: Could not find font {} in font sources", font); } + CLog::Log(LOGERROR, "CDVDSubtitlesLibass: Could not find font {} in font sources", font); + return ""; } } // namespace @@ -69,19 +59,18 @@ CDVDSubtitlesLibass::CDVDSubtitlesLibass() ass_set_message_cb(m_library, libass_log, this); - // Add configured subtitle font to special://temp/fonts/. This needs to be done before - // ass_set_fonts_dir. If fontconfig fails it will use the default font. - const std::shared_ptr<CSettings> settings = CServiceBroker::GetSettingsComponent()->GetSettings(); - std::string forcedFont = settings->GetString(CSettings::SETTING_SUBTITLES_FONT); - AppendFont(forcedFont); - strPath = URIUtils::AddFileToFolder(strPath, forcedFont); - CLog::Log(LOGINFO, "CDVDSubtitlesLibass: Initializing ASS library font settings"); - // libass uses fontconfig (system lib) which is not wrapped - // so translate the path before calling into libass - ass_set_fonts_dir(m_library, CSpecialProtocol::TranslatePath(strPath).c_str()); - ass_set_extract_fonts(m_library, 1); - ass_set_style_overrides(m_library, NULL); + + const std::shared_ptr<CSettings> settings = CServiceBroker::GetSettingsComponent()->GetSettings(); + bool overrideFont = settings->GetBool(CSettings::SETTING_SUBTITLES_OVERRIDEASSFONTS); + if (!overrideFont) + { + // libass uses fontconfig (system lib) which is not wrapped + // so translate the path before calling into libass + ass_set_fonts_dir(m_library, CSpecialProtocol::TranslatePath(strPath).c_str()); + ass_set_extract_fonts(m_library, 1); + ass_set_style_overrides(m_library, nullptr); + } CLog::Log(LOGINFO, "CDVDSubtitlesLibass: Initializing ASS Renderer"); @@ -94,10 +83,10 @@ CDVDSubtitlesLibass::CDVDSubtitlesLibass() ass_set_use_margins(m_renderer, 0); ass_set_font_scale(m_renderer, 1); - int fontconfig = settings->GetBool(CSettings::SETTING_SUBTITLES_OVERRIDEASSFONTS) ? 0 : 1; // libass uses fontconfig (system lib) which is not wrapped - // so translate the path before calling into libass - ass_set_fonts(m_renderer, CSpecialProtocol::TranslatePath(strPath).c_str(), "Arial", fontconfig, + // so translate the path before calling into libass + std::string forcedFont = settings->GetString(CSettings::SETTING_SUBTITLES_FONT); + ass_set_fonts(m_renderer, GetDefaultFontPath(forcedFont).c_str(), "Arial", overrideFont ? 0 : 1, nullptr, 1); } diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGL.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGL.cpp index 7ef9e8ef10..e437dddf93 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGL.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGL.cpp @@ -272,7 +272,8 @@ float BaseYUV2RGBGLSLShader::GetLuminanceValue() const //Maybe move this to linu lum3 = static_cast<float>(m_lightMetadata.MaxFALL); lum1 = (lum1 * 0.5f) + (lum2 * 0.2f) + (lum3 * 0.3f); } - else if (m_hasDisplayMetadata && m_displayMetadata.has_luminance) + else if (m_hasDisplayMetadata && m_displayMetadata.has_luminance && + m_displayMetadata.max_luminance.num) { uint16_t lum = m_displayMetadata.max_luminance.num / m_displayMetadata.max_luminance.den; lum1 = static_cast<float>(lum); diff --git a/xbmc/interfaces/builtins/PlayerBuiltins.cpp b/xbmc/interfaces/builtins/PlayerBuiltins.cpp index 56e5f3faf1..fc5fece030 100644 --- a/xbmc/interfaces/builtins/PlayerBuiltins.cpp +++ b/xbmc/interfaces/builtins/PlayerBuiltins.cpp @@ -477,13 +477,19 @@ static int PlayMedia(const std::vector<std::string>& params) else items.Sort(SortByLabel, SortOrderAscending); - int playlist = containsVideo? PLAYLIST_VIDEO : PLAYLIST_MUSIC;; - if (containsMusic && containsVideo) //mixed content found in the folder + int playlist = containsVideo? PLAYLIST_VIDEO : PLAYLIST_MUSIC; + // Mixed playlist item played by music player, mixed content folder has music removed + if (containsMusic && containsVideo) { - for (int i = items.Size() - 1; i >= 0; i--) //remove music entries + if (item.IsPlayList()) + playlist = PLAYLIST_MUSIC; + else { - if (!items[i]->IsVideo()) - items.Remove(i); + for (int i = items.Size() - 1; i >= 0; i--) //remove music entries + { + if (!items[i]->IsVideo()) + items.Remove(i); + } } } diff --git a/xbmc/music/windows/GUIWindowMusicBase.cpp b/xbmc/music/windows/GUIWindowMusicBase.cpp index fd1d8a5706..84c6ecf0de 100644 --- a/xbmc/music/windows/GUIWindowMusicBase.cpp +++ b/xbmc/music/windows/GUIWindowMusicBase.cpp @@ -565,15 +565,6 @@ void CGUIWindowMusicBase::GetContextButtons(int itemNumber, CContextButtons &but else if (item->IsPlayList() || m_vecItems->IsPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT, 586); } - if (!m_vecItems->IsMusicDb() && !m_vecItems->IsInternetStream() && - !item->IsPath("add") && !item->IsParentFolder() && - !item->IsPlugin() && !item->IsMusicDb() && - !item->IsLibraryFolder() && - !StringUtils::StartsWithNoCase(item->GetPath(), "addons://") && - (profileManager->GetCurrentProfile().canWriteDatabases() || g_passwordManager.bMasterUser)) - { - buttons.Add(CONTEXT_BUTTON_SCAN, 13352); - } #ifdef HAS_DVD_DRIVE // enable Rip CD Audio or Track button if we have an audio disc if (CServiceBroker::GetMediaManager().IsDiscInDrive() && m_vecItems->IsCDDA()) diff --git a/xbmc/music/windows/GUIWindowMusicNav.cpp b/xbmc/music/windows/GUIWindowMusicNav.cpp index fb11c2c5b9..e5dee5e1ca 100644 --- a/xbmc/music/windows/GUIWindowMusicNav.cpp +++ b/xbmc/music/windows/GUIWindowMusicNav.cpp @@ -34,6 +34,7 @@ #include "playlists/PlayList.h" #include "playlists/PlayListFactory.h" #include "profiles/ProfileManager.h" +#include "settings/AdvancedSettings.h" #include "settings/Settings.h" #include "settings/SettingsComponent.h" #include "storage/MediaManager.h" @@ -349,6 +350,12 @@ bool CGUIWindowMusicNav::OnClick(int iItem, const std::string &player /* = "" */ if (item->IsMusicDb() && !item->m_bIsFolder) m_musicdatabase.SetPropertiesForFileItem(*item); + if (item->IsPlayList() && + !CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_playlistAsFolders) + { + PlayItem(iItem); + return true; + } return CGUIWindowMusicBase::OnClick(iItem, player); } @@ -561,10 +568,8 @@ void CGUIWindowMusicNav::GetContextButtons(int itemNumber, CContextButtons &butt } } #endif - if (!inPlaylists && !m_vecItems->IsInternetStream() && - !item->IsPath("add") && !item->IsParentFolder() && - !item->IsPlugin() && - !StringUtils::StartsWithNoCase(item->GetPath(), "addons://") && + // Scan button for music sources except ".." and "Add music source" items + if (!item->IsPath("add") && !item->IsParentFolder() && (profileManager->GetCurrentProfile().canWriteDatabases() || g_passwordManager.bMasterUser)) { buttons.Add(CONTEXT_BUTTON_SCAN, 13352); @@ -575,6 +580,22 @@ void CGUIWindowMusicNav::GetContextButtons(int itemNumber, CContextButtons &butt { CGUIWindowMusicBase::GetContextButtons(itemNumber, buttons); + // Scan button for real folders containing files when navigating within music sources. + // Blacklist the bespoke Kodi protocols as to many valid external protocols to whitelist + if (m_vecItems->GetContent() == "files" && // Other content not scanned to library + !inPlaylists && !m_vecItems->IsInternetStream() && // Not playlists locations or streams + !item->IsPath("add") && !item->IsParentFolder() && // Not ".." and "Add items + item->m_bIsFolder && // Folders only, but playlists can be folders too + !URIUtils::IsLibraryContent(item->GetPath()) && // database folder or .xsp files + !URIUtils::IsSpecial(item->GetPath()) && !item->IsPlugin() && !item->IsScript() && + !item->IsPlayList() && // .m3u etc. that as flagged as folders when playlistasfolders + !StringUtils::StartsWithNoCase(item->GetPath(), "addons://") && + (profileManager->GetCurrentProfile().canWriteDatabases() || + g_passwordManager.bMasterUser)) + { + buttons.Add(CONTEXT_BUTTON_SCAN, 13352); + } + CMusicDatabaseDirectory dir; if (!item->IsParentFolder() && !dir.IsAllItem(item->GetPath())) diff --git a/xbmc/rendering/dx/DeviceResources.cpp b/xbmc/rendering/dx/DeviceResources.cpp index d2a949f10f..b66078e475 100644 --- a/xbmc/rendering/dx/DeviceResources.cpp +++ b/xbmc/rendering/dx/DeviceResources.cpp @@ -80,6 +80,7 @@ DX::DeviceResources::DeviceResources() , m_deviceNotify(nullptr) , m_stereoEnabled(false) , m_bDeviceCreated(false) + , m_IsHDROutput(false) { } diff --git a/xbmc/utils/SystemInfo.cpp b/xbmc/utils/SystemInfo.cpp index 10bcc90e6d..4a80960f70 100644 --- a/xbmc/utils/SystemInfo.cpp +++ b/xbmc/utils/SystemInfo.cpp @@ -554,7 +554,7 @@ std::string CSysInfo::GetKernelVersionFull(void) unsigned long long v4 = (v & 0x000000000000FFFFL); kernelVersionFull = StringUtils::Format("%lld.%lld.%lld", v1, v2, v3); if (v4) - kernelVersionFull += StringUtils::Format(".ll%d", v4); + kernelVersionFull += StringUtils::Format(".%lld", v4); #elif defined(TARGET_POSIX) struct utsname un; |