aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeak3d <pfau@peak3d.de>2018-12-12 13:55:28 +0100
committerpeak3d <pfau@peak3d.de>2018-12-12 13:55:28 +0100
commit90e8353dc91940d873d7d84af9c218477bb45a83 (patch)
tree3eb9c264c7b0d988aafe86e102b307505482b5f4
parentb788e0864a49574a37832640a0959bb901d928e6 (diff)
[Android] Reset calibrations if GUI limit changes
-rw-r--r--xbmc/settings/DisplaySettings.cpp6
-rw-r--r--xbmc/settings/DisplaySettings.h1
-rw-r--r--xbmc/windowing/android/AndroidUtils.cpp20
-rw-r--r--xbmc/windowing/android/AndroidUtils.h7
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;