aboutsummaryrefslogtreecommitdiffhomepage
path: root/qt/ScintillaEditBase/PlatQt.cpp
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2015-01-26 13:07:51 +1100
committerNeil <nyamatongwe@gmail.com>2015-01-26 13:07:51 +1100
commitee7577370df33925cbae02c012584e071a9f4cbb (patch)
tree5931c611b9cf1bdf38b89e1ff8f28f1f2e4befa6 /qt/ScintillaEditBase/PlatQt.cpp
parentb42b286f8818b5ab7f2886dc549c75d03d8e4982 (diff)
downloadscintilla-mirror-ee7577370df33925cbae02c012584e071a9f4cbb.tar.gz
Use QElapsedTimer::nsecsElapsed for more accurate measurement of durations.
Diffstat (limited to 'qt/ScintillaEditBase/PlatQt.cpp')
-rw-r--r--qt/ScintillaEditBase/PlatQt.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp
index 009c54a5a..275cb6e79 100644
--- a/qt/ScintillaEditBase/PlatQt.cpp
+++ b/qt/ScintillaEditBase/PlatQt.cpp
@@ -33,6 +33,7 @@
#include <QTextLayout>
#include <QTextLine>
#include <QLibrary>
+#include <QElapsedTimer>
#include <cstdio>
#ifdef SCI_NAMESPACE
@@ -1304,21 +1305,28 @@ int Platform::DBCSCharMaxLength()
//----------------------------------------------------------------------
-static QTime timer;
+static QElapsedTimer timer;
ElapsedTime::ElapsedTime() : bigBit(0), littleBit(0)
{
- timer.start();
+ if (!timer.isValid()) {
+ timer.start();
+ }
+ qint64 ns64Now = timer.nsecsElapsed();
+ bigBit = static_cast<unsigned long>(ns64Now >> 32);
+ littleBit = static_cast<unsigned long>(ns64Now & 0xFFFFFFFF);
}
double ElapsedTime::Duration(bool reset)
{
- double result = timer.elapsed();
+ qint64 ns64Now = timer.nsecsElapsed();
+ qint64 ns64Start = (static_cast<qint64>(static_cast<unsigned long>(bigBit)) << 32) + static_cast<unsigned long>(littleBit);
+ double result = ns64Now - ns64Start;
if (reset) {
- timer.restart();
+ bigBit = static_cast<unsigned long>(ns64Now >> 32);
+ littleBit = static_cast<unsigned long>(ns64Now & 0xFFFFFFFF);
}
- result /= 1000.0;
- return result;
+ return result / 1000000000.0; // 1 billion nanoseconds in a second
}
#ifdef SCI_NAMESPACE