QThread: simplify the pthread_cleanup_pop function

Make sure that the QString is not in scope anymore when the pthread
cleanup happens. C++ destructors in scope are pthread cleanup handlers.

Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1ae1c7e31f6bb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This commit is contained in:
Thiago Macieira 2015-04-03 19:19:54 -07:00 committed by Marc Mutz
parent 73991bee38
commit 827f934760

View File

@ -313,14 +313,15 @@ void *QThreadPrivate::start(void *arg)
createEventDispatcher(data);
#if (defined(Q_OS_LINUX) || defined(Q_OS_MAC) || defined(Q_OS_QNX))
// sets the name of the current thread.
QString objectName = thr->objectName();
if (Q_LIKELY(objectName.isEmpty()))
setCurrentThreadName(thr->d_func()->thread_id, thr->metaObject()->className());
else
setCurrentThreadName(thr->d_func()->thread_id, objectName.toLocal8Bit());
{
// sets the name of the current thread.
QString objectName = thr->objectName();
if (Q_LIKELY(objectName.isEmpty()))
setCurrentThreadName(thr->d_func()->thread_id, thr->metaObject()->className());
else
setCurrentThreadName(thr->d_func()->thread_id, objectName.toLocal8Bit());
}
#endif
emit thr->started(QThread::QPrivateSignal());