path: root/src/corelib/kernel
diff options
authorjian liang <>2013-03-21 23:24:36 +0800
committerThe Qt Project <>2013-04-03 10:15:40 +0200
commit7dc622290bb8e81af634034f443e25be0d6d48a3 (patch)
treedcc3766bf668d4f0dd33783b92094ca3cd16d7a2 /src/corelib/kernel
parent0c7e6ac083cbcc7427bcd2407483145ff259a44c (diff)
Make sure QThreadData and QAdoptedThread object is destroyed at app exit
Task-number: QTBUG-30134 Restore the lines in qcoreapplication.cpp removed by commit 950b35cf97ad398f97883efd2a18ee97994a8a9c to ensure QThreadData and QAdoptedThread object of main thread is destroyed at application exit. We don't set QCoreApplicationPriavte::theMainThread to 0 as before since it will be set to zero in QThreadData::~QThreadData() Change-Id: I8ee56aff5a933ce1d812b07fb00a29ed0839ab6e Reviewed-by: Olivier Goffart <> Reviewed-by: Thiago Macieira <>
Diffstat (limited to 'src/corelib/kernel')
1 files changed, 7 insertions, 0 deletions
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 61a8b6a18c..100e014e99 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -318,6 +318,13 @@ struct QCoreApplicationData {
delete app_libpaths;
+#ifndef QT_NO_QOBJECT
+ // cleanup the QAdoptedThread created for the main() thread
+ if (QCoreApplicationPrivate::theMainThread) {
+ QThreadData *data = QThreadData::get2(QCoreApplicationPrivate::theMainThread);
+ data->deref(); // deletes the data and the adopted thread
+ }