qhighdpiscaling: de-pessimize optional<> use

std::optional::value_or() should not be used when its argument is a
non-trivial type, because the argument is created and destroyed
independent of whether it is used in the end. In this case, we don't
even need an optional, because parseScreenScaleFactorsSpec() takes
the output of qEnvironmentVariable() (not -OptionalString) as-is, so
we can just drop the unneeded optional-(un)wrapping.

Since this patch apparently removes the last user of
qEnviromentVariableOptionalString(), mark that function as
[[maybe_unused]]. Outright removal may cause cherry-picks to fail,
so will come as a follow-up.

Amends 4d1f13f3549a73f5ca4e64dac9137e83138080fa.

Pick-to: 6.8 6.5
Change-Id: Ic2bb8a3aa8e946b957047ff4faf48c4082fc9c01
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
(cherry picked from commit bee49bde04777eae348aead0abc3212fa945c0ab)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2025-02-10 10:46:53 +01:00 committed by Qt Cherry-pick Bot
parent 52b20a1351
commit 3d0243711e

View File

@ -28,6 +28,7 @@ static const char scaleFactorRoundingPolicyEnvVar[] = "QT_SCALE_FACTOR_ROUNDING_
static const char dpiAdjustmentPolicyEnvVar[] = "QT_DPI_ADJUSTMENT_POLICY";
static const char usePhysicalDpiEnvVar[] = "QT_USE_PHYSICAL_DPI";
[[maybe_unused]]
static std::optional<QString> qEnvironmentVariableOptionalString(const char *name)
{
QString value = qEnvironmentVariable(name);
@ -410,9 +411,9 @@ void QHighDpiScaling::initHighDpiScaling()
if (envScaleFactor.has_value())
qCDebug(lcHighDpi) << envDebugStr << scaleFactorEnvVar << envScaleFactor.value();
std::optional<QString> envScreenFactors = qEnvironmentVariableOptionalString(screenFactorsEnvVar);
if (envScreenFactors.has_value())
qCDebug(lcHighDpi) << envDebugStr << screenFactorsEnvVar << envScreenFactors.value();
const QString envScreenFactors = qEnvironmentVariable(screenFactorsEnvVar);
if (envScreenFactors.isNull())
qCDebug(lcHighDpi) << envDebugStr << screenFactorsEnvVar << envScreenFactors;
std::optional<int> envUsePhysicalDpi = qEnvironmentVariableOptionalInt(usePhysicalDpiEnvVar);
if (envUsePhysicalDpi.has_value())
@ -437,8 +438,7 @@ void QHighDpiScaling::initHighDpiScaling()
// Store the envScreenFactors string for later use. The string format
// supports using screen names, which means that screen DPI cannot
// be resolved at this point.
QString screenFactorsSpec = envScreenFactors.value_or(QString());
m_screenFactors = parseScreenScaleFactorsSpec(QStringView{screenFactorsSpec});
m_screenFactors = parseScreenScaleFactorsSpec(envScreenFactors);
m_namedScreenScaleFactors.clear();
m_usePhysicalDpi = envUsePhysicalDpi.value_or(0) > 0;