diff options
author | Markus Pfau <pfau@peak3d.de> | 2018-12-13 13:29:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-13 13:29:57 +0100 |
commit | 37cbf16f93550571b8b8db6f48041cf00d5e4d1a (patch) | |
tree | 0d4898bec2051dcb668b15aaaa18b13ca8d8d16b | |
parent | 64da515bbca864adf65a35d0e2a579eef9fd5dac (diff) | |
parent | 90e8353dc91940d873d7d84af9c218477bb45a83 (diff) |
Merge pull request #15043 from peak3d/resetcal
[Android] Reset calibrations if GUI limit changes
-rw-r--r-- | xbmc/settings/DisplaySettings.cpp | 6 | ||||
-rw-r--r-- | xbmc/settings/DisplaySettings.h | 1 | ||||
-rw-r--r-- | xbmc/windowing/android/AndroidUtils.cpp | 20 | ||||
-rw-r--r-- | xbmc/windowing/android/AndroidUtils.h | 7 |
4 files changed, 32 insertions, 2 deletions
diff --git a/xbmc/settings/DisplaySettings.cpp b/xbmc/settings/DisplaySettings.cpp index 55985f5f56..e1ffde9afe 100644 --- a/xbmc/settings/DisplaySettings.cpp +++ b/xbmc/settings/DisplaySettings.cpp @@ -566,6 +566,12 @@ void CDisplaySettings::UpdateCalibrations() } } +void CDisplaySettings::ClearCalibrations() +{ + CSingleLock lock(m_critical); + m_calibrations.clear(); +} + DisplayMode CDisplaySettings::GetCurrentDisplayMode() const { if (GetCurrentResolution() == RES_WINDOW) diff --git a/xbmc/settings/DisplaySettings.h b/xbmc/settings/DisplaySettings.h index 75160cb42d..d525c995d8 100644 --- a/xbmc/settings/DisplaySettings.h +++ b/xbmc/settings/DisplaySettings.h @@ -71,6 +71,7 @@ public: void ApplyCalibrations(); void UpdateCalibrations(); + void ClearCalibrations(); void ClearCustomResolutions(); float GetZoomAmount() const { return m_zoomAmount; } diff --git a/xbmc/windowing/android/AndroidUtils.cpp b/xbmc/windowing/android/AndroidUtils.cpp index dc116fbbbf..372fb71023 100644 --- a/xbmc/windowing/android/AndroidUtils.cpp +++ b/xbmc/windowing/android/AndroidUtils.cpp @@ -23,8 +23,12 @@ #include "windowing/GraphicContext.h" #include "utils/log.h" + #include "settings/Settings.h" +#include "settings/DisplaySettings.h" #include "settings/SettingsComponent.h" +#include "settings/lib/SettingsManager.h" + #include "ServiceBroker.h" #include "utils/StringUtils.h" #include "utils/SysfsUtils.h" @@ -118,6 +122,8 @@ static void fetchDisplayModes() } } +const std::string CAndroidUtils::SETTING_LIMITGUI = "videoscreen.limitgui"; + CAndroidUtils::CAndroidUtils() { std::string displaySize; @@ -153,7 +159,7 @@ CAndroidUtils::CAndroidUtils() } CLog::Log(LOGDEBUG, "CAndroidUtils: maximum/current resolution: %dx%d", m_width, m_height); - int limit = CServiceBroker::GetSettingsComponent()->GetSettings()->GetInt("videoscreen.limitgui"); + int limit = CServiceBroker::GetSettingsComponent()->GetSettings()->GetInt(CAndroidUtils::SETTING_LIMITGUI); switch (limit) { case 0: // auto @@ -181,6 +187,10 @@ CAndroidUtils::CAndroidUtils() break; } CLog::Log(LOGDEBUG, "CAndroidUtils: selected resolution: %dx%d", m_width, m_height); + + CServiceBroker::GetSettingsComponent()->GetSettings()->GetSettingsManager()->RegisterCallback(this, { + CAndroidUtils::SETTING_LIMITGUI + }); } CAndroidUtils::~CAndroidUtils() @@ -303,3 +313,11 @@ bool CAndroidUtils::ProbeResolutions(std::vector<RESOLUTION_INFO> &resolutions) } return false; } + +void CAndroidUtils::OnSettingChanged(std::shared_ptr<const CSetting> setting) +{ + const std::string &settingId = setting->GetId(); + /* Calibration (overscan / subtitles) are based on GUI size -> reset required */ + if (settingId == CAndroidUtils::SETTING_LIMITGUI) + CDisplaySettings::GetInstance().ClearCalibrations(); +} diff --git a/xbmc/windowing/android/AndroidUtils.h b/xbmc/windowing/android/AndroidUtils.h index 23a5c3deb2..e006ff1f41 100644 --- a/xbmc/windowing/android/AndroidUtils.h +++ b/xbmc/windowing/android/AndroidUtils.h @@ -13,9 +13,10 @@ #include <androidjni/Display.h> +#include "settings/lib/ISettingCallback.h" #include "windowing/Resolution.h" -class CAndroidUtils +class CAndroidUtils : public ISettingCallback { public: CAndroidUtils(); @@ -24,6 +25,10 @@ public: virtual bool SetNativeResolution(const RESOLUTION_INFO &res); virtual bool ProbeResolutions(std::vector<RESOLUTION_INFO> &resolutions); + // Implementation of ISettingCallback + static const std::string SETTING_LIMITGUI; + void OnSettingChanged(std::shared_ptr<const CSetting> setting) override; + protected: mutable int m_width; mutable int m_height; |