summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-03-31 10:03:31 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-03-31 10:03:31 +0200
commitce9519593a0b3deb99d1dd2529770f7e9fffef92 (patch)
treec9bca05230dd68f49494240ae930bad1fe0c5956 /src/corelib/tools
parent509f77cca28aa3edea5523c5869bae4412ed2ccc (diff)
parent7baaec17edb06634f1d6235a55c7adbd112cba3e (diff)
Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts: mkspecs/android-g++/qmake.conf qmake/generators/unix/unixmake2.cpp src/gui/image/qimage_conversions.cpp Change-Id: Ib76264b8c2d29a0228438ec02bd97d4b97545be0
Diffstat (limited to 'src/corelib/tools')
-rw-r--r--src/corelib/tools/qcollator_icu.cpp43
-rw-r--r--src/corelib/tools/qelapsedtimer_win.cpp10
2 files changed, 32 insertions, 21 deletions
diff --git a/src/corelib/tools/qcollator_icu.cpp b/src/corelib/tools/qcollator_icu.cpp
index 6fa681b63b..f068f22d13 100644
--- a/src/corelib/tools/qcollator_icu.cpp
+++ b/src/corelib/tools/qcollator_icu.cpp
@@ -52,8 +52,12 @@ void QCollatorPrivate::init()
UErrorCode status = U_ZERO_ERROR;
QByteArray name = locale.bcp47Name().replace(QLatin1Char('-'), QLatin1Char('_')).toLatin1();
collator = ucol_open(name.constData(), &status);
- if (U_FAILURE(status))
+ if (U_FAILURE(status)) {
qWarning("Could not create collator: %d", status);
+ collator = 0;
+ dirty = false;
+ return;
+ }
// enable normalization by default
ucol_setAttribute(collator, UCOL_NORMALIZATION_MODE, UCOL_ON, &status);
@@ -97,17 +101,26 @@ int QCollator::compare(const QChar *s1, int len1, const QChar *s2, int len2) con
if (d->dirty)
d->init();
- return ucol_strcoll(d->collator, (const UChar *)s1, len1, (const UChar *)s2, len2);
+ if (d->collator)
+ return ucol_strcoll(d->collator, (const UChar *)s1, len1, (const UChar *)s2, len2);
+
+ return QString::compare(QString(s1, len1), QString(s2, len2), d->caseSensitivity);
}
int QCollator::compare(const QString &s1, const QString &s2) const
{
- return compare(s1.constData(), s1.size(), s2.constData(), s2.size());
+ if (d->collator)
+ return compare(s1.constData(), s1.size(), s2.constData(), s2.size());
+
+ return QString::compare(s1, s2, d->caseSensitivity);
}
int QCollator::compare(const QStringRef &s1, const QStringRef &s2) const
{
- return compare(s1.constData(), s1.size(), s2.constData(), s2.size());
+ if (d->collator)
+ return compare(s1.constData(), s1.size(), s2.constData(), s2.size());
+
+ return QStringRef::compare(s1, s2, d->caseSensitivity);
}
QCollatorSortKey QCollator::sortKey(const QString &string) const
@@ -115,16 +128,20 @@ QCollatorSortKey QCollator::sortKey(const QString &string) const
if (d->dirty)
d->init();
- QByteArray result(16 + string.size() + (string.size() >> 2), Qt::Uninitialized);
- int size = ucol_getSortKey(d->collator, (const UChar *)string.constData(),
- string.size(), (uint8_t *)result.data(), result.size());
- if (size > result.size()) {
- result.resize(size);
- size = ucol_getSortKey(d->collator, (const UChar *)string.constData(),
- string.size(), (uint8_t *)result.data(), result.size());
+ if (d->collator) {
+ QByteArray result(16 + string.size() + (string.size() >> 2), Qt::Uninitialized);
+ int size = ucol_getSortKey(d->collator, (const UChar *)string.constData(),
+ string.size(), (uint8_t *)result.data(), result.size());
+ if (size > result.size()) {
+ result.resize(size);
+ size = ucol_getSortKey(d->collator, (const UChar *)string.constData(),
+ string.size(), (uint8_t *)result.data(), result.size());
+ }
+ result.truncate(size);
+ return QCollatorSortKey(new QCollatorSortKeyPrivate(result));
}
- result.truncate(size);
- return QCollatorSortKey(new QCollatorSortKeyPrivate(result));
+
+ return QCollatorSortKey(new QCollatorSortKeyPrivate(QByteArray()));
}
int QCollatorSortKey::compare(const QCollatorSortKey &otherKey) const
diff --git a/src/corelib/tools/qelapsedtimer_win.cpp b/src/corelib/tools/qelapsedtimer_win.cpp
index dcddc96e32..eab2f8ef6c 100644
--- a/src/corelib/tools/qelapsedtimer_win.cpp
+++ b/src/corelib/tools/qelapsedtimer_win.cpp
@@ -52,19 +52,13 @@ static void resolveLibs()
if (done)
return;
-#ifndef Q_OS_WINRT
+#if !defined(Q_OS_WINRT) && !defined(Q_OS_WINCE)
// try to get GetTickCount64 from the system
HMODULE kernel32 = GetModuleHandleW(L"kernel32");
if (!kernel32)
return;
-
-#if defined(Q_OS_WINCE)
- // does this function exist on WinCE, or will ever exist?
- ptrGetTickCount64 = (PtrGetTickCount64)GetProcAddress(kernel32, L"GetTickCount64");
-#else
ptrGetTickCount64 = (PtrGetTickCount64)GetProcAddress(kernel32, "GetTickCount64");
-#endif
-#endif // !Q_OS_WINRT
+#endif // !Q_OS_WINRT && !Q_OS_WINCE
// Retrieve the number of high-resolution performance counter ticks per second
LARGE_INTEGER frequency;