summaryrefslogtreecommitdiffstats
path: root/src/gui/accessible
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2016-12-02 09:01:20 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-01-28 11:49:13 +0000
commitfed6c35461e1b98af50e5f3c30aaacee45969472 (patch)
tree58db0f516658625775aaf40a5b2f32c1e061e26e /src/gui/accessible
parent944110089d4cb1c229dba422989e154db65a67fd (diff)
QAccessibleCache: Replace Q_GLOBAL_STATIC by instance pointer
QAccessibleCache is a QObject which emits signals at destruction time. This can lead to crashes in situations where the library is unloaded after QApplication has been deleted, for example in PySide2. Change it to a pointer instance variable that is cleaned up by a post routine. Task-number: PYSIDE-452 Change-Id: If0d673c7dfe33c8d2d7298bc081824f9d6d7efdc Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'src/gui/accessible')
-rw-r--r--src/gui/accessible/qaccessiblecache.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/gui/accessible/qaccessiblecache.cpp b/src/gui/accessible/qaccessiblecache.cpp
index 43c4b15cb0..097634c0a3 100644
--- a/src/gui/accessible/qaccessiblecache.cpp
+++ b/src/gui/accessible/qaccessiblecache.cpp
@@ -49,11 +49,21 @@ QT_BEGIN_NAMESPACE
\brief Maintains a cache of accessible interfaces.
*/
-Q_GLOBAL_STATIC(QAccessibleCache, qAccessibleCache)
+static QAccessibleCache *accessibleCache = nullptr;
+
+static void cleanupAccessibleCache()
+{
+ delete accessibleCache;
+ accessibleCache = Q_NULLPTR;
+}
QAccessibleCache *QAccessibleCache::instance()
{
- return qAccessibleCache;
+ if (!accessibleCache) {
+ accessibleCache = new QAccessibleCache;
+ qAddPostRoutine(cleanupAccessibleCache);
+ }
+ return accessibleCache;
}
/*