diff options
author | Stephen Kelly <stephen.kelly@kdab.com> | 2012-02-08 15:55:29 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-23 15:07:58 +0100 |
commit | b067f6cfe30a5a687316130d04678ac406837d09 (patch) | |
tree | d23e2377d7e2b96ffc64e27389edac6a121b46c7 /src/corelib/kernel/qeventloop.cpp | |
parent | 422b6ba9ecf0595da5772afec8c5a0a00983d95d (diff) |
Add the quitlock feature to QThread.
Change-Id: Ib44ee9739499ba4c5f0fecbef3976251ea22836d
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qeventloop.cpp')
-rw-r--r-- | src/corelib/kernel/qeventloop.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp index 8b0ec85679..2fb351797c 100644 --- a/src/corelib/kernel/qeventloop.cpp +++ b/src/corelib/kernel/qeventloop.cpp @@ -322,13 +322,19 @@ class QEventLoopLockerPrivate { public: explicit QEventLoopLockerPrivate(QEventLoopPrivate *loop) - : loop(loop), app(0) + : loop(loop), thread(0), app(0) { loop->ref(); } + explicit QEventLoopLockerPrivate(QThreadPrivate *thread) + : loop(0), thread(thread), app(0) + { + thread->ref(); + } + explicit QEventLoopLockerPrivate(QCoreApplicationPrivate *app) - : loop(0), app(app) + : loop(0), thread(0), app(app) { app->ref(); } @@ -337,12 +343,15 @@ public: { if (loop) loop->deref(); + else if (thread) + thread->deref(); else app->deref(); } private: QEventLoopPrivate *loop; + QThreadPrivate *thread; QCoreApplicationPrivate *app; }; @@ -390,6 +399,12 @@ QEventLoopLocker::QEventLoopLocker(QEventLoop *loop) } +QEventLoopLocker::QEventLoopLocker(QThread *thread) + : d_ptr(new QEventLoopLockerPrivate(static_cast<QThreadPrivate*>(QObjectPrivate::get(thread)))) +{ + +} + /*! Destroys this event loop locker object */ |