aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--doc/ScintillaHistory.html3
-rw-r--r--qt/ScintillaEditBase/PlatQt.cpp20
2 files changed, 17 insertions, 6 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html
index ecbc5fc79..0941334ea 100644
--- a/doc/ScintillaHistory.html
+++ b/doc/ScintillaHistory.html
@@ -486,6 +486,9 @@
Released 20 January 2015.
</li>
<li>
+ Minimum version of Qt supported is now 4.8 due to the use of QElapsedTimer::nsecsElapsed.
+ </li>
+ <li>
Rust lexer accepts new 'is'/'us' integer suffixes instead of 'i'/'u'.
<a href="http://sourceforge.net/p/scintilla/bugs/1098/">Bug #1098</a>.
</li>
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