summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread/qthread_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/thread/qthread_unix.cpp')
-rw-r--r--src/corelib/thread/qthread_unix.cpp27
1 files changed, 8 insertions, 19 deletions
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index 8c6fefcfd7..6deae261c6 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -199,28 +199,17 @@ QThreadData *QThreadData::current()
{
QThreadData *data = get_thread_data();
if (!data) {
- void *a;
- if (QInternal::activateCallbacks(QInternal::AdoptCurrentThread, &a)) {
- QThread *adopted = static_cast<QThread*>(a);
- Q_ASSERT(adopted);
- data = QThreadData::get2(adopted);
+ data = new QThreadData;
+ QT_TRY {
set_thread_data(data);
- adopted->d_func()->running = true;
- adopted->d_func()->finished = false;
- static_cast<QAdoptedThread *>(adopted)->init();
- } else {
- data = new QThreadData;
- QT_TRY {
- set_thread_data(data);
- data->thread = new QAdoptedThread(data);
- } QT_CATCH(...) {
- clear_thread_data();
- data->deref();
- data = 0;
- QT_RETHROW;
- }
+ data->thread = new QAdoptedThread(data);
+ } QT_CATCH(...) {
+ clear_thread_data();
data->deref();
+ data = 0;
+ QT_RETHROW;
}
+ data->deref();
data->isAdopted = true;
data->threadId = (Qt::HANDLE)pthread_self();
if (!QCoreApplicationPrivate::theMainThread)