diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/addons/resource.language.en_gb/resources/strings.po kodi-18.0+git20181114.0201-fce4d88/addons/resource.language.en_gb/resources/strings.po --- kodi-18.0+git20181113.0201-b3a7d3c/addons/resource.language.en_gb/resources/strings.po 2018-11-13 01:01:30.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/addons/resource.language.en_gb/resources/strings.po 2018-11-14 01:01:33.000000000 +0000 @@ -12723,6 +12723,7 @@ #: xbmc/media/MediaTypes.cpp #: addons/skin.estuary/xml/Variables.xml #: xbmc/view/GUIViewState.cpp +#: system/settings/settings.xml msgctxt "#20342" msgid "Movies" msgstr "" @@ -12734,6 +12735,7 @@ #: addons/skin.estuary/xml/SkinSettings.xml #: addons/skin.estuary/xml/Variables.xml #: xbmc/view/GUIViewState.cpp +#: system/settings/settings.xml msgctxt "#20343" msgid "TV shows" msgstr "" @@ -18103,7 +18105,7 @@ #. Description of setting with label #20369 "Show plot for unwatched items" #: system/settings/settings.xml msgctxt "#36141" -msgid "Show plot information for unwatched media in the video library." +msgid "Show plot information for unwatched media in the video library. The plot will be shown for the specific category you have selected. For example if 'Movies' is selected, the plot will be shown at the movie library, but will be hidden for TV shows and otherwise." msgstr "" #. Description of setting with label #14106 "Speed unit" @@ -21575,3 +21577,4 @@ msgctxt "#39113" msgid "Center Mix Level in dB relative to metadata or default (-3 dB)" msgstr "" + diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/BUILDDATE kodi-18.0+git20181114.0201-fce4d88/BUILDDATE --- kodi-18.0+git20181113.0201-b3a7d3c/BUILDDATE 2018-11-13 01:01:45.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/BUILDDATE 2018-11-14 01:01:46.000000000 +0000 @@ -1 +1 @@ -20181113 +20181114 diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/debian/changelog kodi-18.0+git20181114.0201-fce4d88/debian/changelog --- kodi-18.0+git20181113.0201-b3a7d3c/debian/changelog 2018-11-13 01:02:14.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/debian/changelog 2018-11-14 01:02:15.000000000 +0000 @@ -1,4 +1,26 @@ -kodi (2:18.0+git20181113.0201-b3a7d3c-0cosmic) cosmic; urgency=high +kodi (2:18.0+git20181114.0201-fce4d88-0cosmic) cosmic; urgency=high + + [Kai Sommerfeld] + * [pvr] Fix channel sorting. Fixes #14854. + + [Kai Sommerfeld] + * [video] CSaveFileState::DoWork: For videodb items, use m_strFileNameAndPath, not GetPath(). Fixes Fixes #14847. + + [taxigps] + * fix: ass subtitle render wrong when play half-sbs/half-ou 3d movie + + [fritsch] + * LinuxRenderGL: Properly draw black quads on entire GL window + + [Jonas Karlman] + * windowing/gbm: rename planes + + [Unknown] + * [Kodi] Separate shown plots for unwatched items + + [Lukas Rusak] + * [GLES] cleanup vsync implementation + [Louis Sautier] * [settings] fix typo in UPNP setting description diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/debian/changelog.tmp kodi-18.0+git20181114.0201-fce4d88/debian/changelog.tmp --- kodi-18.0+git20181113.0201-b3a7d3c/debian/changelog.tmp 2018-11-13 01:02:14.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/debian/changelog.tmp 2018-11-14 01:02:15.000000000 +0000 @@ -1,4 +1,26 @@ -kodi (2:18.0+git20181113.0201-b3a7d3c-0dist) dist; urgency=high +kodi (2:18.0+git20181114.0201-fce4d88-0dist) dist; urgency=high + + [Kai Sommerfeld] + * [pvr] Fix channel sorting. Fixes #14854. + + [Kai Sommerfeld] + * [video] CSaveFileState::DoWork: For videodb items, use m_strFileNameAndPath, not GetPath(). Fixes Fixes #14847. + + [taxigps] + * fix: ass subtitle render wrong when play half-sbs/half-ou 3d movie + + [fritsch] + * LinuxRenderGL: Properly draw black quads on entire GL window + + [Jonas Karlman] + * windowing/gbm: rename planes + + [Unknown] + * [Kodi] Separate shown plots for unwatched items + + [Lukas Rusak] + * [GLES] cleanup vsync implementation + [Louis Sautier] * [settings] fix typo in UPNP setting description diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/debian/changelog.tmp.old kodi-18.0+git20181114.0201-fce4d88/debian/changelog.tmp.old --- kodi-18.0+git20181113.0201-b3a7d3c/debian/changelog.tmp.old 2018-11-13 01:01:45.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/debian/changelog.tmp.old 2018-11-14 01:01:46.000000000 +0000 @@ -1,5 +1,9 @@ kodi (2:18.0+git20180719.0202-3231481-0dist) dist; urgency=high + [Louis Sautier] + * [settings] fix typo in UPNP setting description + + [Elie ROUDNINSKI] * [cmake] Rework FindJsonSchemaBuilder on the model of FindTextureBuilder diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/system/settings/settings.xml kodi-18.0+git20181114.0201-fce4d88/system/settings/settings.xml --- kodi-18.0+git20181113.0201-b3a7d3c/system/settings/settings.xml 2018-11-11 01:01:27.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/system/settings/settings.xml 2018-11-14 01:01:33.000000000 +0000 @@ -968,10 +968,20 @@ true - + 0 - true - + 0,1 + + + + + + , + + + true + false + 1 diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/VERSION kodi-18.0+git20181114.0201-fce4d88/VERSION --- kodi-18.0+git20181113.0201-b3a7d3c/VERSION 2018-11-13 01:01:45.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/VERSION 2018-11-14 01:01:46.000000000 +0000 @@ -1 +1 @@ -b3a7d3c +fce4d88 diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp 2018-10-23 16:19:50.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -38,7 +38,7 @@ CServiceBroker::GetSettingsComponent()->GetSettings()->GetInt(SETTING_VIDEOPLAYER_USEPRIMERENDERER) == 0) { CWinSystemGbm* winSystem = dynamic_cast(CServiceBroker::GetWinSystem()); - if (winSystem && winSystem->GetDrm()->GetPrimaryPlane()->plane && + if (winSystem && winSystem->GetDrm()->GetVideoPlane()->plane && std::dynamic_pointer_cast(winSystem->GetDrm())) return new CRendererDRMPRIME(); } @@ -49,7 +49,7 @@ void CRendererDRMPRIME::Register() { CWinSystemGbm* winSystem = dynamic_cast(CServiceBroker::GetWinSystem()); - if (winSystem && winSystem->GetDrm()->GetPrimaryPlane()->plane && + if (winSystem && winSystem->GetDrm()->GetVideoPlane()->plane && std::dynamic_pointer_cast(winSystem->GetDrm())) { CServiceBroker::GetSettingsComponent()->GetSettings()->GetSetting(SETTING_VIDEOPLAYER_USEPRIMERENDERER)->SetVisible(true); diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp 2018-10-23 16:19:50.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/VideoLayerBridgeDRMPRIME.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -28,7 +28,7 @@ void CVideoLayerBridgeDRMPRIME::Disable() { // disable video plane - struct plane* plane = m_DRM->GetPrimaryPlane(); + struct plane* plane = m_DRM->GetVideoPlane(); m_DRM->AddProperty(plane, "FB_ID", 0); m_DRM->AddProperty(plane, "CRTC_ID", 0); } @@ -129,7 +129,7 @@ void CVideoLayerBridgeDRMPRIME::Configure(CVideoBufferDRMPRIME* buffer) { - struct plane* plane = m_DRM->GetPrimaryPlane(); + struct plane* plane = m_DRM->GetVideoPlane(); if (m_DRM->SupportsProperty(plane, "COLOR_ENCODING") && m_DRM->SupportsProperty(plane, "COLOR_RANGE")) { @@ -146,7 +146,7 @@ return; } - struct plane* plane = m_DRM->GetPrimaryPlane(); + struct plane* plane = m_DRM->GetVideoPlane(); m_DRM->AddProperty(plane, "FB_ID", buffer->m_fb_id); m_DRM->AddProperty(plane, "CRTC_ID", m_DRM->GetCrtc()->crtc->crtc_id); m_DRM->AddProperty(plane, "SRC_X", 0); @@ -164,7 +164,7 @@ if (!m_buffer || !m_buffer->m_fb_id) return; - struct plane* plane = m_DRM->GetPrimaryPlane(); + struct plane* plane = m_DRM->GetVideoPlane(); m_DRM->AddProperty(plane, "FB_ID", m_buffer->m_fb_id); m_DRM->AddProperty(plane, "CRTC_ID", m_DRM->GetCrtc()->crtc->crtc_id); } diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.cpp 2018-10-23 16:19:50.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGL.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -558,6 +558,9 @@ glUniform4f(uniCol, m_clearColour / 255.0f, m_clearColour / 255.0f, m_clearColour / 255.0f, 1.0f); + int osWindowWidth = CServiceBroker::GetWinSystem()->GetGfxContext().GetWidth(); + int osWindowHeight = CServiceBroker::GetWinSystem()->GetGfxContext().GetHeight(); + //top quad if (m_destRect.y1 > 0.0) { @@ -565,10 +568,10 @@ vertices[quad].x = 0.0; vertices[quad].y = 0.0; vertices[quad].z = 0; - vertices[quad+1].x = m_viewRect.Width(); + vertices[quad+1].x = osWindowWidth; vertices[quad+1].y = 0; vertices[quad+1].z = 0; - vertices[quad+2].x = m_viewRect.Width(); + vertices[quad+2].x = osWindowWidth; vertices[quad+2].y = m_destRect.y1; vertices[quad+2].z = 0; vertices[quad+3] = vertices[quad+2]; @@ -580,21 +583,21 @@ } // bottom quad - if (m_destRect.y2 < m_viewRect.Height()) + if (m_destRect.y2 < osWindowHeight) { GLubyte quad = count; vertices[quad].x = 0.0; vertices[quad].y = m_destRect.y2; vertices[quad].z = 0; - vertices[quad+1].x = m_viewRect.Width(); + vertices[quad+1].x = osWindowWidth; vertices[quad+1].y = m_destRect.y2; vertices[quad+1].z = 0; - vertices[quad+2].x = m_viewRect.Width(); - vertices[quad+2].y = m_viewRect.Height(); + vertices[quad+2].x = osWindowWidth; + vertices[quad+2].y = osWindowHeight; vertices[quad+2].z = 0; vertices[quad+3] = vertices[quad+2]; vertices[quad+4].x = 0; - vertices[quad+4].y = m_viewRect.Height(); + vertices[quad+4].y = osWindowHeight; vertices[quad+4].z = 0; vertices[quad+5] = vertices[quad]; count += 6; @@ -622,16 +625,16 @@ } // right quad - if (m_destRect.x2 < m_viewRect.Width()) + if (m_destRect.x2 < osWindowWidth) { GLubyte quad = count; vertices[quad].x = m_destRect.x2; vertices[quad].y = m_destRect.y1; vertices[quad].z = 0; - vertices[quad+1].x = m_viewRect.Width(); + vertices[quad+1].x = osWindowWidth; vertices[quad+1].y = m_destRect.y1; vertices[quad+1].z = 0; - vertices[quad+2].x = m_viewRect.Width(); + vertices[quad+2].x = osWindowWidth; vertices[quad+2].y = m_destRect.y2; vertices[quad+2].z = 0; vertices[quad+3] = vertices[quad+2]; diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.cpp 2018-11-04 08:12:28.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -331,6 +331,11 @@ m_rv = view; } +void CRenderer::SetStereoMode(const std::string &stereomode) +{ + m_stereomode = stereomode; +} + COverlay* CRenderer::Convert(CDVDOverlaySSA* o, double pts) { // libass render in a target area which named as frame. the frame size may bigger than video size, @@ -343,7 +348,19 @@ int targetWidth = m_rv.Width(); int targetHeight = m_rv.Height(); int useMargin; - + // Render subtitle of half-sbs and half-ou video in full screen, not in half screen + if (m_stereomode == "left_right" || m_stereomode == "right_left") + { + // only half-sbs video, sbs video don't need to change source size + if (static_cast(sourceWidth) / sourceHeight < 1.2) + sourceWidth = m_rs.Width() * 2; + } + else if (m_stereomode == "top_bottom" || m_stereomode == "bottom_top") + { + // only half-ou video, ou video don't need to change source size + if (static_cast(sourceWidth) / sourceHeight > 2.5) + sourceHeight = m_rs.Height() * 2; + } int subalign = CServiceBroker::GetSettingsComponent()->GetSettings()->GetInt(CSettings::SETTING_SUBTITLES_ALIGN); if(subalign == SUBTITLE_ALIGN_BOTTOM_OUTSIDE || subalign == SUBTITLE_ALIGN_TOP_OUTSIDE diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.h kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.h --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.h 2018-07-31 18:47:39.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/OverlayRenderer.h 2018-11-14 01:01:33.000000000 +0000 @@ -75,6 +75,7 @@ void Release(int idx); bool HasOverlay(int idx); void SetVideoRect(CRect &source, CRect &dest, CRect &view); + void SetStereoMode(const std::string &stereomode); protected: @@ -103,5 +104,6 @@ static unsigned int m_textureid; CRect m_rv, m_rs, m_rd; std::string m_font, m_fontBorder; + std::string m_stereomode; }; } diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp 2018-11-06 01:01:30.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/cores/VideoPlayer/VideoRenderers/RenderManager.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -224,6 +224,7 @@ m_renderDebug = false; m_clockSync.Reset(); m_dvdClock.SetVsyncAdjust(0); + m_overlays.SetStereoMode(m_stereomode); m_renderState = STATE_CONFIGURED; diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/guilib/guiinfo/VideoGUIInfo.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/guilib/guiinfo/VideoGUIInfo.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/guilib/guiinfo/VideoGUIInfo.cpp 2018-10-23 16:19:50.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/guilib/guiinfo/VideoGUIInfo.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -22,6 +22,7 @@ #include "guilib/StereoscopicsManager.h" #include "guilib/WindowIDs.h" #include "settings/AdvancedSettings.h" +#include "settings/lib/Setting.h" #include "settings/Settings.h" #include "settings/SettingsComponent.h" #include "utils/StringUtils.h" @@ -330,18 +331,27 @@ } break; case LISTITEM_PLOT: - if (tag->m_type != MediaTypeTvShow && - tag->m_type != MediaTypeVideoCollection && - tag->GetPlayCount() == 0 && - !CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS)) { - value = g_localizeStrings.Get(20370); - } - else - { - value = tag->m_strPlot; + std::shared_ptr setting(std::dynamic_pointer_cast( + CServiceBroker::GetSettingsComponent()->GetSettings()->GetSetting(CSettings::SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS))); + if (tag->m_type != MediaTypeTvShow && + tag->m_type != MediaTypeVideoCollection && + tag->GetPlayCount() == 0 && + setting && + ( + (tag->m_type == MediaTypeMovie && (!setting->FindIntInList(CSettings::VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_MOVIES))) || + (tag->m_type == MediaTypeEpisode && (!setting->FindIntInList(CSettings::VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_TVSHOWEPISODES))) + ) + ) + { + value = g_localizeStrings.Get(20370); + } + else + { + value = tag->m_strPlot; + } + return true; } - return true; case LISTITEM_STATUS: value = tag->m_strStatus; return true; diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/channels/PVRChannel.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/channels/PVRChannel.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/channels/PVRChannel.cpp 2018-11-11 01:01:27.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/channels/PVRChannel.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -624,7 +624,7 @@ if (field == FieldChannelName) sortable[FieldChannelName] = m_strChannelName; else if (field == FieldChannelNumber) - sortable[FieldChannelNumber] = m_channelNumber.FormattedChannelNumber(); + sortable[FieldChannelNumber] = m_channelNumber.SortableChannelNumber(); else if (field == FieldLastPlayed) { const CDateTime lastWatched(m_iLastWatched); diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/channels/PVRChannelNumber.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/channels/PVRChannelNumber.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/channels/PVRChannelNumber.cpp 2018-07-31 18:47:40.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/channels/PVRChannelNumber.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -16,8 +16,21 @@ std::string CPVRChannelNumber::FormattedChannelNumber() const { + return ToString(SEPARATOR); +} + +std::string CPVRChannelNumber::SortableChannelNumber() const +{ + // Note: The subchannel separator is a character that does not work for a + // SortItem (at least not on all platforms). See SortUtils::Sort for + // details. Only numbers, letters and the blank are safe to use. + return ToString(' '); +} + +std::string CPVRChannelNumber::ToString(char separator) const +{ if (m_iSubChannelNumber == 0) return StringUtils::Format("%u", m_iChannelNumber); else - return StringUtils::Format("%u%c%u", m_iChannelNumber, SEPARATOR, m_iSubChannelNumber); + return StringUtils::Format("%u%c%u", m_iChannelNumber, separator, m_iSubChannelNumber); } diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/channels/PVRChannelNumber.h kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/channels/PVRChannelNumber.h --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/channels/PVRChannelNumber.h 2018-07-31 18:47:40.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/channels/PVRChannelNumber.h 2018-11-14 01:01:33.000000000 +0000 @@ -73,7 +73,15 @@ */ std::string FormattedChannelNumber() const; + /*! + * @brief Get a string representation for the channel number that can be used for SortItems. + * @return The sortable string in the form . + */ + std::string SortableChannelNumber() const; + private: + std::string ToString(char separator) const; + unsigned int m_iChannelNumber = 0; unsigned int m_iSubChannelNumber = 0; }; diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/epg/EpgInfoTag.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/epg/EpgInfoTag.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/pvr/epg/EpgInfoTag.cpp 2018-10-23 16:19:51.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/pvr/epg/EpgInfoTag.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -185,7 +185,7 @@ sortable[FieldChannelName] = m_channel->ChannelName(); break; case FieldChannelNumber: - sortable[FieldChannelNumber] = m_channel->ChannelNumber().FormattedChannelNumber(); + sortable[FieldChannelNumber] = m_channel->ChannelNumber().SortableChannelNumber(); break; case FieldLastPlayed: { diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/rendering/gles/RenderSystemGLES.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/rendering/gles/RenderSystemGLES.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/rendering/gles/RenderSystemGLES.cpp 2018-10-23 16:19:51.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/rendering/gles/RenderSystemGLES.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -36,9 +36,7 @@ glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); m_maxTextureSize = maxTextureSize; - m_bVSync = false; - m_iVSyncMode = 0; - m_bVsyncInit = false; + // Get the GLES version number m_RenderVersionMajor = 0; m_RenderVersionMinor = 0; @@ -210,7 +208,7 @@ void CRenderSystemGLES::SetVSync(bool enable) { - if (m_bVSync==enable && m_bVsyncInit == true) + if (m_bVsyncInit) return; if (!m_bRenderCreated) @@ -221,20 +219,9 @@ else CLog::Log(LOGINFO, "GLES: Disabling VSYNC"); - m_iVSyncMode = 0; - m_iVSyncErrors = 0; - m_bVSync = enable; - m_bVsyncInit = true; + m_bVsyncInit = true; SetVSyncImpl(enable); - - if (!enable) - return; - - if (!m_iVSyncMode) - CLog::Log(LOGERROR, "GLES: Vertical Blank Syncing unsupported"); - else - CLog::Log(LOGINFO, "GLES: Selected vsync mode %d", m_iVSyncMode); } void CRenderSystemGLES::CaptureStateBlock() diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/rendering/gles/RenderSystemGLES.h kodi-18.0+git20181114.0201-fce4d88/xbmc/rendering/gles/RenderSystemGLES.h --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/rendering/gles/RenderSystemGLES.h 2018-10-23 16:19:51.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/rendering/gles/RenderSystemGLES.h 2018-11-14 01:01:33.000000000 +0000 @@ -91,11 +91,9 @@ virtual void PresentRenderImpl(bool rendered) = 0; void CalculateMaxTexturesize(); - int m_iVSyncMode; - int m_iVSyncErrors; - bool m_bVsyncInit; - int m_width; - int m_height; + bool m_bVsyncInit{false}; + int m_width; + int m_height; std::string m_RenderExtensions; diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/settings/Settings.h kodi-18.0+git20181114.0201-fce4d88/xbmc/settings/Settings.h --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/settings/Settings.h 2018-11-11 01:01:27.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/settings/Settings.h 2018-11-14 01:01:33.000000000 +0000 @@ -373,6 +373,9 @@ static const std::string SETTING_SOURCE_VIDEOS; static const std::string SETTING_SOURCE_MUSIC; static const std::string SETTING_SOURCE_PICTURES; + // values for SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS + static const int VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_MOVIES = 0; + static const int VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_TVSHOWEPISODES = 1; /*! \brief Creates a new settings wrapper around a new settings manager. diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/utils/SaveFileStateJob.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/utils/SaveFileStateJob.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/utils/SaveFileStateJob.cpp 2018-10-23 16:19:51.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/utils/SaveFileStateJob.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -35,6 +35,8 @@ if (item.HasVideoInfoTag() && StringUtils::StartsWith(item.GetVideoInfoTag()->m_strFileNameAndPath, "removable://")) progressTrackingFile = item.GetVideoInfoTag()->m_strFileNameAndPath; // this variable contains removable:// suffixed by disc label+uniqueid or is empty if label not uniquely identified + else if (item.HasVideoInfoTag() && item.IsVideoDb()) + progressTrackingFile = item.GetVideoInfoTag()->m_strFileNameAndPath; // we need the file url of the video db item to create the bookmark else if (item.HasProperty("original_listitem_url")) { // only use original_listitem_url for Python, UPnP and Bluray sources diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/video/dialogs/GUIDialogVideoInfo.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/video/dialogs/GUIDialogVideoInfo.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/video/dialogs/GUIDialogVideoInfo.cpp 2018-10-23 16:19:51.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/video/dialogs/GUIDialogVideoInfo.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -33,6 +33,7 @@ #include "storage/MediaManager.h" #include "profiles/ProfileManager.h" #include "settings/AdvancedSettings.h" +#include "settings/lib/Setting.h" #include "settings/MediaSourceSettings.h" #include "settings/Settings.h" #include "settings/SettingsComponent.h" @@ -376,9 +377,17 @@ void CGUIDialogVideoInfo::Update() { // setup plot text area + std::shared_ptr setting(std::dynamic_pointer_cast( + CServiceBroker::GetSettingsComponent()->GetSettings()->GetSetting(CSettings::SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS))); std::string strTmp = m_movieItem->GetVideoInfoTag()->m_strPlot; if (m_movieItem->GetVideoInfoTag()->m_type != MediaTypeTvShow) - if (m_movieItem->GetVideoInfoTag()->GetPlayCount() == 0 && !CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_VIDEOLIBRARY_SHOWUNWATCHEDPLOTS)) + if (m_movieItem->GetVideoInfoTag()->GetPlayCount() == 0 && + setting && + ( + (m_movieItem->GetVideoInfoTag()->m_type == MediaTypeMovie && (!setting->FindIntInList(CSettings::VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_MOVIES))) || + (m_movieItem->GetVideoInfoTag()->m_type == MediaTypeEpisode && (!setting->FindIntInList(CSettings::VIDEOLIBRARY_PLOTS_SHOW_UNWATCHED_TVSHOWEPISODES))) + ) + ) strTmp = g_localizeStrings.Get(20370); StringUtils::Trim(strTmp); diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/amlogic/WinSystemAmlogicGLESContext.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/amlogic/WinSystemAmlogicGLESContext.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/amlogic/WinSystemAmlogicGLESContext.cpp 2018-11-04 08:12:29.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/amlogic/WinSystemAmlogicGLESContext.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -102,10 +102,8 @@ void CWinSystemAmlogicGLESContext::SetVSyncImpl(bool enable) { - m_iVSyncMode = enable ? 10:0; if (!m_pGLContext.SetVSync(enable)) { - m_iVSyncMode = 0; CLog::Log(LOGERROR, "%s,Could not set egl vsync", __FUNCTION__); } } diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/DRMAtomic.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/DRMAtomic.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/DRMAtomic.cpp 2018-11-09 01:01:31.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/DRMAtomic.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -52,22 +52,22 @@ if (rendered) { - AddProperty(m_overlay_plane, "FB_ID", fb_id); - AddProperty(m_overlay_plane, "CRTC_ID", m_crtc->crtc->crtc_id); - AddProperty(m_overlay_plane, "SRC_X", 0); - AddProperty(m_overlay_plane, "SRC_Y", 0); - AddProperty(m_overlay_plane, "SRC_W", m_width << 16); - AddProperty(m_overlay_plane, "SRC_H", m_height << 16); - AddProperty(m_overlay_plane, "CRTC_X", 0); - AddProperty(m_overlay_plane, "CRTC_Y", 0); - AddProperty(m_overlay_plane, "CRTC_W", m_mode->hdisplay); - AddProperty(m_overlay_plane, "CRTC_H", m_mode->vdisplay); + AddProperty(m_gui_plane, "FB_ID", fb_id); + AddProperty(m_gui_plane, "CRTC_ID", m_crtc->crtc->crtc_id); + AddProperty(m_gui_plane, "SRC_X", 0); + AddProperty(m_gui_plane, "SRC_Y", 0); + AddProperty(m_gui_plane, "SRC_W", m_width << 16); + AddProperty(m_gui_plane, "SRC_H", m_height << 16); + AddProperty(m_gui_plane, "CRTC_X", 0); + AddProperty(m_gui_plane, "CRTC_Y", 0); + AddProperty(m_gui_plane, "CRTC_W", m_mode->hdisplay); + AddProperty(m_gui_plane, "CRTC_H", m_mode->vdisplay); } else if (videoLayer && !CServiceBroker::GetGUI()->GetWindowManager().HasVisibleControls()) { // disable gui plane when video layer is active and gui has no visible controls - AddProperty(m_overlay_plane, "FB_ID", 0); - AddProperty(m_overlay_plane, "CRTC_ID", 0); + AddProperty(m_gui_plane, "FB_ID", 0); + AddProperty(m_gui_plane, "CRTC_ID", 0); } auto ret = drmModeAtomicCommit(m_fd, m_req, flags | DRM_MODE_ATOMIC_TEST_ONLY, nullptr); @@ -101,9 +101,9 @@ if (rendered) { if (videoLayer) - m_overlay_plane->SetFormat(CDRMUtils::FourCCWithAlpha(m_overlay_plane->GetFormat())); + m_gui_plane->SetFormat(CDRMUtils::FourCCWithAlpha(m_gui_plane->GetFormat())); else - m_overlay_plane->SetFormat(CDRMUtils::FourCCWithoutAlpha(m_overlay_plane->GetFormat())); + m_gui_plane->SetFormat(CDRMUtils::FourCCWithoutAlpha(m_gui_plane->GetFormat())); drm_fb = CDRMUtils::DrmFbGetFromBo(bo); if (!drm_fb) diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/DRMUtils.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/DRMUtils.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/DRMUtils.cpp 2018-11-09 01:01:31.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/DRMUtils.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -29,8 +29,8 @@ : m_connector(new connector) , m_encoder(new encoder) , m_crtc(new crtc) - , m_primary_plane(new plane) - , m_overlay_plane(new plane) + , m_video_plane(new plane) + , m_gui_plane(new plane) { } @@ -73,7 +73,7 @@ struct drm_fb *fb = static_cast(gbm_bo_get_user_data(bo)); if(fb) { - if (m_overlay_plane->GetFormat() == fb->format) + if (m_gui_plane->GetFormat() == fb->format) return fb; else DrmFbDestroyCallback(bo, gbm_bo_get_user_data(bo)); @@ -82,7 +82,7 @@ struct drm_fb *fb = new drm_fb; fb->bo = bo; - fb->format = m_overlay_plane->GetFormat(); + fb->format = m_gui_plane->GetFormat(); uint32_t width, height, @@ -365,8 +365,8 @@ case KODI_GUI_PLANE: { uint32_t plane_id = 0; - if (m_primary_plane->plane) - plane_id = m_primary_plane->plane->plane_id; + if (m_video_plane->plane) + plane_id = m_video_plane->plane->plane_id; if (plane->plane_id != plane_id && (plane_id == 0 || SupportsFormat(plane, DRM_FORMAT_ARGB8888)) && @@ -383,8 +383,8 @@ case KODI_GUI_10_PLANE: { uint32_t plane_id = 0; - if (m_primary_plane->plane) - plane_id = m_primary_plane->plane->plane_id; + if (m_video_plane->plane) + plane_id = m_video_plane->plane->plane_id; if (plane->plane_id != plane_id && (plane_id == 0 || SupportsFormat(plane, DRM_FORMAT_ARGB2101010)) && @@ -423,48 +423,48 @@ return false; } - m_primary_plane->plane = FindPlane(plane_resources, m_crtc_index, KODI_VIDEO_PLANE); - m_overlay_plane->plane = FindPlane(plane_resources, m_crtc_index, KODI_GUI_10_PLANE); + m_video_plane->plane = FindPlane(plane_resources, m_crtc_index, KODI_VIDEO_PLANE); + m_gui_plane->plane = FindPlane(plane_resources, m_crtc_index, KODI_GUI_10_PLANE); /* fallback to 8bit plane if 10bit plane doesn't exist */ - if (m_overlay_plane->plane == nullptr) + if (m_gui_plane->plane == nullptr) { - drmModeFreePlane(m_overlay_plane->plane); - m_overlay_plane->plane = FindPlane(plane_resources, m_crtc_index, KODI_GUI_PLANE); - m_overlay_plane->SetFormat(DRM_FORMAT_XRGB8888); + drmModeFreePlane(m_gui_plane->plane); + m_gui_plane->plane = FindPlane(plane_resources, m_crtc_index, KODI_GUI_PLANE); + m_gui_plane->SetFormat(DRM_FORMAT_XRGB8888); } drmModeFreePlaneResources(plane_resources); - // primary plane may not be available - if (m_primary_plane->plane) + // video plane may not be available + if (m_video_plane->plane) { - if (!GetProperties(m_fd, m_primary_plane->plane->plane_id, DRM_MODE_OBJECT_PLANE, m_primary_plane)) + if (!GetProperties(m_fd, m_video_plane->plane->plane_id, DRM_MODE_OBJECT_PLANE, m_video_plane)) { - CLog::Log(LOGERROR, "CDRMUtils::%s - could not get primary plane %u properties: %s", __FUNCTION__, m_primary_plane->plane->plane_id, strerror(errno)); + CLog::Log(LOGERROR, "CDRMUtils::%s - could not get video plane %u properties: %s", __FUNCTION__, m_video_plane->plane->plane_id, strerror(errno)); return false; } - if (!FindModifiersForPlane(m_primary_plane)) + if (!FindModifiersForPlane(m_video_plane)) { - CLog::Log(LOGDEBUG, "CDRMUtils::%s - no drm modifiers present for the primary plane", __FUNCTION__); + CLog::Log(LOGDEBUG, "CDRMUtils::%s - no drm modifiers present for the video plane", __FUNCTION__); } } - // overlay plane should always be available - if (!GetProperties(m_fd, m_overlay_plane->plane->plane_id, DRM_MODE_OBJECT_PLANE, m_overlay_plane)) + // gui plane should always be available + if (!GetProperties(m_fd, m_gui_plane->plane->plane_id, DRM_MODE_OBJECT_PLANE, m_gui_plane)) { - CLog::Log(LOGERROR, "CDRMUtils::%s - could not get overlay plane %u properties: %s", __FUNCTION__, m_overlay_plane->plane->plane_id, strerror(errno)); + CLog::Log(LOGERROR, "CDRMUtils::%s - could not get gui plane %u properties: %s", __FUNCTION__, m_gui_plane->plane->plane_id, strerror(errno)); return false; } - if (!FindModifiersForPlane(m_overlay_plane)) + if (!FindModifiersForPlane(m_gui_plane)) { - CLog::Log(LOGDEBUG, "CDRMUtils::%s - no drm modifiers present for the overlay plane", __FUNCTION__); - m_overlay_plane->modifiers_map.emplace(DRM_FORMAT_ARGB8888, std::vector{DRM_FORMAT_MOD_LINEAR}); - m_overlay_plane->modifiers_map.emplace(DRM_FORMAT_XRGB8888, std::vector{DRM_FORMAT_MOD_LINEAR}); - m_overlay_plane->modifiers_map.emplace(DRM_FORMAT_ARGB2101010, std::vector{DRM_FORMAT_MOD_LINEAR}); - m_overlay_plane->modifiers_map.emplace(DRM_FORMAT_XRGB2101010, std::vector{DRM_FORMAT_MOD_LINEAR}); + CLog::Log(LOGDEBUG, "CDRMUtils::%s - no drm modifiers present for the gui plane", __FUNCTION__); + m_gui_plane->modifiers_map.emplace(DRM_FORMAT_ARGB8888, std::vector{DRM_FORMAT_MOD_LINEAR}); + m_gui_plane->modifiers_map.emplace(DRM_FORMAT_XRGB8888, std::vector{DRM_FORMAT_MOD_LINEAR}); + m_gui_plane->modifiers_map.emplace(DRM_FORMAT_ARGB2101010, std::vector{DRM_FORMAT_MOD_LINEAR}); + m_gui_plane->modifiers_map.emplace(DRM_FORMAT_XRGB2101010, std::vector{DRM_FORMAT_MOD_LINEAR}); } return true; @@ -711,15 +711,15 @@ delete m_crtc; m_crtc = nullptr; - drmModeFreePlane(m_primary_plane->plane); - FreeProperties(m_primary_plane); - delete m_primary_plane; - m_primary_plane = nullptr; - - drmModeFreePlane(m_overlay_plane->plane); - FreeProperties(m_overlay_plane); - delete m_overlay_plane; - m_overlay_plane = nullptr; + drmModeFreePlane(m_video_plane->plane); + FreeProperties(m_video_plane); + delete m_video_plane; + m_video_plane = nullptr; + + drmModeFreePlane(m_gui_plane->plane); + FreeProperties(m_gui_plane); + delete m_gui_plane; + m_gui_plane = nullptr; } RESOLUTION_INFO CDRMUtils::GetResolutionInfo(drmModeModeInfoPtr mode) diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/DRMUtils.h kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/DRMUtils.h --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/DRMUtils.h 2018-11-09 01:01:31.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/DRMUtils.h 2018-11-14 01:01:33.000000000 +0000 @@ -104,10 +104,10 @@ std::string GetModule() const { return m_module; } int GetFileDescriptor() const { return m_fd; } int GetRenderNodeFileDescriptor() const { return m_renderFd; } - struct plane* GetPrimaryPlane() const { return m_primary_plane; } - struct plane* GetOverlayPlane() const { return m_overlay_plane; } - std::vector *GetPrimaryPlaneModifiersForFormat(uint32_t format) { return &m_primary_plane->modifiers_map[format]; } - std::vector *GetOverlayPlaneModifiersForFormat(uint32_t format) { return &m_overlay_plane->modifiers_map[format]; } + struct plane* GetVideoPlane() const { return m_video_plane; } + struct plane* GetGuiPlane() const { return m_gui_plane; } + std::vector *GetVideoPlaneModifiersForFormat(uint32_t format) { return &m_video_plane->modifiers_map[format]; } + std::vector *GetGuiPlaneModifiersForFormat(uint32_t format) { return &m_gui_plane->modifiers_map[format]; } struct crtc* GetCrtc() const { return m_crtc; } virtual RESOLUTION_INFO GetCurrentMode(); @@ -132,8 +132,8 @@ struct connector *m_connector = nullptr; struct encoder *m_encoder = nullptr; struct crtc *m_crtc = nullptr; - struct plane *m_primary_plane = nullptr; - struct plane *m_overlay_plane = nullptr; + struct plane *m_video_plane = nullptr; + struct plane *m_gui_plane = nullptr; drmModeModeInfo *m_mode = nullptr; int m_width = 0; diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/WinSystemGbmEGLContext.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/WinSystemGbmEGLContext.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/gbm/WinSystemGbmEGLContext.cpp 2018-11-09 01:01:31.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/gbm/WinSystemGbmEGLContext.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -32,15 +32,15 @@ return false; } - uint32_t visualId = m_DRM->GetOverlayPlane()->GetFormat(); + uint32_t visualId = m_DRM->GetGuiPlane()->GetFormat(); // prefer alpha visual id, fallback to non-alpha visual id if (!m_eglContext.ChooseConfig(renderableType, CDRMUtils::FourCCWithAlpha(visualId)) && !m_eglContext.ChooseConfig(renderableType, CDRMUtils::FourCCWithoutAlpha(visualId))) { // fallback to 8bit format if no EGL config was found for 10bit - m_DRM->GetOverlayPlane()->useFallbackFormat = true; - visualId = m_DRM->GetOverlayPlane()->GetFormat(); + m_DRM->GetGuiPlane()->useFallbackFormat = true; + visualId = m_DRM->GetGuiPlane()->GetFormat(); if (!m_eglContext.ChooseConfig(renderableType, CDRMUtils::FourCCWithAlpha(visualId)) && !m_eglContext.ChooseConfig(renderableType, CDRMUtils::FourCCWithoutAlpha(visualId))) @@ -76,7 +76,7 @@ } uint32_t format = m_eglContext.GetConfigAttrib(EGL_NATIVE_VISUAL_ID); - std::vector *modifiers = m_DRM->GetOverlayPlaneModifiersForFormat(format); + std::vector *modifiers = m_DRM->GetGuiPlaneModifiersForFormat(format); if (!m_GBM->CreateSurface(res.iWidth, res.iHeight, format, modifiers->data(), modifiers->size())) { diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/osx/WinSystemIOS.h kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/osx/WinSystemIOS.h --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/osx/WinSystemIOS.h 2018-07-31 18:47:40.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/osx/WinSystemIOS.h 2018-11-14 01:01:33.000000000 +0000 @@ -37,7 +37,7 @@ void UpdateResolutions() override; bool CanDoWindowed() override { return false; } - void ShowOSMouse(bool show) override; + void ShowOSMouse(bool show) override {} bool HasCursor() override; void NotifyAppActiveChange(bool bActivated) override; @@ -70,13 +70,12 @@ protected: void PresentRenderImpl(bool rendered) override; - void SetVSyncImpl(bool enable) override; + void SetVSyncImpl(bool enable) override {} void *m_glView; // EAGLView opaque void *m_WorkingContext; // shared EAGLContext opaque bool m_bWasFullScreenBeforeMinimize; std::string m_eglext; - int m_iVSyncErrors; CCriticalSection m_resourceSection; std::vector m_resources; bool m_bIsBackgrounded; diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/osx/WinSystemIOS.mm kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/osx/WinSystemIOS.mm --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/osx/WinSystemIOS.mm 2018-10-23 16:19:51.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/osx/WinSystemIOS.mm 2018-11-14 01:01:33.000000000 +0000 @@ -72,7 +72,7 @@ int CWinSystemIOS::GetDisplayIndexFromSettings() { std::string currentScreen = CServiceBroker::GetSettingsComponent()->GetSettings()->GetString(CSettings::SETTING_VIDEOSCREEN_MONITOR); - + int screenIdx = 0; if (currentScreen == CONST_EXTERNAL) { @@ -86,13 +86,12 @@ MoveToTouchscreen(); } } - + return screenIdx; } CWinSystemIOS::CWinSystemIOS() : CWinSystemBase() { - m_iVSyncErrors = 0; m_bIsBackgrounded = false; m_pDisplayLink = new CADisplayLinkWrapper; m_pDisplayLink->callbackClass = [[IOSDisplayLinkCallback alloc] init]; @@ -266,9 +265,9 @@ UpdateDesktopResolution(CDisplaySettings::GetInstance().GetResolutionInfo(RES_DESKTOP), w, h, fps, 0); CDisplaySettings::GetInstance().GetResolutionInfo(RES_DESKTOP).strOutput = screenIdx == 0 ? CONST_TOUCHSCREEN : CONST_EXTERNAL; } - + CDisplaySettings::GetInstance().ClearCustomResolutions(); - + //now just fill in the possible resolutions for the attached screens //and push to the resolution info vector FillInVideoModes(screenIdx); @@ -291,7 +290,7 @@ { w = mode.size.width; h = mode.size.height; - + if (screenIdx == 0) { res.strOutput = CONST_TOUCHSCREEN; @@ -300,7 +299,7 @@ { res.strOutput = CONST_EXTERNAL; } - + UpdateDesktopResolution(res, w, h, refreshrate, 0); CLog::Log(LOGNOTICE, "Found possible resolution for display %d with %d x %d\n", screenIdx, w, h); @@ -422,24 +421,6 @@ [g_xbmcController presentFramebuffer]; } -void CWinSystemIOS::SetVSyncImpl(bool enable) -{ - #if 0 - // set swapinterval if possible - void *eglSwapInterval; - eglSwapInterval = dlsym( RTLD_DEFAULT, "eglSwapInterval" ); - if ( eglSwapInterval ) - { - ((void(*)(int))eglSwapInterval)( 1 ) ; - } - #endif - m_iVSyncMode = 10; -} - -void CWinSystemIOS::ShowOSMouse(bool show) -{ -} - bool CWinSystemIOS::HasCursor() { // apple touch devices diff -Nru kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/rpi/WinSystemRpiGLESContext.cpp kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/rpi/WinSystemRpiGLESContext.cpp --- kodi-18.0+git20181113.0201-b3a7d3c/xbmc/windowing/rpi/WinSystemRpiGLESContext.cpp 2018-11-04 08:12:29.000000000 +0000 +++ kodi-18.0+git20181114.0201-fce4d88/xbmc/windowing/rpi/WinSystemRpiGLESContext.cpp 2018-11-14 01:01:33.000000000 +0000 @@ -125,10 +125,8 @@ void CWinSystemRpiGLESContext::SetVSyncImpl(bool enable) { - m_iVSyncMode = enable ? 10:0; if (!m_pGLContext.SetVSync(enable)) { - m_iVSyncMode = 0; CLog::Log(LOGERROR, "%s,Could not set egl vsync", __FUNCTION__); } }