summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qbenchmarkevent.cpp25
-rw-r--r--src/testlib/qbenchmarkevent_p.h8
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