summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* QTranslator: enable NRVO in find_translation() for poor compilersMarc Mutz2016-01-121-1/+2
| | | | | | | | | | | | | | | ... such as GCC. truncate(0) was chosen because it is already used throughout the function. Using clear(), say, which is inline, produces slightly more code. As is, saves 160b in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: I415d09ad2b4547f1d69f78d85e2aa1c1f9a17ed3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* QTranslator: optimize string handling in find_transformationMarc Mutz2016-01-121-1/+2
| | | | | | | | | | - Don't repeatedly truncate a (shared) QString, truncate a QStringRef instead, preventing a detach. Change-Id: I1a9cf7fc5bc9ea06279f7e2548f2bd144b8780a3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* QtCore: eradicate all Q_FOREACH loops [kernel]Marc Mutz2016-01-126-12/+14
| | | | | | | | Saves just 168b in text size on optimized GCC 4.9 Linux AMD64 builds, but most for loops are in non-Linux code. Change-Id: I4f20a65c2e4953011308ff831c9e8fa37a25274b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Mark QLocale as sharedMarc Mutz2016-01-122-2/+14
| | | | | | | | It was already movable, so it's BC. Only needed to add nothrow member-swap and nothrow move assignment. Change-Id: Iefedb877078da8ee075eb67185eef221143ddec1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QProcessPrivate: fix double init of exitCode in ctorAnton Kudryavtsev2016-01-121-1/+0
| | | | | Change-Id: I934cb9d40fa0c0c06e8552f522d58c5326754f37 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSize: use qSwap in transpose()Anton Kudryavtsev2016-01-121-6/+2
| | | | | | | ... because that's what it does. Change-Id: Ia3d4eefe2e675e4b2c2a4f01b8339ba69a40a5e9 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QTranslator: don't repeatedly re-create a QString from a QLatin1StringMarc Mutz2016-01-111-2/+3
| | | | | | | | | | | | | ... each time around the loops. Cache it. Also use QStringLiteral, since the string will never be modified. Also saves 96b in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: I0269586235da18f3073a553739561ea7db6356e8 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QTranslator: re-use 'realname' capacity in find_translation()Marc Mutz2016-01-111-7/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | For almost the whole of its life time, 'realname' has the same prefix, but the old code used the same string-builder expression to construct it over and over again. If QStringBuilder would re-use the capacity of the LHS object, that would boil down to just a bit more copying of characters than necessary. But assigning a QStringBuilder expression to a QString works by implicit conversion of the QStringBuilder expression to a QString, followed by move-assigning the new QString into the old. The new code keeps the common prefix around, resetting 'realname' to that prefix with truncate, only appending the varying suffixes. In this way, one memory allocation per assignment is saved (ignoring a potentially required capacity increase in one of the appends here), and also some out-of-line QString dtor calls, since op+=(QString&, QStringBuilder...) doesn't create a temporary QString. Also saves ~1KiB in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: I0872a69c9111d7218567f06f8fefb010f2430532 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/5.6' into devFrederik Gladhorn2016-01-0819-165/+197
|\ | | | | | | | | | | Based on merge done by Liang Qi Change-Id: Id566e5b9f284d29bff2199f13f9417c660f5b26f
| * QPair<QRunnable*, int> is too large for QList to be efficient-ish.Volker Krause2016-01-072-6/+6
| | | | | | | | | | | | | | | | | | | | Qt3D is making heavy use of this, causing the QList node allocations to be among the top 10 per frame allocation sources. Switching to QVector fixes that. Change-Id: I3b4df329710f82bf8d6797ea1f0c79b288a08063 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * WinCE: Remove QIncrementalSleepTimer from QProcess::waitForFinishedJoerg Bornemann2016-01-061-12/+6
| | | | | | | | | | | | | | | | | | | | | | Remove a superfluous loop and thus the usage of QIncrementalSleepTimer from QProcess::waitForFinished. We just wait for the process handle. There's no need for a loop that checks multiple wait conditions. This enables us to remove QWindowsPipeWriter from the Windows CE port in a subsequent commit. Change-Id: If6a82405227cf145263dba3726bae959e6871d0e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * QString: prevent resize() from shedding capacityMarc Mutz2016-01-061-14/+5
| | | | | | | | | | | | | | | | | | | | ...even if reserve() hasn't been called before. [ChangeLog][QtCore][QString] resize() will no longer shrink the capacity. That means resize(0) now reliably preserves capacity(). Change-Id: If499a20990bbf3a20553da14e50a42918d310c9f Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
| * Remove declaration of method nowhere definedEdward Welbourne2016-01-061-2/+0
| | | | | | | | | | Change-Id: Ia95aac626803a85fea0bc0bc99972eb34215d351 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
| * winrt: Added timeout to await functionOliver Wolff2016-01-051-8/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of using a "custom wait function" in cases, where a timeout is needed (like in qhostinfo_winrt.cpp) we should have the timeout as part of our await function. By having one common place to handle this, we can avoid unnecessary warnings, that might be caused by custom functions. The current implementation in qhostinfo for example causes at least 1 "originate error" exception per call. Change-Id: I7b6cfdfd861af2b0d271465eecaefe4a93e3109b Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
| * Winrt: Show message when command line processing fails/usage should be shownOliver Wolff2016-01-051-2/+8
| | | | | | | | | | Change-Id: If8f69906beb22f632ccbde92aab5caf914dcb31b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * winrt: Use winsock2 API for hostname resolution on WinRT/WinPhoneOliver Wolff2016-01-052-53/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That API has been available for WinRT and Windows Phone for some time now. By using it to get the machine name and for hostname resolution we can get rid of some winrt-only code and use qhostinfo_win.cpp on WinRT and Windows phone as well. Additionally the required capability was added to tst_qhostinfo so that this auto test can be run without any manual editing. Change-Id: I63fa5521bf8cdb0c919bd5a0100ea977c865622a Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
| * WinRT: Add camera button events on Windows PhoneSamuel Nevala2016-01-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Windows Phone 8.1 provides access to the camera button and press/release events get passed as Key_CameraFocus and Key_Camera. Unfortunately a release does not provide what has been pressed before, hence this information needs to be cached when the press happens. Done-with: Maurice Kalinowski<maurice.kalinowski@theqtcompany.com> Task-number: QTBUG-39115 Change-Id: I6ce58a1f07a6bf7183b8d99a26e5cd7b0d32d6db Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com> Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com> Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
| * Fix deadlock when setting environment variables.Samuel Nevala2016-01-041-15/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt uses QHash as the container for faking environment variables on Windows Runtime and CE. Environment variable manipulation functions are protected by mutex. Accessing the QT_HASH_SEED environment variable inside QHash can lead to situation where qputenv() call leads to qgetenv() call and that leads to a deadlock. Change the container from QHash to QVector to avoid deadlock. Task-number: QTBUG-49529 Change-Id: I550ead4ab12e7abebc044f52339063a44fcf0170 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
| * QMimeDatabase: follow symlinks when checking for FIFO etc.David Faure2015-12-291-1/+2
| | | | | | | | | | | | | | | | | | This was documented, but not what the code did. Task-number: QTBUG-48529 Change-Id: I4849778c61dcae13be27c62b24717693c0c07d78 Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * CMake: Add -fPIC to CXX flags only where necessaryKevin Funk2015-12-281-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this patch, Qt5Core_EXECUTABLE_COMPILE_FLAGS was populated with -fPIC unconditionally. This causes warnings on MSVC, since the compiler does not understand this flag. In fact, -fPIC is only required in case an older release of CMake is being used and the compiler is GCC 5.x (according to documentation), so let's really add it just in this case. Task-number: QTBUG-47942 Change-Id: I9d09b8b257a0647235d6d781ee5c023af34f8f88 Reviewed-by: Stephen Kelly <steveire@gmail.com>
| * Fix QJsonValue::fromVariant() if the variant contains a json objectLars Knoll2015-12-221-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | If the variant contains a known json type (value, array, object or document), simply unwrap those. In the case of the json document wrap the contained object/array into a QJsonValue. This should be the expected behavior, and makes more sense than returning a null QJsonValue. Task-number: QTBUG-41234 Change-Id: Id084fc11220d51aaf78b7694fd0ebef1411f5c51 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QUrl: revert path-normalization in setPath().David Faure2015-12-221-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | Path normalization should happen only when NormalizePathSegments is set. Use a less intrusive fix for the setPath("//path") issue that commit aba336c2b4ad8 was about. This allows fromLocalFile("/tmp/.") to keep the "/." at the end, which is useful for appending to the path later on (e.g. to get "/tmp/.hidden") Change-Id: Ibc3d4d3276c1d3aaee1774e21e24d01af38fa880 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QStandardPaths: warn if $XDG_RUNTIME_DIR doesn't existDavid Faure2015-12-221-8/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | If the environment variable is set, but points to a non-existing directory, the user would get a warning about chmod failing. Better be clear and warn about the fact that the directory itself doesn't exist. Also warn if $XDG_RUNTIME_DIR points to a file rather than a directory. Task-number: QTBUG-48771 Change-Id: If84e72d768528ea4b80260afbbc18709b7b738a8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Add DEPENDS option to qt5_wrap_cpp()Daniel Levin2015-12-211-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the moc rule does not support dependency scanning, so after successful moc file generation it will ignore implicit dependencies in the header file. Although this works in most typical scenarios, at least in one case incremental builds become broken: when using Q_PLUGIN_METADATA() with the FILE argument. If FILE refers to a JSON file and latter was updated, then the expected behavior is to regenerate the moc file. Since CMake add_custom_command() does not support late dependency setup, all dependencies should be explicitly listed in a DEPENDS section. This patch adds the DEPENDS multiarg option to qt5_wrap_cpp(), allowing to specify additional dependencies to the moc rule. Task-number: QTBUG-44009 Change-Id: I2052ce23d3cb0c87c6bd99fcb7e8a71a7be9a330 Reviewed-by: Kevin Funk <kevin.funk@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Daniel Levin <dendy.ua@gmail.com>
| * qprocessordetection.h: Fix detection of 32-bit ARMv8Thiago Macieira2015-12-211-20/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is more future-proof. It fixes the detection of 32-bit on ARMv8-A processors since it uses the __ARM_ARCH macro that GCC and Clang define. For MSVC, we use _M_ARM, which also contains the architecture version. MSVC does not currently support ARMv8 code, but when it does, this commit should make the support automatic. I don't know which compiler defines __TARGET_ARM_ARCH, but support it too. Change-Id: I8de47ed6c7be4847b99bffff141c8ede54a849eb Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
| * Remove superfluous ReleaseSemaphore/WFSO callsJoerg Bornemann2015-12-212-13/+16
| | | | | | | | | | | | | | | | | | Factor out the dispatching of IO results into a separate function. Do not increment the semaphore count in waitForAnyNotified just to decrement it again in _q_notified. Change-Id: I7d4a04b679bb152ab3a5025513f885aee276d086 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | Make template instantiation in QFactoryLoader explicitUlf Hermann2016-01-061-1/+1
| | | | | | | | | | | | | | gcc 4.9.2 does not understand it otherwise. Change-Id: I131a14c526c1213665fdbbeb75032e41eac6cd63 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | CMake: Enable C++11 support on Qt5 targetsKevin Funk2016-01-061-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Implicitly add the minimum required `-std=...` to Qt5 module targets. Use the newly introduced INTERFACE_COMPILE_FEATURES property for this, which is available starting from CMake version 3.1. This also fixes the Qt5 CMake tests, which previously try-compiled projects using Qt 5.7 headers in non-C++11 mode, thus failed. Change-Id: I54fc0e07403b646b5d6ac3ab6b8b47119b4feef6 Reviewed-by: Stephen Kelly <steveire@gmail.com>
* | QLocale: Accept trailing junk in qstrtod()Ulf Hermann2016-01-052-8/+18
| | | | | | | | | | | | | | | | | | | | | | qstrtod() used to accept trailing junk until libdouble-conversion was introduced and we need this behavior in order to implement EcmaScript's parseFloat() correctly. The QString and QByteArray methods should not accept trailing junk, though. Task-number: QTBUG-50131 Change-Id: Ide922da0d65b2576be2c9f47f6053057eff77994 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QFactoryLoader: generalize qLoadPlugin()Marc Mutz2016-01-051-4/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Use perfect forwarding for the additional argument. - Provide a variadic template version - Deprecate qLoadPlugin1() — there's no reason for a different name — and fix all callers in qtbase. - Provide non-variadic overloads for up to three additional args (QPlatformIntegration rolled its own function because it needs three args). Change-Id: I72fb2dd9a021de704cbf5e4b6ea31c80447fb3b1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QStateMachine: replace a QPair with a small structMarc Mutz2016-01-052-19/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The use of QPair made the return type of initializeAnimation() so complicated, that the original author opted to declare the pair on one line, then assign to it in the next, to keep below the line length limit. She also copied a member of the pair just so as to give it a descriptive name. Fix both by introducing a small result struct. It has a nicer name, compared to the pair, but still port callers to use 'auto'. The member names are descriptive enough now. Saves more than 0.5KiB in text size on optimized GCC 4.9 Linux AMD64 builds, too. Change-Id: I7ed007ffa0fb16e182e38cd405cfd54da4e363fb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* | [docs] Gently steer people away from QPairMarc Mutz2016-01-052-0/+21
| | | | | | | | | | | | Change-Id: Ib0fb69f856606612d516426732f619422630c93f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QtCore: eradicate all Q_FOREACH loops [tools]Marc Mutz2016-01-046-25/+24
| | | | | | | | | | | | | | | | Saves just under 5.5KiB in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: I6d868a7d2e469cf0564127b0e66cd7b272a0c9cd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QMimeDatabase: replace a QStack<QString> with std::stack<QString, QStringList>Marc Mutz2016-01-041-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A QStringList is almost as efficient as a QVector<QString>. More importantly, the QStringList case can share code with the myriad of other QStringList users, in particular because std::stack is but the thinnest of wrappers around its underlying container. Saves 1400b in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: If37ed55802aa8a529ca772df465990ded0aaba7f Reviewed-by: David Faure <david.faure@kdab.com>
* | QMimeAllGlobPatterns: optimize string handling in matchingGlobs()Marc Mutz2016-01-041-1/+2
| | | | | | | | | | | | | | ... by not re-creating the same string in every loop iteration. Change-Id: If17c5980bec8276b531267b309578dac8901c93e Reviewed-by: David Faure <david.faure@kdab.com>
* | Print correct OS name if it is a server versionAndré Klitzing2016-01-041-7/+11
| | | | | | | | | | | | | | https://msdn.microsoft.com/en-us/library/windows/desktop/ms724833%28v=vs.85%29.aspx Change-Id: I7ee4c78959696ee2b662899a6a1408cfd1ebcacd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* | Print out "Service Pack" version of underlying WindowsAndré Klitzing2016-01-041-7/+27
| | | | | | | | | | | | Change-Id: I1f7dbf8f1244e8b7bf2f459fdce381838d776dbe Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* | QtCore: eradicate all Q_FOREACH loops [io]Marc Mutz2016-01-049-20/+19
| | | | | | | | | | | | | | | | Saves more than 1KiB in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: I1a974e903bc8352af800fa26edae0194c1e51705 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QWindowsFileSystemWatcher: increase concurrency when canceling threadsMarc Mutz2016-01-041-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code asked each thread to stop, and then waited for that one thread to finish before deleting it and turning to the next thread in line. Split the three actions, ie. first ask all threads to stop, then wait for all threads to finish, and only then delete all of them. Apart from being more icache-friendly, this enables more concurrency, as stopped threads' cleanup work can overlap with other's, thus reducing the wait() time per thread to potentially zero. Did not replicate the inefficient foreach loop, but went with C++11 range-fors directly. Change-Id: I53e598e31999a772c0f81ff5885490216e13d492 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QtCore: eradicate all Q_FOREACH loops [itemmodels]Marc Mutz2016-01-045-9/+10
| | | | | | | | | | | | | | | | Saves more than 4KiB in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: Ice3fe915622a399d1ed10e0ce364cf54b4b835fe Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QtCore: eradicate all Q_FOREACH loops [statemachine]Marc Mutz2016-01-041-22/+25
| | | | | | | | | | | | | | | | Saves a bit over 2.5KiB in text size on optimized GCC 4.9 Linux AMD64 builds. Change-Id: I18a635d65a3c20c4bf5ec2cbfa4ed81a8153cab3 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | QtCore: eradicate all Q_FOREACH loops [threads, plugins]Marc Mutz2016-01-045-7/+8
| | | | | | | | | | | | | | | | | | Saves just shy of 4KiB in text size on optimized GCC 4.9 Linux AMD64 builds, iow: ~0.07% of the total QtCore library size. Change-Id: I87fdcc8ee25c6bb5dabddb9a694ab4496b1538fa Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QtCore: eradicate all Q_FOREACH loops [mimetypes]Marc Mutz2016-01-045-25/+24
| | | | | | | | | | | | | | | | | | Saves just shy of 6KiB in text size on optimized GCC 4.9 Linux AMD64 builds, iow: ~0.1% of the total QtCore library size. Change-Id: I087e1e34a64944affb1211e16371e314012c4b2c Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add qAsConstMarc Mutz2016-01-041-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...to turn mutable lvalues into const lvalues. Like the proposed std::as_const, it should not apply to rvalues to avoid lifetime issues in code like for (auto x : qAsConst(someFunc())) // dangling At a more basic level, qAsConst isn't useful for rvalues, because one can always store them in an lvalue first, with no loss in performance (the object is created by the compiler silently anyway). So the correct way to write the above is: const auto funcResult = someFunc(); for (auto e : funcResult) To fail compilation when passing rvalues, I used the const-&& pattern also employed by std::cref(), and the proposed std::as_const. Intended as internal API, but not put into the QtPrivate namespace to make it simpler to use. We could wait for std::as_const, but that is far, far away (just entered the current C++17 draft as of this writing), and the Qt containers with their tendency to detach are a problem _now_. Change-Id: I8824a59d2274de5c5cd642f117212322e4648025 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | qmutex_unix: use a semaphore when availableOlivier Goffart2016-01-042-3/+56
| | | | | | | | | | | | | | It makes tst_QMutex::contendedQMutex with no msleep 8 times faster Change-Id: Ic300e7618b4467e4e08b30f0213bd23c06d4d90a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QUrlQuery: remove misleading commentMarc Mutz2016-01-041-1/+0
| | | | | | | | | | | | | | The 'itemList' is a QList and is not maintained in sorted order. Change-Id: I8f221281803ff0e9caa054007bee3058214f2f30 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QTranslator: Extract Method is_readable_file from find_translation()Marc Mutz2016-01-041-15/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code re-used a QFileInfo object, repeatedly setting new file names with QFileInfo::setFile(QString). But QFileInfo::setFile() simply assigns itself a new QFileInfo object: *this = QFileInfo(...) so it's just as efficient to re-create a new QFIleInfo object for every file name under test. To avoid extra {} for object lifetime scoping, factor the repeated evaluation of isReadable() && isFile() into a small helper function, which also creates and destroys the QFileInfo object. The deeper significance of this change is that it avoids implicit sharing of 'realname', which is permanently modified. A later patch will make changes that make 'realname' re-use its capacity through the lifetime of the find_translation() function, and sharing the variable implicitly will nip any auch attempts in the bud. Force the compiler to not inline the new function. There's really no point in spending ~0.5KiB in text size on inlining the code; the miniscule speed improvement is dwarfed by the memory allocation of the QFileInfo ctor, anyway. As a consequence, this change even saves 96b in text size on optimized GCC 4.9 Linux AMD64 builds, even though that wasn't even the goal. Change-Id: I08c5cbb7b6f1ba59440a1597e28d962ce63a7c65 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QStateMachine: replace a Q_FOREACH with QSet::op-=Marc Mutz2015-12-311-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Both 'configuration' and 'pendingErrorStates' are QSet<QAbstractState*>, so we can use QSet::operator-= to subtract one from the other. No need to loop over QSet::remove() here. Nevermind that QSet::operator-= is really poorly implemented atm. That needs to be fixed in QSet. Change-Id: I3f3172ce9a485c4c2abf7d19b831fb0dc1ea61b1 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QAbstractModelPrivate: de-inline functionsMarc Mutz2015-12-312-23/+34
| | | | | | | | | | | | | | These functions have no business being inline. Change-Id: Ib565fb4870f886be133e9360155bd514935e5e72 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QTimeZone: replace a Q_FOREACH loop with QList::op+=Marc Mutz2015-12-311-2/+1
| | | | | | | | | | Change-Id: I6d2cede8126346f7cd4425dafc07c794c2a7bc1d Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>