diff options
Diffstat (limited to 'src/testlib')
-rw-r--r-- | src/testlib/qbenchmarkevent.cpp | 25 | ||||
-rw-r--r-- | src/testlib/qbenchmarkevent_p.h | 8 |
2 files changed, 19 insertions, 14 deletions
diff --git a/src/testlib/qbenchmarkevent.cpp b/src/testlib/qbenchmarkevent.cpp index bbba0ba5d9..f37162ae9d 100644 --- a/src/testlib/qbenchmarkevent.cpp +++ b/src/testlib/qbenchmarkevent.cpp @@ -46,8 +46,10 @@ QT_BEGIN_NAMESPACE -QAbstractEventDispatcher::EventFilter oldEventFilter = 0; -qint64 QBenchmarkEvent::eventCounter = 0; +QBenchmarkEvent::QBenchmarkEvent() + : eventCounter(0) +{ +} QBenchmarkEvent::~QBenchmarkEvent() { @@ -55,21 +57,19 @@ QBenchmarkEvent::~QBenchmarkEvent() void QBenchmarkEvent::start() { - QBenchmarkEvent::eventCounter = 0; - QAbstractEventDispatcher *parent = QAbstractEventDispatcher::instance(); - oldEventFilter = parent->setEventFilter(QBenchmarkEvent::eventCountingMechanism); + eventCounter = 0; + QAbstractEventDispatcher::instance()->installNativeEventFilter(this); } qint64 QBenchmarkEvent::checkpoint() { - return QBenchmarkEvent::eventCounter; + return eventCounter; } qint64 QBenchmarkEvent::stop() { - QAbstractEventDispatcher *parent = QAbstractEventDispatcher::instance(); - parent->setEventFilter(oldEventFilter); - return QBenchmarkEvent::eventCounter; + QAbstractEventDispatcher::instance()->removeNativeEventFilter(this); + return eventCounter; } // It's very tempting to simply reject a measurement if 0 events @@ -98,10 +98,13 @@ QTest::QBenchmarkMetric QBenchmarkEvent::metricType() } // This could be done in a much better way, this is just the beginning. -bool QBenchmarkEvent::eventCountingMechanism(void *message) +bool QBenchmarkEvent::nativeEventFilter(const QByteArray &eventType, void *message, long *result) { + Q_UNUSED(eventType); Q_UNUSED(message); - QBenchmarkEvent::eventCounter++; + Q_UNUSED(result); + + eventCounter++; return false; } diff --git a/src/testlib/qbenchmarkevent_p.h b/src/testlib/qbenchmarkevent_p.h index c4d98bf8a1..938ce13f3c 100644 --- a/src/testlib/qbenchmarkevent_p.h +++ b/src/testlib/qbenchmarkevent_p.h @@ -56,12 +56,14 @@ #include <QtTest/private/qbenchmarkmeasurement_p.h> #include <QAbstractEventDispatcher> #include <QObject> +#include <QAbstractNativeEventFilter> QT_BEGIN_NAMESPACE -class QBenchmarkEvent : public QBenchmarkMeasurerBase +class QBenchmarkEvent : public QBenchmarkMeasurerBase, public QAbstractNativeEventFilter { public: + QBenchmarkEvent(); ~QBenchmarkEvent(); void start(); qint64 checkpoint(); @@ -71,8 +73,8 @@ public: int adjustMedianCount(int suggestion); bool repeatCount() { return 1; } QTest::QBenchmarkMetric metricType(); - static bool eventCountingMechanism(void *message); - static qint64 eventCounter; + virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result); + qint64 eventCounter; }; QT_END_NAMESPACE |