diff options
-rw-r--r-- | doc/ScintillaHistory.html | 3 | ||||
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.cpp | 20 |
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 |