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>
This commit is contained in:
parent
90b67743d1
commit
722cbfe738
@ -809,16 +809,7 @@ bool QCoreApplication::notifyInternal(QObject *receiver, QEvent *event)
|
|||||||
// call overhead.
|
// call overhead.
|
||||||
QObjectPrivate *d = receiver->d_func();
|
QObjectPrivate *d = receiver->d_func();
|
||||||
QThreadData *threadData = d->threadData;
|
QThreadData *threadData = d->threadData;
|
||||||
|
QScopedLoopLevelCounter loopLevelCounter(threadData);
|
||||||
// Exception-safety without try/catch
|
|
||||||
struct Incrementer {
|
|
||||||
int &variable;
|
|
||||||
inline Incrementer(int &variable) : variable(variable)
|
|
||||||
{ ++variable; }
|
|
||||||
inline ~Incrementer()
|
|
||||||
{ --variable; }
|
|
||||||
};
|
|
||||||
Incrementer inc(threadData->loopLevel);
|
|
||||||
|
|
||||||
#ifdef QT_JAMBI_BUILD
|
#ifdef QT_JAMBI_BUILD
|
||||||
int deleteWatch = 0;
|
int deleteWatch = 0;
|
||||||
|
@ -227,6 +227,17 @@ public:
|
|||||||
bool isAdopted;
|
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
|
// thread wrapper for the main() thread
|
||||||
class QAdoptedThread : public QThread
|
class QAdoptedThread : public QThread
|
||||||
{
|
{
|
||||||
|
@ -68,7 +68,6 @@
|
|||||||
#include "QtCore/qhash.h"
|
#include "QtCore/qhash.h"
|
||||||
#include "QtCore/qpointer.h"
|
#include "QtCore/qpointer.h"
|
||||||
#include "private/qcoreapplication_p.h"
|
#include "private/qcoreapplication_p.h"
|
||||||
#include <private/qthread_p.h>
|
|
||||||
#include "QtCore/qpoint.h"
|
#include "QtCore/qpoint.h"
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QWindowSystemInterface>
|
#include <QWindowSystemInterface>
|
||||||
@ -263,17 +262,6 @@ typedef struct tagGESTURECONFIG
|
|||||||
|
|
||||||
#endif // Q_WS_WIN
|
#endif // Q_WS_WIN
|
||||||
|
|
||||||
class QScopedLoopLevelCounter
|
|
||||||
{
|
|
||||||
QThreadData *threadData;
|
|
||||||
public:
|
|
||||||
QScopedLoopLevelCounter(QThreadData *threadData)
|
|
||||||
: threadData(threadData)
|
|
||||||
{ ++threadData->loopLevel; }
|
|
||||||
~QScopedLoopLevelCounter()
|
|
||||||
{ --threadData->loopLevel; }
|
|
||||||
};
|
|
||||||
|
|
||||||
struct FontHash : public QHash<QByteArray, QFont>
|
struct FontHash : public QHash<QByteArray, QFont>
|
||||||
{
|
{
|
||||||
FontHash();
|
FontHash();
|
||||||
|
Loading…
Reference in New Issue
Block a user