Determine font smoothing gamma in initialization.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Wed, 28 Mar 2012 10:04:08 +0000 (12:04 +0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 29 Mar 2012 06:48:43 +0000 (08:48 +0200)
Avoid calls to QStyleHint and QPlatformIntegration from
threads.

Change-Id: I851ef029ea348f182e0b42536d0a994960aa9187
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/gui/kernel/qguiapplication.cpp

index 54cb5fd..f585691 100644 (file)
@@ -52,6 +52,7 @@
 #include "qplatformintegration_qpa.h"
 
 #include <QtCore/QAbstractEventDispatcher>
+#include <QtCore/QVariant>
 #include <QtCore/private/qcoreapplication_p.h>
 #include <QtCore/private/qabstracteventdispatcher_p.h>
 #include <QtCore/qmutex.h>
@@ -143,6 +144,8 @@ static QBasicMutex applicationFontMutex;
 QFont *QGuiApplicationPrivate::app_font = 0;
 bool QGuiApplicationPrivate::obey_desktop_settings = true;
 
+static qreal fontSmoothingGamma = 1.7;
+
 extern void qRegisterGuiVariant();
 extern void qUnregisterGuiVariant();
 extern void qInitDrawhelperAsm();
@@ -579,6 +582,7 @@ static void init_platform(const QString &pluginArgument, const QString &platform
             nativeInterface->setProperty(name.constData(), value);
         }
     }
+    fontSmoothingGamma = QGuiApplicationPrivate::platformIntegration()->styleHint(QPlatformIntegration::FontSmoothingGamma).toReal();
 }
 
 static void init_plugins(const QList<QByteArray> &pluginList)
@@ -2174,8 +2178,7 @@ const QDrawHelperGammaTables *QGuiApplicationPrivate::gammaTables()
 {
     QDrawHelperGammaTables *result = m_gammaTables.load();
     if (!result){
-        const qreal smoothing = qApp->styleHints()->fontSmoothingGamma();
-        QDrawHelperGammaTables *tables = new QDrawHelperGammaTables(smoothing);
+        QDrawHelperGammaTables *tables = new QDrawHelperGammaTables(fontSmoothingGamma);
         if (!m_gammaTables.testAndSetRelease(0, tables))
             delete tables;
         result = m_gammaTables.load();