summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2023-08-15 11:38:34 +0200
committerIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2023-08-20 23:38:06 +0200
commitcff1c12eca6e1e7d2645f7079895718193beb621 (patch)
tree28e2034bb638c30e6efc1f18523b7abe45e01e27
parente26a87f1ecc40bc8c6aa5b889fce67410a57a702 (diff)
QAbstractEventDispatcherPrivate: Create free timer ID list in constructor
Create the global static free timer ID list in the constructor so that it is destroyed after any global static QDaemonThread instance that may be using it. Fixes: QTBUG-58732 Pick-to: 6.6 Change-Id: Ic2d33ac3aa2ec3ca0261be9996920aae260e16fd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.cpp9
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher_p.h3
2 files changed, 10 insertions, 2 deletions
diff --git a/src/corelib/kernel/qabstracteventdispatcher.cpp b/src/corelib/kernel/qabstracteventdispatcher.cpp
index 3001e3269b..98493946d8 100644
--- a/src/corelib/kernel/qabstracteventdispatcher.cpp
+++ b/src/corelib/kernel/qabstracteventdispatcher.cpp
@@ -52,6 +52,15 @@ Q_CONSTINIT const int QtTimerIdFreeListConstants::Sizes[QtTimerIdFreeListConstan
typedef QFreeList<void, QtTimerIdFreeListConstants> QtTimerIdFreeList;
Q_GLOBAL_STATIC(QtTimerIdFreeList, timerIdFreeList)
+QAbstractEventDispatcherPrivate::QAbstractEventDispatcherPrivate()
+{
+ // Create the timer ID free list here to make sure that it is destroyed
+ // after any global static thread that may be using it.
+ // See also QTBUG-58732.
+ if (!timerIdFreeList.isDestroyed())
+ (void)timerIdFreeList();
+}
+
QAbstractEventDispatcherPrivate::~QAbstractEventDispatcherPrivate()
= default;
diff --git a/src/corelib/kernel/qabstracteventdispatcher_p.h b/src/corelib/kernel/qabstracteventdispatcher_p.h
index e7b1ac3b24..7d57fd0360 100644
--- a/src/corelib/kernel/qabstracteventdispatcher_p.h
+++ b/src/corelib/kernel/qabstracteventdispatcher_p.h
@@ -26,8 +26,7 @@ class Q_CORE_EXPORT QAbstractEventDispatcherPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QAbstractEventDispatcher)
public:
- inline QAbstractEventDispatcherPrivate()
- { }
+ QAbstractEventDispatcherPrivate();
~QAbstractEventDispatcherPrivate() override;
QList<QAbstractNativeEventFilter *> eventFilters;