diff --git a/projects/RPi/devices/RPi4/kodi/appliance.xml b/projects/RPi/devices/RPi4/kodi/appliance.xml new file mode 100644 index 0000000000..472aaf7971 --- /dev/null +++ b/projects/RPi/devices/RPi4/kodi/appliance.xml @@ -0,0 +1,14 @@ + + +
+ + + + true + 3 + + + +
+
+ diff --git a/projects/RPi/devices/RPi4/patches/kodi/kodi-010-PR16063-Leia-limit-guisize.patch b/projects/RPi/devices/RPi4/patches/kodi/kodi-010-PR16063-Leia-limit-guisize.patch new file mode 100644 index 0000000000..6dbfee91d1 --- /dev/null +++ b/projects/RPi/devices/RPi4/patches/kodi/kodi-010-PR16063-Leia-limit-guisize.patch @@ -0,0 +1,150 @@ +From b2ad605c9ae4b3e8bf5447562aea095fa094e66a Mon Sep 17 00:00:00 2001 +From: Jonas Karlman +Date: Thu, 30 May 2019 21:36:32 +0000 +Subject: [PATCH] windowing/gbm: add option to limit gui size + +--- + .../resources/strings.po | 44 ++++++++++++++++++- + system/settings/gbm.xml | 15 +++++++ + xbmc/windowing/gbm/DRMUtils.cpp | 33 +++++++++++++- + 3 files changed, 90 insertions(+), 2 deletions(-) + +diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po +index 9c9161a99323..11cdf4aba26c 100644 +--- a/addons/resource.language.en_gb/resources/strings.po ++++ b/addons/resource.language.en_gb/resources/strings.po +@@ -7266,7 +7266,49 @@ msgctxt "#13465" + msgid "EGL" + msgstr "" + +-#empty strings from id 13466 to 13504 ++#. Option for setting Limit GUI Size ++#: system/settings/gbm.xml ++msgctxt "#13466" ++msgid "Limit GUI Size" ++msgstr "" ++ ++#. Description of setting with label #13466 "Limit GUI Size" ++#: system/settings/gbm.xml ++msgctxt "#13467" ++msgid "This option limits GUI size for screen resolutions above 1080p. Requires restart." ++msgstr "" ++ ++#. String for options 1 of setting with label #13466 "Limit GUI Size" ++#: system/settings/gbm.xml ++msgctxt "#13468" ++msgid "No limit" ++msgstr "" ++ ++#. String for options 2 of setting with label #13466 "Limit GUI Size" ++#: system/settings/gbm.xml ++msgctxt "#13469" ++msgid "720p" ++msgstr "" ++ ++#. String for options 3 of setting with label #13466 "Limit GUI Size" ++#: system/settings/gbm.xml ++msgctxt "#13470" ++msgid "1080p / 720p (>30hz)" ++msgstr "" ++ ++#. String for options 4 of setting with label #13466 "Limit GUI Size" ++#: system/settings/gbm.xml ++msgctxt "#13471" ++msgid "1080p" ++msgstr "" ++ ++#. String for options 5 of setting with label #13466 "Limit GUI Size" ++#: system/settings/gbm.xml ++msgctxt "#13472" ++msgid "No limit / 1080p (>30hz)" ++msgstr "" ++ ++#empty strings from id 13473 to 13504 + + #: system/settings/settings.xml + msgctxt "#13505" +diff --git a/system/settings/gbm.xml b/system/settings/gbm.xml +index c5e4d98e0bef..6492b08ef5f2 100644 +--- a/system/settings/gbm.xml ++++ b/system/settings/gbm.xml +@@ -41,6 +41,21 @@ + + false + ++ ++ false ++ 3 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + 3 + false +diff --git a/xbmc/windowing/gbm/DRMUtils.cpp b/xbmc/windowing/gbm/DRMUtils.cpp +index 48f0bc40bcf9..c6031bf67c41 100644 +--- a/xbmc/windowing/gbm/DRMUtils.cpp ++++ b/xbmc/windowing/gbm/DRMUtils.cpp +@@ -17,14 +17,21 @@ + #include + + #include "platform/linux/XTimeUtils.h" +-#include "utils/log.h" ++#include "settings/Settings.h" ++#include "settings/SettingsComponent.h" + #include "utils/StringUtils.h" ++#include "utils/log.h" + #include "windowing/GraphicContext.h" + + #include "DRMUtils.h" + + using namespace KODI::WINDOWING::GBM; + ++namespace ++{ ++const std::string SETTING_VIDEOSCREEN_LIMITGUISIZE = "videoscreen.limitguisize"; ++} ++ + CDRMUtils::CDRMUtils() + : m_connector(new connector) + , m_encoder(new encoder) +@@ -762,6 +769,30 @@ RESOLUTION_INFO CDRMUtils::GetResolutionInfo(drmModeModeInfoPtr mode) + res.iWidth = res.iScreenWidth; + res.iHeight = res.iScreenHeight; + ++ int limit = CServiceBroker::GetSettingsComponent()->GetSettings()->GetInt(SETTING_VIDEOSCREEN_LIMITGUISIZE); ++ if (limit > 0 && res.iScreenWidth > 1920 && res.iScreenHeight > 1080) ++ { ++ switch (limit) ++ { ++ case 1: // 720p ++ res.iWidth = 1280; ++ res.iHeight = 720; ++ break; ++ case 2: // 1080p / 720p (>30hz) ++ res.iWidth = mode->vrefresh > 30 ? 1280 : 1920; ++ res.iHeight = mode->vrefresh > 30 ? 720 : 1080; ++ break; ++ case 3: // 1080p ++ res.iWidth = 1920; ++ res.iHeight = 1080; ++ break; ++ case 4: // No limit / 1080p (>30hz) ++ res.iWidth = mode->vrefresh > 30 ? 1920 : res.iScreenWidth; ++ res.iHeight = mode->vrefresh > 30 ? 1080 : res.iScreenHeight; ++ break; ++ } ++ } ++ + if (mode->clock % 5 != 0) + res.fRefreshRate = static_cast(mode->vrefresh) * (1000.0f/1001.0f); + else