diff options
author | Bradley T. Hughes <bradley.hughes@nokia.com> | 2011-11-21 15:28:57 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-24 15:06:31 +0100 |
commit | 722cbfe7384aa5692af4c3f03b562082fadcb93c (patch) | |
tree | 3e0c75c4a7a81d73faf7b88103ec7b3769f1254a /src/corelib | |
parent | 90b67743d1bdcb6d98e7d10d2b304b500285ec58 (diff) |
Move QScopedLoopLevelCounter to qthread_p.h
... and use it in QCoreApplication::notifyInterna() instead of
"reinventing" the wheel there. The constructor and destructor for
QScopedLoopLevelCounter are inline, so the class does not need to be
exported.
Change-Id: I7af5a4ef0987f277bcc50c1057f3c74152f3d79d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/kernel/qcoreapplication.cpp | 11 | ||||
-rw-r--r-- | src/corelib/thread/qthread_p.h | 11 |
2 files changed, 12 insertions, 10 deletions
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index c30f6135a9..2a80d39620 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -809,16 +809,7 @@ bool QCoreApplication::notifyInternal(QObject *receiver, QEvent *event) // call overhead. QObjectPrivate *d = receiver->d_func(); QThreadData *threadData = d->threadData; - - // Exception-safety without try/catch - struct Incrementer { - int &variable; - inline Incrementer(int &variable) : variable(variable) - { ++variable; } - inline ~Incrementer() - { --variable; } - }; - Incrementer inc(threadData->loopLevel); + QScopedLoopLevelCounter loopLevelCounter(threadData); #ifdef QT_JAMBI_BUILD int deleteWatch = 0; diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h index 04f9bf23cf..66dd8db7c7 100644 --- a/src/corelib/thread/qthread_p.h +++ b/src/corelib/thread/qthread_p.h @@ -227,6 +227,17 @@ public: bool isAdopted; }; +class QScopedLoopLevelCounter +{ + QThreadData *threadData; +public: + inline QScopedLoopLevelCounter(QThreadData *threadData) + : threadData(threadData) + { ++threadData->loopLevel; } + inline ~QScopedLoopLevelCounter() + { --threadData->loopLevel; } +}; + // thread wrapper for the main() thread class QAdoptedThread : public QThread { |