qhighdpiscaling: de-pessimize qEnvironmentVariableOptional*() functions
Don't call qEnvironmentVariableIsSet(), since it locks the environment mutex. Since qgetenv() and qEnvironmentVariable() both report whether the value was set (returning non-isNull()), we can avoid the extra mutex lock (and envvar lookup) by just calling those and then checking for isNull(). In qEnvironmentVariableOptionalReal(), in addition, use qgetenv() instead of qEnvironmentVariable(). While on Windows, that may convert encoding, QString::toDouble() first converts to Latin-1, and only then converts to double, so we avoid one encoding conversion, even on Windows; on Unix we avoid two. Amends 4d1f13f3549a73f5ca4e64dac9137e83138080fa. Pick-to: 6.9 6.8 6.5 Change-Id: I6803e2277b324c2568726765245681bcbf517362 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
This commit is contained in:
parent
6c61d7b0f8
commit
8669bc97ff
@ -30,18 +30,14 @@ static const char usePhysicalDpiEnvVar[] = "QT_USE_PHYSICAL_DPI";
|
|||||||
|
|
||||||
static std::optional<QString> qEnvironmentVariableOptionalString(const char *name)
|
static std::optional<QString> qEnvironmentVariableOptionalString(const char *name)
|
||||||
{
|
{
|
||||||
if (!qEnvironmentVariableIsSet(name))
|
QString value = qEnvironmentVariable(name);
|
||||||
return std::nullopt;
|
return value.isNull() ? std::nullopt : std::optional(std::move(value));
|
||||||
|
|
||||||
return std::optional(qEnvironmentVariable(name));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<QByteArray> qEnvironmentVariableOptionalByteArray(const char *name)
|
static std::optional<QByteArray> qEnvironmentVariableOptionalByteArray(const char *name)
|
||||||
{
|
{
|
||||||
if (!qEnvironmentVariableIsSet(name))
|
QByteArray value = qgetenv(name);
|
||||||
return std::nullopt;
|
return value.isNull() ? std::nullopt : std::optional(std::move(value));
|
||||||
|
|
||||||
return std::optional(qgetenv(name));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<int> qEnvironmentVariableOptionalInt(const char *name)
|
static std::optional<int> qEnvironmentVariableOptionalInt(const char *name)
|
||||||
@ -54,11 +50,12 @@ static std::optional<int> qEnvironmentVariableOptionalInt(const char *name)
|
|||||||
|
|
||||||
static std::optional<qreal> qEnvironmentVariableOptionalReal(const char *name)
|
static std::optional<qreal> qEnvironmentVariableOptionalReal(const char *name)
|
||||||
{
|
{
|
||||||
if (!qEnvironmentVariableIsSet(name))
|
const QByteArray val = qgetenv(name);
|
||||||
|
if (val.isNull())
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
const qreal value = qEnvironmentVariable(name).toDouble(&ok);
|
const qreal value = val.toDouble(&ok);
|
||||||
return ok ? std::optional(value) : std::nullopt;
|
return ok ? std::optional(value) : std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user