diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-10-17 18:54:26 +0300 |
---|---|---|
committer | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-10-18 17:52:04 +0000 |
commit | 6a7b683817e7427cf952130b7726833fd5be74ce (patch) | |
tree | 10a707cb680672e6d73af3e808a67d0d454871bb /src/plugins/platforms | |
parent | a769b347542060e7d7e010c343d4a7d5c1549de0 (diff) |
Plugins: optimize string usage
Prefer QStringRef methods to avoid allocations.
Use startsWith/endsWith rather than comparing substrings;
and avoid substrings where references suffice.
Use new QStringList::join(QL1S).
Change-Id: I46c44aca96578633370006d613eb0ac13f7cfc03
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/android/qandroidinputcontext.cpp | 11 | ||||
-rw-r--r-- | src/plugins/platforms/qnx/qqnxscreen.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp | 6 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbmime.cpp | 6 |
4 files changed, 12 insertions, 13 deletions
diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index 06a9c8c488..2656d45d5f 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -866,7 +866,7 @@ const QAndroidInputContext::ExtractedText &QAndroidInputContext::getExtractedTex if (composeLength > 0) { //Qt doesn't give us the preedit text, so we have to insert it at the correct position int localComposePos = m_composingTextStart - blockPos; - blockText = blockText.left(localComposePos) + m_composingText + blockText.mid(localComposePos); + blockText = blockText.leftRef(localComposePos) + m_composingText + blockText.midRef(localComposePos); } int cpos = localPos + composeLength; //actual cursor pos relative to the current block @@ -930,9 +930,8 @@ QString QAndroidInputContext::getTextAfterCursor(jint length, jint /*flags*/) QString QAndroidInputContext::getTextBeforeCursor(jint length, jint /*flags*/) { QVariant textBefore = queryFocusObjectThreadSafe(Qt::ImTextBeforeCursor, QVariant(length)); - if (textBefore.isValid()) { - return textBefore.toString().right(length) + m_composingText; - } + if (textBefore.isValid()) + return textBefore.toString().rightRef(length) + m_composingText; //compatibility code for old controls that do not implement the new API QSharedPointer<QInputMethodQueryEvent> query = focusObjectInputMethodQueryThreadSafe(); @@ -946,9 +945,9 @@ QString QAndroidInputContext::getTextBeforeCursor(jint length, jint /*flags*/) //### the preedit text does not need to be immediately before the cursor if (cursorPos <= length) - return text.left(cursorPos) + m_composingText; + return text.leftRef(cursorPos) + m_composingText; else - return text.mid(cursorPos - length, length) + m_composingText; + return text.midRef(cursorPos - length, length) + m_composingText; } /* diff --git a/src/plugins/platforms/qnx/qqnxscreen.cpp b/src/plugins/platforms/qnx/qqnxscreen.cpp index f8ae5121d1..46df500330 100644 --- a/src/plugins/platforms/qnx/qqnxscreen.cpp +++ b/src/plugins/platforms/qnx/qqnxscreen.cpp @@ -90,7 +90,7 @@ static QSize determineScreenSize(screen_display_t display, bool primaryScreen) { const QString envPhySizeStr = qgetenv("QQNX_PHYSICAL_SCREEN_SIZE"); if (!envPhySizeStr.isEmpty()) { - const QStringList envPhySizeStrList = envPhySizeStr.split(QLatin1Char(',')); + const auto envPhySizeStrList = envPhySizeStr.splitRef(QLatin1Char(',')); const int envWidth = envPhySizeStrList.size() == 2 ? envPhySizeStrList[0].toInt() : -1; const int envHeight = envPhySizeStrList.size() == 2 ? envPhySizeStrList[1].toInt() : -1; diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp index f7c8dbdf23..bc0e5cc523 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp @@ -137,10 +137,10 @@ static FontKeys &fontKeys() QString realKey = registryFontKey; realKey.remove(trueType); realKey.remove(sizeListMatch); - const QStringList fontNames = realKey.trimmed().split(QLatin1Char('&')); + const auto fontNames = QStringRef(&realKey).trimmed().split(QLatin1Char('&')); fontKey.fontNames.reserve(fontNames.size()); - foreach (const QString &fontName, fontNames) - fontKey.fontNames.append(fontName.trimmed()); + for (const QStringRef &fontName : fontNames) + fontKey.fontNames.append(fontName.trimmed().toString()); result.append(fontKey); } } diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp index f71c5464d0..3e9b0e1e4a 100644 --- a/src/plugins/platforms/xcb/qxcbmime.cpp +++ b/src/plugins/platforms/xcb/qxcbmime.cpp @@ -208,10 +208,10 @@ QVariant QXcbMime::mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, reinterpret_cast<const ushort *>(data.constData()), data.size() / 2); if (!str.isNull()) { if (format == QLatin1String("text/uri-list")) { - const QStringList urls = str.split(QLatin1Char('\n')); + const auto urls = str.splitRef(QLatin1Char('\n')); QList<QVariant> list; - for (const QString &s : urls) { - const QUrl url(s.trimmed()); + for (const QStringRef &s : urls) { + const QUrl url(s.trimmed().toString()); if (url.isValid()) list.append(url); } |