Remove Q_GLOBAL_STATIC_WITH_INITIALIZER from QtWidgets
authorLars Knoll <lars.knoll@nokia.com>
Thu, 15 Sep 2011 20:28:07 +0000 (22:28 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 23 Sep 2011 11:04:13 +0000 (13:04 +0200)
Change-Id: Iecad85fbbfabe41c3a332be2ee0ce3a643db7731
Reviewed-on: http://codereview.qt-project.org/5025
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
src/widgets/kernel/qapplication.cpp
src/widgets/kernel/qapplication_p.h
src/widgets/kernel/qicon.cpp

index 15ad5ec..83a3468 100644 (file)
@@ -499,7 +499,12 @@ PaletteHash *qt_app_palettes_hash()
     return app_palettes();
 }
 
-Q_GLOBAL_STATIC_WITH_INITIALIZER(FontHash, app_fonts, { *x = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFonts(); } )
+FontHash::FontHash()
+{
+    QHash<QByteArray, QFont>::operator=(QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFonts());
+}
+
+Q_GLOBAL_STATIC(FontHash, app_fonts)
 FontHash *qt_app_fonts_hash()
 {
     return app_fonts();
index 6efee02..e466528 100644 (file)
@@ -287,7 +287,10 @@ public:
     { --threadData->loopLevel; }
 };
 
-typedef QHash<QByteArray, QFont> FontHash;
+struct FontHash : public QHash<QByteArray, QFont>
+{
+    FontHash();
+};
 FontHash *qt_app_fonts_hash();
 
 typedef QHash<QByteArray, QPalette> PaletteHash;
index bb9f56b..73f8a2a 100644 (file)
@@ -107,8 +107,18 @@ QT_BEGIN_NAMESPACE
 static QBasicAtomicInt serialNumCounter = Q_BASIC_ATOMIC_INITIALIZER(1);
 
 static void qt_cleanup_icon_cache();
-typedef QCache<QString, QIcon> IconCache;
-Q_GLOBAL_STATIC_WITH_INITIALIZER(IconCache, qtIconCache, qAddPostRoutine(qt_cleanup_icon_cache))
+namespace {
+    struct IconCache : public QCache<QString, QIcon>
+    {
+        IconCache()
+        {
+            // ### note: won't readd if QApplication is re-created!
+            qAddPostRoutine(qt_cleanup_icon_cache);
+        }
+    };
+}
+
+Q_GLOBAL_STATIC(IconCache, qtIconCache)
 
 static void qt_cleanup_icon_cache()
 {