From 8c63c7ff740e021e25aeb08aa60e437c54bea6e7 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 11 May 2017 12:00:55 +0200 Subject: Avoid recreating the settings object on every log call --- common/log.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'common/log.cpp') diff --git a/common/log.cpp b/common/log.cpp index 045b3cc..4024545 100644 --- a/common/log.cpp +++ b/common/log.cpp @@ -12,12 +12,17 @@ #include #include #include +#include using namespace Sink::Log; -static QSharedPointer config() +QThreadStorage> sSettings; +static QSettings &config() { - return QSharedPointer::create(Sink::configLocation() + "/log.ini", QSettings::IniFormat); + if (!sSettings.hasLocalData()) { + sSettings.setLocalData(QSharedPointer::create(Sink::configLocation() + "/log.ini", QSettings::IniFormat)); + } + return *sSettings.localData(); } static QByteArray sPrimaryComponent; @@ -173,22 +178,22 @@ DebugLevel Sink::Log::debugLevelFromName(const QByteArray &name) void Sink::Log::setDebugOutputLevel(DebugLevel debugLevel) { - config()->setValue("level", debugLevel); + config().setValue("level", debugLevel); } Sink::Log::DebugLevel Sink::Log::debugOutputLevel() { - return static_cast(config()->value("level", Sink::Log::Log).toInt()); + return static_cast(config().value("level", Sink::Log::Log).toInt()); } void Sink::Log::setDebugOutputFilter(FilterType type, const QByteArrayList &filter) { switch (type) { case ApplicationName: - config()->setValue("applicationfilter", QVariant::fromValue(filter)); + config().setValue("applicationfilter", QVariant::fromValue(filter)); break; case Area: - config()->setValue("areafilter", QVariant::fromValue(filter)); + config().setValue("areafilter", QVariant::fromValue(filter)); break; } } @@ -197,9 +202,9 @@ QByteArrayList Sink::Log::debugOutputFilter(FilterType type) { switch (type) { case ApplicationName: - return config()->value("applicationfilter").value(); + return config().value("applicationfilter").value(); case Area: - return config()->value("areafilter").value(); + return config().value("areafilter").value(); default: return QByteArrayList(); } @@ -207,12 +212,12 @@ QByteArrayList Sink::Log::debugOutputFilter(FilterType type) void Sink::Log::setDebugOutputFields(const QByteArrayList &output) { - config()->setValue("outputfields", QVariant::fromValue(output)); + config().setValue("outputfields", QVariant::fromValue(output)); } QByteArrayList Sink::Log::debugOutputFields() { - return config()->value("outputfields").value(); + return config().value("outputfields").value(); } static QByteArray getProgramName() -- cgit v1.2.3