diff -Nru kodi-18.0+git20190112.0202-baff0a1/addons/skin.estuary/xml/Home.xml kodi-18.0+git20190113.0202-3cbd6c1/addons/skin.estuary/xml/Home.xml --- kodi-18.0+git20190112.0202-baff0a1/addons/skin.estuary/xml/Home.xml 2018-11-21 19:38:53.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/addons/skin.estuary/xml/Home.xml 2019-01-13 01:01:50.000000000 +0000 @@ -793,7 +793,7 @@ - + diff -Nru kodi-18.0+git20190112.0202-baff0a1/BUILDDATE kodi-18.0+git20190113.0202-3cbd6c1/BUILDDATE --- kodi-18.0+git20190112.0202-baff0a1/BUILDDATE 2019-01-12 01:02:05.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/BUILDDATE 2019-01-13 01:02:05.000000000 +0000 @@ -1 +1 @@ -20190112 +20190113 diff -Nru kodi-18.0+git20190112.0202-baff0a1/debian/changelog kodi-18.0+git20190113.0202-3cbd6c1/debian/changelog --- kodi-18.0+git20190112.0202-baff0a1/debian/changelog 2019-01-12 01:12:08.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/debian/changelog 2019-01-13 01:12:18.000000000 +0000 @@ -1,4 +1,35 @@ -kodi (2:18.0+git20190112.0202-baff0a1-0xenial) xenial; urgency=high +kodi (2:18.0+git20190113.0202-3cbd6c1-0xenial) xenial; urgency=high + + [fritsch] + * GLContextEGL: Remove logging + + [Martijn Kaijser] + * bump v18.0 RC5 to rev. 2 We need a bump to be able to update Play Store + + [Philipp Kerling] + * [database] Move join subquery into separate view for ancient MySQL + + [Philipp Kerling] + * Fix whitespace + + [fritsch] + * FFmpeg: Bump to 4.0.3-Leia-RC5 + + [DaVukovic] + * Improve detection of audio CDs using an infobool + + [Garrett Brown] + * Fix typo + + [fritsch] + * ButtonMapping: Change format identifier + + [fritsch] + * StringUtils: Change format identifier + + [fritsch] + * DisplaySettings: Change %.02f to %.2f to workaround a crash in libfmt 5.3 + [Philipp Kerling] * VideoInfoScanner: Correctly redact URLs diff -Nru kodi-18.0+git20190112.0202-baff0a1/debian/changelog.tmp kodi-18.0+git20190113.0202-3cbd6c1/debian/changelog.tmp --- kodi-18.0+git20190112.0202-baff0a1/debian/changelog.tmp 2019-01-12 01:02:34.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/debian/changelog.tmp 2019-01-13 01:02:34.000000000 +0000 @@ -1,4 +1,35 @@ -kodi (2:18.0+git20190112.0202-baff0a1-0dist) dist; urgency=high +kodi (2:18.0+git20190113.0202-3cbd6c1-0dist) dist; urgency=high + + [fritsch] + * GLContextEGL: Remove logging + + [Martijn Kaijser] + * bump v18.0 RC5 to rev. 2 We need a bump to be able to update Play Store + + [Philipp Kerling] + * [database] Move join subquery into separate view for ancient MySQL + + [Philipp Kerling] + * Fix whitespace + + [fritsch] + * FFmpeg: Bump to 4.0.3-Leia-RC5 + + [DaVukovic] + * Improve detection of audio CDs using an infobool + + [Garrett Brown] + * Fix typo + + [fritsch] + * ButtonMapping: Change format identifier + + [fritsch] + * StringUtils: Change format identifier + + [fritsch] + * DisplaySettings: Change %.02f to %.2f to workaround a crash in libfmt 5.3 + [Philipp Kerling] * VideoInfoScanner: Correctly redact URLs diff -Nru kodi-18.0+git20190112.0202-baff0a1/debian/changelog.tmp.old kodi-18.0+git20190113.0202-3cbd6c1/debian/changelog.tmp.old --- kodi-18.0+git20190112.0202-baff0a1/debian/changelog.tmp.old 2019-01-12 01:02:05.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/debian/changelog.tmp.old 2019-01-13 01:02:06.000000000 +0000 @@ -1,5 +1,12 @@ kodi (2:18.0+git20180719.0202-3231481-0dist) dist; urgency=high + [Philipp Kerling] + * VideoInfoScanner: Correctly redact URLs + + [wildcat2020] + * [database] Correct tvshow_view after PR #15185 merge to make sure it only returns one row per tvshow with correct strPath and idParentPath. + + [fritsch] * Set Decor-View: Transparent - ported from MRMC Binary files /tmp/tmpMh5OIF/pYpTnfpZQd/kodi-18.0+git20190112.0202-baff0a1/tools/depends/target/ffmpeg/ffmpeg-4.0.3-Leia-Beta5.tar.gz and /tmp/tmpMh5OIF/Pan42hfWUL/kodi-18.0+git20190113.0202-3cbd6c1/tools/depends/target/ffmpeg/ffmpeg-4.0.3-Leia-Beta5.tar.gz differ Binary files /tmp/tmpMh5OIF/pYpTnfpZQd/kodi-18.0+git20190112.0202-baff0a1/tools/depends/target/ffmpeg/ffmpeg-4.0.3-Leia-RC5.tar.gz and /tmp/tmpMh5OIF/Pan42hfWUL/kodi-18.0+git20190113.0202-3cbd6c1/tools/depends/target/ffmpeg/ffmpeg-4.0.3-Leia-RC5.tar.gz differ diff -Nru kodi-18.0+git20190112.0202-baff0a1/tools/depends/target/ffmpeg/FFMPEG-VERSION kodi-18.0+git20190113.0202-3cbd6c1/tools/depends/target/ffmpeg/FFMPEG-VERSION --- kodi-18.0+git20190112.0202-baff0a1/tools/depends/target/ffmpeg/FFMPEG-VERSION 2018-11-04 08:12:28.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/tools/depends/target/ffmpeg/FFMPEG-VERSION 2019-01-13 01:01:50.000000000 +0000 @@ -1,4 +1,4 @@ LIBNAME=ffmpeg BASE_URL=https://github.com/xbmc/FFmpeg -VERSION=4.0.3-Leia-Beta5 +VERSION=4.0.3-Leia-RC5 ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz diff -Nru kodi-18.0+git20190112.0202-baff0a1/VERSION kodi-18.0+git20190113.0202-3cbd6c1/VERSION --- kodi-18.0+git20190112.0202-baff0a1/VERSION 2019-01-12 01:02:05.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/VERSION 2019-01-13 01:02:05.000000000 +0000 @@ -1 +1 @@ -baff0a1 +3cbd6c1 diff -Nru kodi-18.0+git20190112.0202-baff0a1/version.txt kodi-18.0+git20190113.0202-3cbd6c1/version.txt --- kodi-18.0+git20190112.0202-baff0a1/version.txt 2018-12-30 01:00:46.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/version.txt 2019-01-13 01:01:50.000000000 +0000 @@ -5,8 +5,8 @@ VERSION_MAJOR 18 VERSION_MINOR 0 VERSION_TAG RC5 -VERSION_CODE 17.99.950 -ADDON_API 17.9.950 +VERSION_CODE 17.99.952 +ADDON_API 17.9.952 APP_PACKAGE org.xbmc.kodi PACKAGE_IDENTITY XBMCFoundation.Kodi PACKAGE_PUBLISHER C62BD90A-CDD8-477F-96C3-B25992247B97 diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/GUIInfoManager.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/GUIInfoManager.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/GUIInfoManager.cpp 2018-12-29 14:31:08.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/GUIInfoManager.cpp 2019-01-13 01:01:50.000000000 +0000 @@ -1000,6 +1000,14 @@ /// @return **True** if there is a CD or DVD in the DVD-ROM drive. ///

/// } +/// \table_row3{ `System.HasMediaAudioCD`, +/// \anchor System_HasMediaAudioCD +/// _boolean_, +/// @return **True** if there is an audio CD in the optical drive. **False** if no drive available\, empty drive or other medium. +///


+/// @skinning_v18 **[New Boolean Condition]** \link System_HasMediaAudioCD `System.HasMediaAudioCD` \endlink +///

+/// } /// \table_row3{ `System.DVDReady`, /// \anchor System_DVDReady /// _boolean_, @@ -1581,6 +1589,7 @@ /// } const infomap system_labels[] = {{ "hasnetwork", SYSTEM_ETHERNET_LINK_ACTIVE }, { "hasmediadvd", SYSTEM_MEDIA_DVD }, + { "hasmediaaudiocd", SYSTEM_MEDIA_AUDIO_CD }, { "dvdready", SYSTEM_DVDREADY }, { "trayopen", SYSTEM_TRAYOPEN }, { "haslocks", SYSTEM_HASLOCKS }, @@ -6055,7 +6064,7 @@ /// to make it easier for skins to work with custom icon sets\, it now will return the filename only /// i.e. 28.png /// @skinning_v13 **[Infolabel Updated]** \link Window_Weather_Property `Window(Weather).Property(property)`\endlink -/// added `WeatherProviderLogo` propertu - weather provider logo (for weather addons that support it). +/// added `WeatherProviderLogo` property - weather provider logo (for weather addons that support it). ///

/// } /// \table_end diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/guilib/guiinfo/GUIInfoLabels.h kodi-18.0+git20190113.0202-3cbd6c1/xbmc/guilib/guiinfo/GUIInfoLabels.h --- kodi-18.0+git20190112.0202-baff0a1/xbmc/guilib/guiinfo/GUIInfoLabels.h 2018-11-22 01:00:23.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/guilib/guiinfo/GUIInfoLabels.h 2019-01-13 01:01:50.000000000 +0000 @@ -422,6 +422,7 @@ #define SYSTEM_CAN_SUSPEND 751 #define SYSTEM_CAN_HIBERNATE 752 #define SYSTEM_CAN_REBOOT 753 +#define SYSTEM_MEDIA_AUDIO_CD 754 #define SLIDESHOW_ISPAUSED 800 #define SLIDESHOW_ISRANDOM 801 diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/guilib/guiinfo/SystemGUIInfo.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/guilib/guiinfo/SystemGUIInfo.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/guilib/guiinfo/SystemGUIInfo.cpp 2018-10-23 16:19:50.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/guilib/guiinfo/SystemGUIInfo.cpp 2019-01-13 01:01:50.000000000 +0000 @@ -488,6 +488,19 @@ case SYSTEM_MEDIA_DVD: value = g_mediaManager.IsDiscInDrive(); return true; + case SYSTEM_MEDIA_AUDIO_CD: + #ifdef HAS_DVD_DRIVE + if (g_mediaManager.IsDiscInDrive()) + { + MEDIA_DETECT::CCdInfo *pCdInfo = g_mediaManager.GetCdInfo(); + value = pCdInfo && (pCdInfo->IsAudio(1) || pCdInfo->IsCDExtra(1) || pCdInfo->IsMixedMode(1)); + } + else + #endif + { + value = false; + } + return true; #ifdef HAS_DVD_DRIVE case SYSTEM_DVDREADY: value = g_mediaManager.GetDriveStatus() != DRIVE_NOT_READY; diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/input/joysticks/generic/ButtonMapping.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/input/joysticks/generic/ButtonMapping.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/input/joysticks/generic/ButtonMapping.cpp 2018-10-03 07:06:27.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/input/joysticks/generic/ButtonMapping.cpp 2019-01-13 01:01:50.000000000 +0000 @@ -531,7 +531,7 @@ } // Report axis - CLog::Log(LOGDEBUG, "Axis %u discovered at position %.04f after %lu frames", + CLog::Log(LOGDEBUG, "Axis %u discovered at position %.4f after %lu frames", axisIndex, position, static_cast(m_frameCount)); m_axes.insert(std::make_pair(axisIndex, CAxisDetector(this, axisIndex, config))); diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/settings/DisplaySettings.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/settings/DisplaySettings.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/settings/DisplaySettings.cpp 2018-12-29 14:31:08.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/settings/DisplaySettings.cpp 2019-01-13 01:01:50.000000000 +0000 @@ -738,7 +738,7 @@ std::string screenmode = GetStringFromResolution((RESOLUTION)refreshrate->ResInfo_Index, refreshrate->RefreshRate); if (!match && StringUtils::EqualsNoCase(std::static_pointer_cast(setting)->GetValue(), screenmode)) match = true; - list.push_back(std::make_pair(StringUtils::Format("%.02f", refreshrate->RefreshRate), screenmode)); + list.push_back(std::make_pair(StringUtils::Format("%.2f", refreshrate->RefreshRate), screenmode)); } if (!match) diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/utils/SortUtils.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/utils/SortUtils.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/utils/SortUtils.cpp 2019-01-02 01:01:44.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/utils/SortUtils.cpp 2019-01-13 01:01:50.000000000 +0000 @@ -349,7 +349,7 @@ std::string ByVideoAspectRatio(SortAttribute attributes, const SortItem &values) { - return StringUtils::Format("%.03f %s", values.at(FieldVideoAspectRatio).asFloat(), ByLabel(attributes, values).c_str()); + return StringUtils::Format("%.3f %s", values.at(FieldVideoAspectRatio).asFloat(), ByLabel(attributes, values).c_str()); } std::string ByAudioChannels(SortAttribute attributes, const SortItem &values) diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/utils/StringUtils.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/utils/StringUtils.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/utils/StringUtils.cpp 2018-07-31 18:47:40.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/utils/StringUtils.cpp 2019-01-13 01:01:50.000000000 +0000 @@ -964,7 +964,7 @@ } if (!i) - strLabel = StringUtils::Format("%.0lf B", s); + strLabel = StringUtils::Format("%.lf B", s); else if (i == ARRAY_SIZE(prefixes)) { if (s >= 1000.0) diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/video/VideoDatabase.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/video/VideoDatabase.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/video/VideoDatabase.cpp 2019-01-12 01:01:51.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/video/VideoDatabase.cpp 2019-01-13 01:01:51.000000000 +0000 @@ -397,6 +397,20 @@ "GROUP BY tvshow.idShow"); m_pDS->exec(tvshowcounts); + CLog::Log(LOGINFO, "create tvshowlinkpath_minview"); + // This view only exists to workaround a limitation in MySQL <5.7 which is not able to + // perform subqueries in joins. + // Also, the correct solution is to remove the path information altogether, since a + // TV series can always have multiple paths. It is used in the GUI at the moment, but + // such usage should be removed together with this view and the path columns in tvshow_view. + //!@todo Remove the hacky selection of a semi-random path for tvshows from the queries and UI + std::string tvshowlinkpathview = PrepareSQL("CREATE VIEW tvshowlinkpath_minview AS SELECT " + " idShow, " + " min(idPath) AS idPath " + "FROM tvshowlinkpath " + "GROUP BY idShow"); + m_pDS->exec(tvshowlinkpathview); + CLog::Log(LOGINFO, "create tvshow_view"); std::string tvshowview = PrepareSQL("CREATE VIEW tvshow_view AS SELECT " " tvshow.*," @@ -410,12 +424,10 @@ " uniqueid.value AS uniqueid_value, " " uniqueid.type AS uniqueid_type " "FROM tvshow" - " LEFT JOIN (SELECT idShow, MAX(idPath) as idPath " - " FROM tvshowlinkpath " - " GROUP BY tvshowlinkpath.idShow) AS tvshowlinkpath ON " - " tvshowlinkpath.idShow=tvshow.idShow" + " LEFT JOIN tvshowlinkpath_minview ON " + " tvshowlinkpath_minview.idShow=tvshow.idShow" " LEFT JOIN path ON" - " path.idPath=tvshowlinkpath.idPath" + " path.idPath=tvshowlinkpath_minview.idPath" " INNER JOIN tvshowcounts ON" " tvshow.idShow = tvshowcounts.idShow " " LEFT JOIN rating ON" @@ -450,17 +462,17 @@ " JOIN files ON" " files.idFile = episode.idFile " "GROUP BY seasons.idSeason," - " seasons.idShow," - " seasons.season," - " seasons.name," - " seasons.userrating," - " tvshow_view.strPath," - " tvshow_view.c%02d," - " tvshow_view.c%02d," - " tvshow_view.c%02d," - " tvshow_view.c%02d," - " tvshow_view.c%02d," - " tvshow_view.c%02d ", + " seasons.idShow," + " seasons.season," + " seasons.name," + " seasons.userrating," + " tvshow_view.strPath," + " tvshow_view.c%02d," + " tvshow_view.c%02d," + " tvshow_view.c%02d," + " tvshow_view.c%02d," + " tvshow_view.c%02d," + " tvshow_view.c%02d ", VIDEODB_ID_TV_TITLE, VIDEODB_ID_TV_PLOT, VIDEODB_ID_TV_PREMIERED, VIDEODB_ID_TV_GENRE, VIDEODB_ID_TV_STUDIOS, VIDEODB_ID_TV_MPAA, VIDEODB_ID_EPISODE_AIRED, VIDEODB_ID_EPISODE_SEASON, @@ -5455,7 +5467,7 @@ int CVideoDatabase::GetSchemaVersion() const { - return 115; + return 116; } bool CVideoDatabase::LookupByFolders(const std::string &path, bool shows) diff -Nru kodi-18.0+git20190112.0202-baff0a1/xbmc/windowing/X11/GLContextEGL.cpp kodi-18.0+git20190113.0202-3cbd6c1/xbmc/windowing/X11/GLContextEGL.cpp --- kodi-18.0+git20190112.0202-baff0a1/xbmc/windowing/X11/GLContextEGL.cpp 2018-12-29 14:31:08.000000000 +0000 +++ kodi-18.0+git20190113.0202-3cbd6c1/xbmc/windowing/X11/GLContextEGL.cpp 2019-01-13 01:01:51.000000000 +0000 @@ -433,7 +433,6 @@ if ((msc1 - m_sync.msc1) > 2) { m_sync.cont = 0; - CLog::Log(LOGDEBUG, "CGLContextEGL::SwapBuffers: sync reset"); } // we want to block in SwapBuffers @@ -449,7 +448,6 @@ { m_sync.interval = (ust1 - m_sync.ust1) / (msc1 - m_sync.msc1); m_sync.cont++; - CLog::Log(LOGDEBUG, "CGLContextEGL::SwapBuffers: sync interval: %ld", m_sync.interval); } } else if (m_sync.cont == 5 && m_omlSync)