diff -Nru kodi-18.0+git20180517.0201-afaf815/addons/resource.language.en_gb/resources/strings.po kodi-18.0+git20180518.0201-d675125/addons/resource.language.en_gb/resources/strings.po --- kodi-18.0+git20180517.0201-afaf815/addons/resource.language.en_gb/resources/strings.po 2018-05-17 00:01:40.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/addons/resource.language.en_gb/resources/strings.po 2018-05-18 00:01:32.000000000 +0000 @@ -3150,7 +3150,12 @@ msgid "Verbose logging of [B]audio/video timing information[/B]" msgstr "" -#empty strings from id 684 to 699 +#: xbmc/settings/AdvancedSettings.cpp +msgctxt "#684" +msgid "Verbose logging of [B]Windowing[/B] component" +msgstr "" + +#empty strings from id 685 to 699 #: xbmc/music/infoscanner/MusicInfoScanner.cpp #: xbmc/music/MusicDatabase.cpp @@ -21265,3 +21270,8 @@ msgctxt "#39109" msgid "Select Program" msgstr "" + +#: xbmc/video/PlayerController.cpp +msgctxt "#39110" +msgid "Select Resolution" +msgstr "" diff -Nru kodi-18.0+git20180517.0201-afaf815/addons/skin.estuary/language/resource.language.en_gb/strings.po kodi-18.0+git20180518.0201-d675125/addons/skin.estuary/language/resource.language.en_gb/strings.po --- kodi-18.0+git20180517.0201-afaf815/addons/skin.estuary/language/resource.language.en_gb/strings.po 2018-05-01 00:00:09.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/addons/skin.estuary/language/resource.language.en_gb/strings.po 2018-05-18 00:01:32.000000000 +0000 @@ -598,7 +598,12 @@ msgid "Select Program" msgstr "" -#empty string with id 31133 +#: /xml/Custom_1101_SettingsList.xml +msgctxt "#31133" +msgid "Select Resolution" +msgstr "" + +#empty string with id 31134 #: /xml/DialogSeekBar.xml msgctxt "#31134" diff -Nru kodi-18.0+git20180517.0201-afaf815/addons/skin.estuary/xml/Custom_1101_SettingsList.xml kodi-18.0+git20180518.0201-d675125/addons/skin.estuary/xml/Custom_1101_SettingsList.xml --- kodi-18.0+git20180517.0201-afaf815/addons/skin.estuary/xml/Custom_1101_SettingsList.xml 2018-05-01 00:00:09.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/addons/skin.estuary/xml/Custom_1101_SettingsList.xml 2018-05-18 00:01:32.000000000 +0000 @@ -22,7 +22,7 @@ String.IsEqual(window(home).Property(settingslist_content),osd) 700 - 360 + 420 0 11100 11100 @@ -66,6 +66,13 @@ PlayerProgramSelect Player.HasPrograms + + 700 + DialogSettingButton + + PlayerResolutionSelect + Player.HasResolutions + String.IsEqual(window(home).Property(settingslist_content),3d) diff -Nru kodi-18.0+git20180517.0201-afaf815/cmake/modules/FindLibInput.cmake kodi-18.0+git20180518.0201-d675125/cmake/modules/FindLibInput.cmake --- kodi-18.0+git20180517.0201-afaf815/cmake/modules/FindLibInput.cmake 2018-05-01 00:00:11.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/cmake/modules/FindLibInput.cmake 2018-05-18 00:01:32.000000000 +0000 @@ -29,7 +29,7 @@ VERSION_VAR LIBINPUT_VERSION) if(LIBINPUT_FOUND) - set(LIBINPUT_INCLUDE_DIRS ${LIBINPUT_INCLUDE_DIR}}) + set(LIBINPUT_INCLUDE_DIRS ${LIBINPUT_INCLUDE_DIR}) set(LIBINPUT_LIBRARIES ${LIBINPUT_LIBRARY}) endif() diff -Nru kodi-18.0+git20180517.0201-afaf815/cmake/scripts/freebsd/Install.cmake kodi-18.0+git20180518.0201-d675125/cmake/scripts/freebsd/Install.cmake --- kodi-18.0+git20180517.0201-afaf815/cmake/scripts/freebsd/Install.cmake 2018-05-01 00:00:11.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/cmake/scripts/freebsd/Install.cmake 2018-05-18 00:01:32.000000000 +0000 @@ -127,6 +127,13 @@ DESTINATION ${datarootdir}/icons/hicolor/256x256/apps COMPONENT kodi) +# Install firewalld service definitions +install(FILES ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-eventserver.xml + ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-http.xml + ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-jsonrpc.xml + DESTINATION ${prefix}/lib/firewalld/services + COMPONENT kodi) + # Install docs install(FILES ${CMAKE_SOURCE_DIR}/copying.txt ${CMAKE_SOURCE_DIR}/LICENSE.GPL diff -Nru kodi-18.0+git20180517.0201-afaf815/cmake/scripts/linux/Install.cmake kodi-18.0+git20180518.0201-d675125/cmake/scripts/linux/Install.cmake --- kodi-18.0+git20180517.0201-afaf815/cmake/scripts/linux/Install.cmake 2018-05-01 00:00:11.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/cmake/scripts/linux/Install.cmake 2018-05-18 00:01:32.000000000 +0000 @@ -127,6 +127,13 @@ DESTINATION ${datarootdir}/icons/hicolor/256x256/apps COMPONENT kodi) +# Install firewalld service definitions +install(FILES ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-eventserver.xml + ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-http.xml + ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-jsonrpc.xml + DESTINATION ${prefix}/lib/firewalld/services + COMPONENT kodi) + # Install docs install(FILES ${CMAKE_SOURCE_DIR}/copying.txt ${CMAKE_SOURCE_DIR}/LICENSE.GPL diff -Nru kodi-18.0+git20180517.0201-afaf815/debian/changelog kodi-18.0+git20180518.0201-d675125/debian/changelog --- kodi-18.0+git20180517.0201-afaf815/debian/changelog 2018-05-17 00:07:25.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/debian/changelog 2018-05-18 00:07:51.000000000 +0000 @@ -1,4 +1,32 @@ -kodi (2:18.0+git20180517.0201-afaf815-0artful) artful; urgency=high +kodi (2:18.0+git20180518.0201-d675125-0artful) artful; urgency=high + + [Rainer Hochecker] + * fix duplicate options in resolutions whitelist + + [Rainer Hochecker] + * allow user to select resolutions + + [peak3d] + * [Android] add addon getter for main class name (org/xbmc/kodi) + + [root] + * cmake: fix minors + + [peak3d] + * Advancedsettings: Allow control if IR server is used or not + + [peak3d] + * [WIN] Log windowing related debug messages only if LOGWINDOWING log group is enabled + + [peak3d] + * Add LOGWINDOWING component log secion + + [Lukas Rusak] + * vaapi: move setting constants out of CSettings + + [Peter Oliver] + * Provide firewalld service definitions + [peak3d] * Provide audiocodec name to VideoPlayerAudio diff -Nru kodi-18.0+git20180517.0201-afaf815/debian/changelog.tmp kodi-18.0+git20180518.0201-d675125/debian/changelog.tmp --- kodi-18.0+git20180517.0201-afaf815/debian/changelog.tmp 2018-05-17 00:02:47.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/debian/changelog.tmp 2018-05-18 00:02:40.000000000 +0000 @@ -1,4 +1,32 @@ -kodi (2:18.0+git20180517.0201-afaf815-0dist) dist; urgency=high +kodi (2:18.0+git20180518.0201-d675125-0dist) dist; urgency=high + + [Rainer Hochecker] + * fix duplicate options in resolutions whitelist + + [Rainer Hochecker] + * allow user to select resolutions + + [peak3d] + * [Android] add addon getter for main class name (org/xbmc/kodi) + + [root] + * cmake: fix minors + + [peak3d] + * Advancedsettings: Allow control if IR server is used or not + + [peak3d] + * [WIN] Log windowing related debug messages only if LOGWINDOWING log group is enabled + + [peak3d] + * Add LOGWINDOWING component log secion + + [Lukas Rusak] + * vaapi: move setting constants out of CSettings + + [Peter Oliver] + * Provide firewalld service definitions + [peak3d] * Provide audiocodec name to VideoPlayerAudio diff -Nru kodi-18.0+git20180517.0201-afaf815/debian/changelog.tmp.old kodi-18.0+git20180518.0201-d675125/debian/changelog.tmp.old --- kodi-18.0+git20180517.0201-afaf815/debian/changelog.tmp.old 2018-05-17 00:01:57.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/debian/changelog.tmp.old 2018-05-18 00:01:51.000000000 +0000 @@ -1,5 +1,33 @@ kodi (2:18.0+git20171029.0201-910143c-0dist) dist; urgency=high + [peak3d] + * Provide audiocodec name to VideoPlayerAudio + + [peak3d] + * [Android] Dolby transcoder + + [peak3d] + * Remove AudioCodec::GetData(uint8_t**) from Interface + + [ronie] + * [Estuary] MusicInfo - Fix play button & navigation + + [Chris "Koying" Browet] + * ADD: [droid] implement IOSScreenSaver + + [DaveTBlake] + * Add advanced setting MusicAlbumExtraArt to optionally set extra art types to fetch automatically for albums. During scanning or scraping fetch these extra types of art from correctly named local files. Failing that fetch first art of that type from scraper URL list + + [DaveTBlake] + * Advanced setting MusicArtistExtraArt optionally set extra art types to fetch automatically. Case insensitive image file search to pick up extra types of art from local files. Failing that fetch first from scraper URL list + + [DaveTBlake] + * Check for missing individual types of artist art after scraping to fill any gaps. Use common methods when first looking for artist local art during scan. + + [DaveTBlake] + * Album and artist art selection: find local art for all art types consistently. Allow for alternative thumb and fanart file names from advanced settings. Pick up any type of art from local files where image filename case insensitively matches art type. + + [Rechi] * [fix] redact filename in omximage diff -Nru kodi-18.0+git20180517.0201-afaf815/gitrev kodi-18.0+git20180518.0201-d675125/gitrev --- kodi-18.0+git20180517.0201-afaf815/gitrev 2018-05-17 00:01:57.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/gitrev 2018-05-18 00:01:51.000000000 +0000 @@ -1 +1 @@ -afaf815 +d675125 diff -Nru kodi-18.0+git20180517.0201-afaf815/tools/Linux/firewalld-services/kodi-eventserver.xml kodi-18.0+git20180518.0201-d675125/tools/Linux/firewalld-services/kodi-eventserver.xml --- kodi-18.0+git20180517.0201-afaf815/tools/Linux/firewalld-services/kodi-eventserver.xml 1970-01-01 00:00:00.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/tools/Linux/firewalld-services/kodi-eventserver.xml 2018-05-18 00:01:32.000000000 +0000 @@ -0,0 +1,6 @@ + + + Kodi EventServer + Kodi is a free cross-platform media-player jukebox and entertainment hub. Enable this option to remotely control Kodi via its EventServer API. + + diff -Nru kodi-18.0+git20180517.0201-afaf815/tools/Linux/firewalld-services/kodi-http.xml kodi-18.0+git20180518.0201-d675125/tools/Linux/firewalld-services/kodi-http.xml --- kodi-18.0+git20180517.0201-afaf815/tools/Linux/firewalld-services/kodi-http.xml 1970-01-01 00:00:00.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/tools/Linux/firewalld-services/kodi-http.xml 2018-05-18 00:01:32.000000000 +0000 @@ -0,0 +1,6 @@ + + + Kodi web interface + Kodi is a free cross-platform media-player jukebox and entertainment hub. Enable this option to remotely control Kodi via its web interface. + + diff -Nru kodi-18.0+git20180517.0201-afaf815/tools/Linux/firewalld-services/kodi-jsonrpc.xml kodi-18.0+git20180518.0201-d675125/tools/Linux/firewalld-services/kodi-jsonrpc.xml --- kodi-18.0+git20180517.0201-afaf815/tools/Linux/firewalld-services/kodi-jsonrpc.xml 1970-01-01 00:00:00.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/tools/Linux/firewalld-services/kodi-jsonrpc.xml 2018-05-18 00:01:32.000000000 +0000 @@ -0,0 +1,6 @@ + + + Kodi JSON-RPC + Kodi is a free cross-platform media-player jukebox and entertainment hub. Enable this option to remotely control Kodi via its JSON-RPC API. + + diff -Nru kodi-18.0+git20180517.0201-afaf815/VERSION kodi-18.0+git20180518.0201-d675125/VERSION --- kodi-18.0+git20180517.0201-afaf815/VERSION 2018-05-17 00:01:57.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/VERSION 2018-05-18 00:01:51.000000000 +0000 @@ -1 +1 @@ -afaf815 +d675125 diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/addons/interfaces/platform/android/System.cpp kodi-18.0+git20180518.0201-d675125/xbmc/addons/interfaces/platform/android/System.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/addons/interfaces/platform/android/System.cpp 2018-05-01 00:00:23.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/addons/interfaces/platform/android/System.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -19,6 +19,7 @@ */ #include "System.h" +#include "CompileInfo.h" #include "addons/binary-addons/AddonDll.h" #include "addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h" @@ -33,6 +34,7 @@ { function_table.get_jni_env = get_jni_env; function_table.get_sdk_version = get_sdk_version; + function_table.get_class_name = get_class_name; CAddonDll::RegisterInterface(Get); } @@ -56,4 +58,10 @@ return CXBMCApp::get()->getActivity()->sdkVersion; } +const char *Interface_Android::get_class_name() +{ + return CCompileInfo::GetClass(); +} + + } //namespace ADDON diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/addons/interfaces/platform/android/System.h kodi-18.0+git20180518.0201-d675125/xbmc/addons/interfaces/platform/android/System.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/addons/interfaces/platform/android/System.h 2018-05-01 00:00:23.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/addons/interfaces/platform/android/System.h 2018-05-18 00:01:32.000000000 +0000 @@ -31,6 +31,7 @@ static void* get_jni_env(); static int get_sdk_version(); + static const char *get_class_name(); }; } //namespace ADDON diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h kodi-18.0+git20180518.0201-d675125/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h 2018-05-01 00:00:23.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h 2018-05-18 00:01:32.000000000 +0000 @@ -34,13 +34,14 @@ */ static const char* INTERFACE_ANDROID_SYSTEM_NAME = "ANDROID_SYSTEM"; -static const char* INTERFACE_ANDROID_SYSTEM_VERSION = "1.0.0"; -static const char* INTERFACE_ANDROID_SYSTEM_VERSION_MIN = "1.0.0"; +static const char* INTERFACE_ANDROID_SYSTEM_VERSION = "1.0.1"; +static const char* INTERFACE_ANDROID_SYSTEM_VERSION_MIN = "1.0.1"; struct AddonToKodiFuncTable_android_system { void* (*get_jni_env)(); int (*get_sdk_version)(); + const char *(*get_class_name)(); }; //============================================================================== @@ -99,6 +100,22 @@ return 0; } + //============================================================================ + /// + /// \ingroup cpp_kodi_platform + /// @brief request the android main class name e.g. org.xbmc.kodi. + /// + /// @param[in]: + /// @return package class name + /// + inline std::string GetClassName() + { + if (m_interface) + return m_interface->get_class_name(); + + return std::string(); + } + private: AddonToKodiFuncTable_android_system *m_interface; }; diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/commons/ilog.h kodi-18.0+git20180518.0201-d675125/xbmc/commons/ilog.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/commons/ilog.h 2018-05-01 00:00:23.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/commons/ilog.h 2018-05-18 00:01:32.000000000 +0000 @@ -55,6 +55,7 @@ #define LOGWEBSERVER (1 << (LOGMASKBIT + 11)) #define LOGDATABASE (1 << (LOGMASKBIT + 12)) #define LOGAVTIMING (1 << (LOGMASKBIT + 13)) +#define LOGWINDOWING (1 << (LOGMASKBIT + 14)) #include "utils/params_check_macros.h" diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp kodi-18.0+git20180518.0201-d675125/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp 2018-05-13 00:01:28.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -59,7 +59,14 @@ using namespace VAAPI; #define NUM_RENDER_PICS 7 +const std::string SETTING_VIDEOPLAYER_USEVAAPI = "videoplayer.usevaapi"; const std::string SETTING_VIDEOPLAYER_USEVAAPIHEVC = "videoplayer.usevaapihevc"; +const std::string SETTING_VIDEOPLAYER_USEVAAPIMPEG2 = "videoplayer.usevaapimpeg2"; +const std::string SETTING_VIDEOPLAYER_USEVAAPIMPEG4 = "videoplayer.usevaapimpeg4"; +const std::string SETTING_VIDEOPLAYER_USEVAAPIVC1 = "videoplayer.usevaapivc1"; +const std::string SETTING_VIDEOPLAYER_USEVAAPIVP8 = "videoplayer.usevaapivp8"; +const std::string SETTING_VIDEOPLAYER_USEVAAPIVP9 = "videoplayer.usevaapivp9"; +const std::string SETTING_VIDEOPLAYER_PREFERVAAPIRENDER = "videoplayer.prefervaapirender"; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- @@ -502,13 +509,13 @@ // check if user wants to decode this format with VAAPI std::map settings_map = { - { AV_CODEC_ID_H263, CSettings::SETTING_VIDEOPLAYER_USEVAAPIMPEG4 }, - { AV_CODEC_ID_MPEG4, CSettings::SETTING_VIDEOPLAYER_USEVAAPIMPEG4 }, - { AV_CODEC_ID_WMV3, CSettings::SETTING_VIDEOPLAYER_USEVAAPIVC1 }, - { AV_CODEC_ID_VC1, CSettings::SETTING_VIDEOPLAYER_USEVAAPIVC1 }, - { AV_CODEC_ID_MPEG2VIDEO, CSettings::SETTING_VIDEOPLAYER_USEVAAPIMPEG2 }, - { AV_CODEC_ID_VP8, CSettings::SETTING_VIDEOPLAYER_USEVAAPIVP8 }, - { AV_CODEC_ID_VP9, CSettings::SETTING_VIDEOPLAYER_USEVAAPIVP9 }, + { AV_CODEC_ID_H263, SETTING_VIDEOPLAYER_USEVAAPIMPEG4 }, + { AV_CODEC_ID_MPEG4, SETTING_VIDEOPLAYER_USEVAAPIMPEG4 }, + { AV_CODEC_ID_WMV3, SETTING_VIDEOPLAYER_USEVAAPIVC1 }, + { AV_CODEC_ID_VC1, SETTING_VIDEOPLAYER_USEVAAPIVC1 }, + { AV_CODEC_ID_MPEG2VIDEO, SETTING_VIDEOPLAYER_USEVAAPIMPEG2 }, + { AV_CODEC_ID_VP8, SETTING_VIDEOPLAYER_USEVAAPIVP8 }, + { AV_CODEC_ID_VP9, SETTING_VIDEOPLAYER_USEVAAPIVP9 }, { AV_CODEC_ID_HEVC, SETTING_VIDEOPLAYER_USEVAAPIHEVC }, }; @@ -1186,7 +1193,7 @@ IHardwareDecoder* CDecoder::Create(CDVDStreamInfo &hint, CProcessInfo &processInfo, AVPixelFormat fmt) { - if (fmt == AV_PIX_FMT_VAAPI_VLD && CServiceBroker::GetSettings().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVAAPI)) + if (fmt == AV_PIX_FMT_VAAPI_VLD && CServiceBroker::GetSettings().GetBool(SETTING_VIDEOPLAYER_USEVAAPI)) return new VAAPI::CDecoder(processInfo); return nullptr; @@ -1205,12 +1212,12 @@ CDVDFactoryCodec::RegisterHWAccel("vaapi", CDecoder::Create); config.context->Release(nullptr); - CServiceBroker::GetSettings().GetSetting(CSettings::SETTING_VIDEOPLAYER_USEVAAPI)->SetVisible(true); - CServiceBroker::GetSettings().GetSetting(CSettings::SETTING_VIDEOPLAYER_USEVAAPIMPEG4)->SetVisible(true); - CServiceBroker::GetSettings().GetSetting(CSettings::SETTING_VIDEOPLAYER_USEVAAPIVC1)->SetVisible(true); - CServiceBroker::GetSettings().GetSetting(CSettings::SETTING_VIDEOPLAYER_USEVAAPIMPEG2)->SetVisible(true); - CServiceBroker::GetSettings().GetSetting(CSettings::SETTING_VIDEOPLAYER_USEVAAPIVP8)->SetVisible(true); - CServiceBroker::GetSettings().GetSetting(CSettings::SETTING_VIDEOPLAYER_USEVAAPIVP9)->SetVisible(true); + CServiceBroker::GetSettings().GetSetting(SETTING_VIDEOPLAYER_USEVAAPI)->SetVisible(true); + CServiceBroker::GetSettings().GetSetting(SETTING_VIDEOPLAYER_USEVAAPIMPEG4)->SetVisible(true); + CServiceBroker::GetSettings().GetSetting(SETTING_VIDEOPLAYER_USEVAAPIVC1)->SetVisible(true); + CServiceBroker::GetSettings().GetSetting(SETTING_VIDEOPLAYER_USEVAAPIMPEG2)->SetVisible(true); + CServiceBroker::GetSettings().GetSetting(SETTING_VIDEOPLAYER_USEVAAPIVP8)->SetVisible(true); + CServiceBroker::GetSettings().GetSetting(SETTING_VIDEOPLAYER_USEVAAPIVP9)->SetVisible(true); CServiceBroker::GetSettings().GetSetting(SETTING_VIDEOPLAYER_USEVAAPIHEVC)->SetVisible(true); } @@ -2027,7 +2034,7 @@ } if (!m_pp) { - const bool preferVaapiRender = CServiceBroker::GetSettings().GetBool(CSettings::SETTING_VIDEOPLAYER_PREFERVAAPIRENDER); + const bool preferVaapiRender = CServiceBroker::GetSettings().GetBool(SETTING_VIDEOPLAYER_PREFERVAAPIRENDER); // For 1080p/i or below, always use CVppPostproc even when not deinterlacing // Reason is: mesa cannot dynamically switch surfaces between use for VAAPI post-processing // and use for direct export, so we run into trouble if we or the user want to switch @@ -3151,7 +3158,7 @@ else if (method == VS_INTERLACEMETHOD_RENDER_BOB) return true; else if (method == VS_INTERLACEMETHOD_NONE && - !CServiceBroker::GetSettings().GetBool(CSettings::SETTING_VIDEOPLAYER_PREFERVAAPIRENDER)) + !CServiceBroker::GetSettings().GetBool(SETTING_VIDEOPLAYER_PREFERVAAPIRENDER)) return true; return false; diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/GUIInfoManager.cpp kodi-18.0+git20180518.0201-d675125/xbmc/GUIInfoManager.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/GUIInfoManager.cpp 2018-05-12 00:01:22.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/GUIInfoManager.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -395,7 +395,8 @@ { "tempoenabled", PLAYER_SUPPORTS_TEMPO}, { "istempo", PLAYER_IS_TEMPO}, { "playspeed", PLAYER_PLAYSPEED}, - { "hasprograms", PLAYER_HAS_PROGRAMS}}; + { "hasprograms", PLAYER_HAS_PROGRAMS}, + { "hasresolutions", PLAYER_HAS_RESOLUTIONS}}; /// \page modules__General__List_of_gui_access /// @{ diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/guilib/guiinfo/GUIInfoLabels.h kodi-18.0+git20180518.0201-d675125/xbmc/guilib/guiinfo/GUIInfoLabels.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/guilib/guiinfo/GUIInfoLabels.h 2018-05-01 00:00:27.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/guilib/guiinfo/GUIInfoLabels.h 2018-05-18 00:01:32.000000000 +0000 @@ -79,6 +79,7 @@ #define PLAYER_SEEKNUMERIC 61 #define PLAYER_HAS_GAME 62 #define PLAYER_HAS_PROGRAMS 63 +#define PLAYER_HAS_RESOLUTIONS 64 #define WEATHER_CONDITIONS_TEXT 100 #define WEATHER_TEMPERATURE 101 diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/guilib/guiinfo/PlayerGUIInfo.cpp kodi-18.0+git20180518.0201-d675125/xbmc/guilib/guiinfo/PlayerGUIInfo.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/guilib/guiinfo/PlayerGUIInfo.cpp 2018-05-05 00:01:44.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/guilib/guiinfo/PlayerGUIInfo.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -523,6 +523,10 @@ case PLAYER_HAS_PROGRAMS: value = (g_application.GetAppPlayer().GetProgramsCount() > 1) ? true : false; return true; + case PLAYER_HAS_RESOLUTIONS: + value = CServiceBroker::GetWinSystem()->GetGfxContext().IsFullScreenRoot() && + CResolutionUtils::HasWhitelist(); + return true; case PLAYER_HASDURATION: value = g_application.GetTotalTime() > 0; return true; diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/input/ActionIDs.h kodi-18.0+git20180518.0201-d675125/xbmc/input/ActionIDs.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/input/ActionIDs.h 2018-05-01 00:00:27.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/input/ActionIDs.h 2018-05-18 00:01:32.000000000 +0000 @@ -104,6 +104,7 @@ #define ACTION_PLAYER_PROCESS_INFO 69 //!< show player process info (video decoder, pixel format, pvr signal strength and the like #define ACTION_PLAYER_PROGRAM_SELECT 70 +#define ACTION_PLAYER_RESOLUTION_SELECT 71 #define ACTION_SMALL_STEP_BACK 76 //!< jumps a few seconds back during playback of movie. Can b used in videoFullScreen.xml window id=2005 #define ACTION_PLAYER_FORWARD 77 //!< FF in current file played. global action, can be used anywhere diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/input/ActionTranslator.cpp kodi-18.0+git20180518.0201-d675125/xbmc/input/ActionTranslator.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/input/ActionTranslator.cpp 2018-05-01 00:00:27.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/input/ActionTranslator.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -68,6 +68,7 @@ { "codecinfo" , ACTION_PLAYER_PROCESS_INFO }, { "playerprocessinfo" , ACTION_PLAYER_PROCESS_INFO }, { "playerprogramselect" , ACTION_PLAYER_PROGRAM_SELECT }, + { "playerresolutionselect" , ACTION_PLAYER_RESOLUTION_SELECT }, { "nextpicture" , ACTION_NEXT_PICTURE }, { "previouspicture" , ACTION_PREV_PICTURE }, { "zoomout" , ACTION_ZOOM_OUT }, diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/settings/AdvancedSettings.cpp kodi-18.0+git20180518.0201-d675125/xbmc/settings/AdvancedSettings.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/settings/AdvancedSettings.cpp 2018-05-17 00:01:40.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/settings/AdvancedSettings.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -255,6 +255,7 @@ m_remoteDelay = 3; m_controllerDeadzone = 0.2f; + m_bScanIRServer = true; m_playlistAsFolders = true; m_detectAsUdf = false; @@ -1039,6 +1040,8 @@ XMLUtils::GetInt(pRootElement, "remotedelay", m_remoteDelay, 0, 20); XMLUtils::GetFloat(pRootElement, "controllerdeadzone", m_controllerDeadzone, 0.0f, 1.0f); + XMLUtils::GetBoolean(pRootElement, "scanirserver", m_bScanIRServer); + XMLUtils::GetUInt(pRootElement, "fanartres", m_fanartRes, 0, 9999); XMLUtils::GetUInt(pRootElement, "imageres", m_imageRes, 0, 9999); if (XMLUtils::GetString(pRootElement, "imagescalingalgorithm", tmp)) @@ -1403,6 +1406,7 @@ list.push_back(std::make_pair(g_localizeStrings.Get(676), LOGAUDIO)); list.push_back(std::make_pair(g_localizeStrings.Get(680), LOGVIDEO)); list.push_back(std::make_pair(g_localizeStrings.Get(683), LOGAVTIMING)); + list.push_back(std::make_pair(g_localizeStrings.Get(684), LOGWINDOWING)); #ifdef HAS_DBUS list.push_back(std::make_pair(g_localizeStrings.Get(674), LOGDBUS)); #endif diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/settings/AdvancedSettings.h kodi-18.0+git20180518.0201-d675125/xbmc/settings/AdvancedSettings.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/settings/AdvancedSettings.h 2018-05-17 00:01:40.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/settings/AdvancedSettings.h 2018-05-18 00:01:32.000000000 +0000 @@ -233,6 +233,7 @@ StringMapping m_pathSubstitutions; int m_remoteDelay; ///< \brief number of remote messages to ignore before repeating float m_controllerDeadzone; + bool m_bScanIRServer; bool m_playlistAsFolders; bool m_detectAsUdf; diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/settings/DisplaySettings.cpp kodi-18.0+git20180518.0201-d675125/xbmc/settings/DisplaySettings.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/settings/DisplaySettings.cpp 2018-05-05 00:01:44.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/settings/DisplaySettings.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -666,7 +666,7 @@ RESOLUTION res = CDisplaySettings::GetInstance().GetDisplayResolution(); RESOLUTION_INFO info = CDisplaySettings::GetInstance().GetResolutionInfo(res); - for (auto index = (unsigned int)RES_DESKTOP; index < CDisplaySettings::GetInstance().ResolutionInfoSize(); ++index) + for (auto index = (unsigned int)RES_CUSTOM; index < CDisplaySettings::GetInstance().ResolutionInfoSize(); ++index) { const auto mode = CDisplaySettings::GetInstance().GetResolutionInfo(index); diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/settings/Settings.cpp kodi-18.0+git20180518.0201-d675125/xbmc/settings/Settings.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/settings/Settings.cpp 2018-05-06 00:01:28.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/settings/Settings.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -163,13 +163,6 @@ const std::string CSettings::SETTING_VIDEOPLAYER_USEVDPAUMPEG2 = "videoplayer.usevdpaumpeg2"; const std::string CSettings::SETTING_VIDEOPLAYER_USEVDPAUMPEG4 = "videoplayer.usevdpaumpeg4"; const std::string CSettings::SETTING_VIDEOPLAYER_USEVDPAUVC1 = "videoplayer.usevdpauvc1"; -const std::string CSettings::SETTING_VIDEOPLAYER_USEVAAPI = "videoplayer.usevaapi"; -const std::string CSettings::SETTING_VIDEOPLAYER_USEVAAPIMPEG2 = "videoplayer.usevaapimpeg2"; -const std::string CSettings::SETTING_VIDEOPLAYER_USEVAAPIMPEG4 = "videoplayer.usevaapimpeg4"; -const std::string CSettings::SETTING_VIDEOPLAYER_USEVAAPIVC1 = "videoplayer.usevaapivc1"; -const std::string CSettings::SETTING_VIDEOPLAYER_USEVAAPIVP8 = "videoplayer.usevaapivp8"; -const std::string CSettings::SETTING_VIDEOPLAYER_USEVAAPIVP9 = "videoplayer.usevaapivp9"; -const std::string CSettings::SETTING_VIDEOPLAYER_PREFERVAAPIRENDER = "videoplayer.prefervaapirender"; const std::string CSettings::SETTING_VIDEOPLAYER_USEDXVA2 = "videoplayer.usedxva2"; const std::string CSettings::SETTING_VIDEOPLAYER_USEOMXPLAYER = "videoplayer.useomxplayer"; const std::string CSettings::SETTING_VIDEOPLAYER_USEVTB = "videoplayer.usevtb"; diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/settings/Settings.h kodi-18.0+git20180518.0201-d675125/xbmc/settings/Settings.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/settings/Settings.h 2018-05-06 00:01:28.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/settings/Settings.h 2018-05-18 00:01:32.000000000 +0000 @@ -117,13 +117,6 @@ static const std::string SETTING_VIDEOPLAYER_USEVDPAUMPEG2; static const std::string SETTING_VIDEOPLAYER_USEVDPAUMPEG4; static const std::string SETTING_VIDEOPLAYER_USEVDPAUVC1; - static const std::string SETTING_VIDEOPLAYER_USEVAAPI; - static const std::string SETTING_VIDEOPLAYER_USEVAAPIMPEG2; - static const std::string SETTING_VIDEOPLAYER_USEVAAPIMPEG4; - static const std::string SETTING_VIDEOPLAYER_USEVAAPIVC1; - static const std::string SETTING_VIDEOPLAYER_USEVAAPIVP8; - static const std::string SETTING_VIDEOPLAYER_USEVAAPIVP9; - static const std::string SETTING_VIDEOPLAYER_PREFERVAAPIRENDER; static const std::string SETTING_VIDEOPLAYER_USEDXVA2; static const std::string SETTING_VIDEOPLAYER_USEOMXPLAYER; static const std::string SETTING_VIDEOPLAYER_USEVTB; diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/utils/log.h kodi-18.0+git20180518.0201-d675125/xbmc/utils/log.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/utils/log.h 2018-05-01 00:00:32.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/utils/log.h 2018-05-18 00:01:32.000000000 +0000 @@ -103,6 +103,7 @@ } } #define LogF(loglevel, ...) LogFunction((loglevel), __FUNCTION__, ##__VA_ARGS__) +#define LogFC(loglevel, component, ...) LogFunction((loglevel), __FUNCTION__, (component), ##__VA_ARGS__) static void MemDump(char *pData, int length); static bool Init(const std::string& path); static void PrintDebugString(const std::string& line); // universal interface for printing debug strings diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/video/PlayerController.cpp kodi-18.0+git20180518.0201-d675125/xbmc/video/PlayerController.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/video/PlayerController.cpp 2018-05-01 00:00:32.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/video/PlayerController.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -23,6 +23,7 @@ #include "dialogs/GUIDialogSelect.h" #include "dialogs/GUIDialogSlider.h" #include "settings/AdvancedSettings.h" +#include "settings/DisplaySettings.h" #include "settings/MediaSettings.h" #include "settings/Settings.h" #include "cores/IPlayer.h" @@ -454,6 +455,38 @@ } return true; } + + case ACTION_PLAYER_RESOLUTION_SELECT: + { + std::vector indexList = CServiceBroker::GetSettings().GetList(CSettings::SETTING_VIDEOSCREEN_WHITELIST); + + CGUIDialogSelect *dialog = CServiceBroker::GetGUI()->GetWindowManager().GetWindow(WINDOW_DIALOG_SELECT); + if (dialog) + { + int current = 0; + int idx = 0; + auto currentRes = CServiceBroker::GetWinSystem()->GetGfxContext().GetVideoResolution(); + for (const CVariant &mode : indexList) + { + auto res = CDisplaySettings::GetInstance().GetResFromString(mode.asString()); + const RESOLUTION_INFO info = CServiceBroker::GetWinSystem()->GetGfxContext().GetResInfo(res); + dialog->Add(info.strMode); + if (res == currentRes) + current = idx; + idx++; + } + dialog->SetHeading(CVariant{g_localizeStrings.Get(39110)}); + dialog->SetSelected(current); + dialog->Open(); + idx = dialog->GetSelectedItem(); + if (idx >= 0) + { + auto res = CDisplaySettings::GetInstance().GetResFromString(indexList[idx].asString()); + CServiceBroker::GetWinSystem()->GetGfxContext().SetVideoResolution(res, false); + } + } + return true; + } default: break; diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/Resolution.cpp kodi-18.0+git20180518.0201-d675125/xbmc/windowing/Resolution.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/Resolution.cpp 2018-05-12 00:01:22.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/windowing/Resolution.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -249,3 +249,9 @@ return weight; } + +bool CResolutionUtils::HasWhitelist() +{ + std::vector indexList = CServiceBroker::GetSettings().GetList(CSettings::SETTING_VIDEOSCREEN_WHITELIST); + return !indexList.empty(); +} diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/Resolution.h kodi-18.0+git20180518.0201-d675125/xbmc/windowing/Resolution.h --- kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/Resolution.h 2018-05-05 00:01:44.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/windowing/Resolution.h 2018-05-18 00:01:32.000000000 +0000 @@ -101,6 +101,7 @@ { public: static RESOLUTION ChooseBestResolution(float fps, int width, bool is3D); + static bool HasWhitelist(); protected: static void FindResolutionFromWhitelist(float fps, int width, bool is3D, RESOLUTION &resolution); static bool FindResolutionFromOverride(float fps, int width, bool is3D, RESOLUTION &resolution, float& weight, bool fallback); diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/windows/WinEventsWin32.cpp kodi-18.0+git20180518.0201-d675125/xbmc/windowing/windows/WinEventsWin32.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/windows/WinEventsWin32.cpp 2018-05-01 00:00:33.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/windowing/windows/WinEventsWin32.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -302,12 +302,12 @@ appPort->SetRenderGUI(wParam != 0); if (g_application.GetRenderGUI() != active) DX::Windowing()->NotifyAppActiveChange(g_application.GetRenderGUI()); - CLog::LogF(LOGDEBUG, "WM_SHOWWINDOW -> window is %s", wParam != 0 ? "shown" : "hidden"); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "WM_SHOWWINDOW -> window is %s", wParam != 0 ? "shown" : "hidden"); } break; case WM_ACTIVATE: { - CLog::LogF(LOGDEBUG, "WM_ACTIVATE -> window is %s", LOWORD(wParam) != WA_INACTIVE ? "active" : "inactive"); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "WM_ACTIVATE -> window is %s", LOWORD(wParam) != WA_INACTIVE ? "active" : "inactive"); bool active = g_application.GetRenderGUI(); if (HIWORD(wParam)) { @@ -333,20 +333,20 @@ } if (g_application.GetRenderGUI() != active) DX::Windowing()->NotifyAppActiveChange(g_application.GetRenderGUI()); - CLog::LogF(LOGDEBUG, "window is %s", g_application.GetRenderGUI() ? "active" : "inactive"); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "window is %s", g_application.GetRenderGUI() ? "active" : "inactive"); } break; case WM_SETFOCUS: case WM_KILLFOCUS: g_application.m_AppFocused = uMsg == WM_SETFOCUS; - CLog::LogF(LOGDEBUG, "window focus %s", g_application.m_AppFocused ? "set" : "lost"); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "window focus %s", g_application.m_AppFocused ? "set" : "lost"); DX::Windowing()->NotifyAppFocusChange(g_application.m_AppFocused); if (uMsg == WM_KILLFOCUS) { std::string procfile; if (CWIN32Util::GetFocussedProcess(procfile)) - CLog::LogF(LOGDEBUG, "Focus switched to process %s", procfile); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "Focus switched to process %s", procfile); } break; /* needs to be reviewed after frodo. we reset the system idle timer @@ -457,7 +457,7 @@ { const unsigned int appcmd = GET_APPCOMMAND_LPARAM(lParam); - CLog::LogF(LOGDEBUG, "APPCOMMAND %d", appcmd); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "APPCOMMAND %d", appcmd); // Reset the screen saver g_application.ResetScreenSaver(); @@ -474,12 +474,12 @@ CAction appcmdaction = CServiceBroker::GetInputManager().GetAction(iWin, key); if (appcmdaction.GetID()) { - CLog::LogF(LOGDEBUG, "appcommand %d, action %s", appcmd, appcmdaction.GetName().c_str()); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "appcommand %d, action %s", appcmd, appcmdaction.GetName().c_str()); CServiceBroker::GetInputManager().QueueAction(appcmdaction); return true; } - CLog::LogF(LOGDEBUG, "unknown appcommand %d", appcmd); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "unknown appcommand %d", appcmd); return DefWindowProc(hWnd, uMsg, wParam, lParam); } case WM_GESTURENOTIFY: @@ -660,7 +660,7 @@ newEvent.resize.w = g_sizeMoveWidth; newEvent.resize.h = g_sizeMoveHight; - CLog::LogF(LOGDEBUG, "window resize event %d x %d", newEvent.resize.w, newEvent.resize.h); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "window resize event %d x %d", newEvent.resize.w, newEvent.resize.h); // tell device about new size DX::Windowing()->OnResize(newEvent.resize.w, newEvent.resize.h); // tell application about size changes @@ -687,7 +687,7 @@ newEvent.move.x = g_sizeMoveX; newEvent.move.y = g_sizeMoveY; - CLog::LogF(LOGDEBUG, "window move event"); + CLog::LogFC(LOGDEBUG, LOGWINDOWING, "window move event"); // tell the device about new position DX::Windowing()->OnMove(newEvent.move.x, newEvent.move.y); diff -Nru kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/windows/WinSystemWin32.cpp kodi-18.0+git20180518.0201-d675125/xbmc/windowing/windows/WinSystemWin32.cpp --- kodi-18.0+git20180517.0201-afaf815/xbmc/windowing/windows/WinSystemWin32.cpp 2018-05-04 00:01:39.000000000 +0000 +++ kodi-18.0+git20180518.0201-d675125/xbmc/windowing/windows/WinSystemWin32.cpp 2018-05-18 00:01:32.000000000 +0000 @@ -80,8 +80,11 @@ CAESinkDirectSound::Register(); CAESinkWASAPI::Register(); CWin32PowerSyscall::Register(); - m_irss.reset(new CIRServerSuite()); - m_irss->Initialize(); + if (g_advancedSettings.m_bScanIRServer) + { + m_irss.reset(new CIRServerSuite()); + m_irss->Initialize(); + } } CWinSystemWin32::~CWinSystemWin32()