summaryrefslogtreecommitdiffstats
path: root/src/opengl/qwindowsurface_gl.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago@kde.org>2011-07-20 16:06:58 +0200
committerQt by Nokia <qt-info@nokia.com>2011-07-21 08:54:00 +0200
commit6d3c0643020aaf002b985a16a66f3c289daea4f0 (patch)
tree875c76adf08242cd8ed4dd7678509b3d085dc51e /src/opengl/qwindowsurface_gl.cpp
parentde587d736a1fd661c3fddeebefce02e436a2c7a5 (diff)
Get rid of the evilness of Q_GLOBAL_STATIC_WITH_INITIALIZER
That macro is a nightmare. It leads to writing code that is thread-unsafe or other problems. So rewrite the code that used this macro to use special-purpose classes with constructors. This commit does not introduce new errors. The FIXME in qicon.cpp (qtIconCache()) was a condition already present. It does fix the race conditions that were present in qbrush.cpp nullBrushInstance() and qfontengine.cpp qt_grayPalette(). Specialising QGlobalStatic is also evil. Change-Id: I039311f6a5ac9ea4ad7b310b870a2adf888da7e5 Merge-request: 10 Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/1895 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Diffstat (limited to 'src/opengl/qwindowsurface_gl.cpp')
-rw-r--r--src/opengl/qwindowsurface_gl.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp
index ff551427ec..4f00908b9d 100644
--- a/src/opengl/qwindowsurface_gl.cpp
+++ b/src/opengl/qwindowsurface_gl.cpp
@@ -178,6 +178,8 @@ QGLGraphicsSystem::QGLGraphicsSystem(bool useX11GL)
#endif
}
+static void qt_cleanup_gl_share_widget();
+
//
// QGLWindowSurface
//
@@ -185,6 +187,8 @@ class QGLGlobalShareWidget
{
public:
QGLGlobalShareWidget() : firstPixmap(0), widgetRefCount(0), widget(0), initializing(false) {
+ // ### FIXME - readd the post routine if the qApp is recreated
+ qAddPostRoutine(qt_cleanup_gl_share_widget);
created = true;
}
@@ -238,11 +242,7 @@ private:
bool QGLGlobalShareWidget::cleanedUp = false;
bool QGLGlobalShareWidget::created = false;
-static void qt_cleanup_gl_share_widget();
-Q_GLOBAL_STATIC_WITH_INITIALIZER(QGLGlobalShareWidget, _qt_gl_share_widget,
- {
- qAddPostRoutine(qt_cleanup_gl_share_widget);
- })
+Q_GLOBAL_STATIC(QGLGlobalShareWidget, _qt_gl_share_widget)
static void qt_cleanup_gl_share_widget()
{