summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
...
* | Haiku: Make corelib compile on HaikuTobias Koenig2015-01-105-2/+13
| | | | | | | | | | Change-Id: I66bc492390eedd723ab7866d3c7a38539d708727 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | QHash: clean up class definitionMarc Mutz2015-01-102-26/+26
| | | | | | | | | | | | | | ...by removing redundant '<Key, T>' and 'inline'. Change-Id: I9d81950c6384927633de07de511712f7274a1283 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QtCore: mark some operations nothrowMarc Mutz2015-01-1019-68/+72
| | | | | | | | | | | | | | | | | | | | | | | | This shotgun-surgery approach is motivated by trying to get a clean(er) build for -Wnoexcept on GCC, so it is expected that for any class touched here, there will be more operations that can be marked nothrow. But they don't show up in conditional noexcept clauses, yet, so they are deferred to some later commit. Change-Id: I0eb10d75a26c361fb22cf785399e83b434bdf233 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove qSwap specialization from Q_DECLARE_SHAREDMarc Mutz2015-01-101-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The way swapping is supposed to work is: 1. Each type supplies a swap() function or function template in its namespace. Any good STL implementation will find it there through ADL. As will the primary qSwap() template. 2. Each use of swap() in Qt, in particular in template code, should use qSwap() instead of std::swap() or the using+swap-trick, because qSwap() automatically enables ADL. It also has a sophisticated conditional noexcept specification that can be used in the custom swap() functions' own noexcept clause. This change also allows us to convert implicitly-shared classes' member-swap functions to noexcept one at a time, because the specialization will no longer be in conflict with the primary template regarding exception specifications. The primary's specification could, of course, be reused here, but it's complex and if the machinery around it is changed later on, it will not affect Q_DECLARE_SHARED classes. Change-Id: I3389a655a9fd8de370f363c8fcef60269a9f506c Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QUnicodeTables: mark all functions as nothrowMarc Mutz2015-01-102-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | Yes, this is necessary. The noexcept operator looks for noexcept tagging, not at the contents of the function to determine whether to return true. The more conditionally-noexcept functions are used, the more important it becomes that low-level functions are correctly marked noexcept. In that, it is like constexpr. Change-Id: I4bca178444d1fd7caf3a92f996b1536eebdb5014 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QModelIndex: plaster API with Q_DECL_NOTHROWMarc Mutz2015-01-101-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mostly straight-forward, but some things are worth noting: 1. Yes, this is necessary. The noexcept operator looks for noexcept tagging, not at the contents of the function to determine whether to return true. The more conditionally-noexcept functions are used, the more important it becomes that low-level classes are correctly marked noexcept. In that, it is like constexpr. 2. The functions that actually call into the model (data(), flags(), sibling(), ...) can throw (bad_alloc, if nothing else). Consequently, they're not marked nothrow. They're the only ones. Change-Id: Id0413212b0f1c049a339480ee449a53c3ca9fea0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QRingBuffer: retrieve pointer to data more carefullyAlex Trotsenko2015-01-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | An empty ring buffer always has a pre-cached byte array in its container. In this case size() indicates that no data is available, but readPointer() tries to resolve this byte array. To avoid an illegal pointer as a result, return Q_NULLPTR instead. Change-Id: Icc5f08f071a8f02a14c112b6e1adbe5373bd9466 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Get rid of QT_NO_QWARNING_MACROKai Koehne2015-01-092-3/+2
| | | | | | | | | | | | | | Just use QT_NO_QDEBUG_MACRO, like we do already for qInfo. Change-Id: I4b2ef68427fbe6f253fe02a3ab161fa25186e834 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add QtInfoMsgKai Koehne2015-01-098-35/+325
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add an 'info' message type that can be used for messages that are neither warnings (QtWarningMsg), nor for debugging only (QtDebugMsg). This is useful mainly for applications that do not have to adhere to the 'do not print anything by default' paradigm that we have for the Qt libraries itself. [ChangeLog][QtCore][Logging] QtInfoMsg got added as a new QtMsgType. Use the new qInfo(), qCInfo() macros to log to it. Change-Id: I810995d63de46c41a9a99a34d37c0d417fa87a05 Reviewed-by: Jason McDonald <macadder1@gmail.com>
* | QStandardPaths: add AppConfigLocation.David Faure2015-01-099-12/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ConfigLocation was erroneously inconsistent, by adding the org name and app name on Windows (unintentionally) and not on Unix (while having subdirs in ~/.config is actually common practice for some XDG desktops) Therefore this adds AppConfigLocation, which always has the org name and app name (while GenericConfigLocation never does). [ChangeLog][QtCore][QStandardPaths] Added QStandardPaths::AppConfigLocation, for application-specific configuration directory. ConfigLocation was inconsistent. Task-number: QTBUG-38872 Task-number: QTBUG-38845 Change-Id: I80fb98f296436261f3996c9df87571c29b06ab35 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QStateMachine: replace a QHash key involving a QPointerMarc Mutz2015-01-092-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using QPointers (or any type that makes a QPointer part of its identity) as a key in any associative container is wrong. They get externally set to nullptr, violating the associative container's class invariants, which could lead to data corruption, even though bucket-based hash implementations are less susceptible than binary trees. To fix, write a new class that acts much like the old QPair<QPointer<>,QByteArray>, but uses the QPointer only as a guard, not as part of its identity. To preseve identity, also saves the naked pointer originally passed and uses that for op== and qHash(). Change-Id: I4fa5a6bf86bad8fe7f5abe53d7c7f3ad3754d8d6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QStateMachine: fix some misleading codeMarc Mutz2015-01-091-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code creates a RestorableId from the passed (QObject*, QByteArray) and used it for lookup in a hash table (ok) and as a container for the (QObject*, QByteArray), satisfying later references to those parameters from the RestorableId instance instead of using the parameters directly. Now, RestorableId holds the QObject* in a QPointer, so the code might have wanted to detect the object being destroyed as part of the operation, BUT: a) the operation is a read-only one, and b) the code didn't check for nullness before dereferencing the QObject*. Fix by moving the creation of the RestorableId into the scope it's used and otherwise using the parameters directly. Change-Id: Iaf12f722fe6841ee1a55037fe33a6115aa699aca Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Docs: e.g. -> for example in qhash.cppMarc Mutz2015-01-091-2/+2
| | | | | | | | | | Change-Id: Ifee0117ddadfaa774fdd575467b03ca5b0baf433 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | QVersionNumber: use qHashRange()Marc Mutz2015-01-091-7/+1
| | | | | | | | | | | | | | Change-Id: Ia7cfb8030cded33f4246206392b46d1013067ef3 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Keith Gardner <kreios4004@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add qHashRange and qHashRangeCommutativeMarc Mutz2015-01-093-0/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qHashRange() takes an (input iterator) range and hashes each element, combining the hash values using the hash combiner from Boost/N1837 with the magic number 0x9e3779b9, as described here: http://stackoverflow.com/questions/4948780/magic-number-in-boosthash-combine qHashRangeCommutative() does the same but with a cummutative combiner (unsigned addition) to create hash values that are order-independent, e.g. for hashed containers. The obvious combiner, XOR, is a bad one because it eliminates duplicate elements. Signed addition cannot be used, since signed overflow leads to undefined behavior. [ChangeLog][QtCore] Added qHashRange() and qHashRangeCommutative() functions to aid implementing qHash() overloads for custom types. Change-Id: I3c2bbc9ce4bd0455262a70e0cf248486525e534f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Don't specialize std::swap, just overload it in the global namespaceThiago Macieira2015-01-091-8/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the modern, correct way of providing a swap operation. See http://stackoverflow.com/a/8439357/134841 for more information. By changing this, we also fix Qt building with ICC and libc++. This patch also adds a noexcept() rule to match what the C++11 standard requires. Change-Id: I18f22fe7c92cf253e94168e1312346b4c183f536 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | QMutex/QReadWriteLock: mark bootstrap implementations nothrowMarc Mutz2015-01-092-28/+28
| | | | | | | | | | | | | | | | This is primarily to get a cleaner build of src/tools under -Wnoexcept. Change-Id: I0dea21e70aad56b25675fc59fac0327b55ee83e3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Fix authenticated POST/PUT http requests with buffering disabledAllan Sandfeld Jensen2015-01-092-30/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If reset is disabled then POST and PUT requests can not be authenticated as the upload device can not be reset. There shouldn't be any reason that shouldn't be allowed if the QIODevice given supports resetting. The disableReset feature of QNonContiguousByteDevice is removed as it is not used anywhere else, and is redundant when reset can indicate success or failure. Task-number: QTBUG-43628 Change-Id: If941a98fd3f797872351c10bdca6aa6745dbefea Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* | Seal shared memory on POSIX IPCTobias Koenig2015-01-091-0/+7
| | | | | | | | | | Change-Id: I5dc3807af904ad77db82d49b38b4c8e66d2d4de6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Use O_CLOEXEC flag POSIX shared memory handleTobias Koenig2015-01-091-0/+14
| | | | | | | | | | Change-Id: Ie554c5963112b88c058082085dbc9eed42a41861 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add POSIX IPC support to QSystemSemaphore and QSharedMemoryTobias Koenig2015-01-0911-336/+882
| | | | | | | | | | | | | | | | | | This patch is a forward-port from 4.8 branch (d869e1ad4b0007757e97046609de2097cd9e9c5d). Change-Id: I6ae36a5417d1176fbecf775668f6033b1cb22a94 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QFileSystemWatcher: Use FSEvents FSW on OS XGabriel de Dietrich2015-01-091-4/+4
| | | | | | | | | | | | | | | | | | This removes one of the last references to 10.6. Change-Id: Ie23d9aba698714460e7478a421e85d4ad50d4ec9 Task-number: QTBUG-43505 Reviewed-by: Liang Qi <liang.qi@theqtcompany.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* | Introduce Windows version 10.Friedemann Kleint2015-01-082-0/+6
| | | | | | | | | | | | | | | | Detect OS kernel version 10.0 as Windows 10. Task-number: QTBUG-43413 Change-Id: I39307cf8cc2e7cc209d6a88b8576db87086fa20e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Unexport QVersionNumberMarc Mutz2015-01-081-7/+7
| | | | | | | | | | | | | | | | | | | | And only export those functions which are actually out-of-line. This prevents exporting all the inline methods of QVersionNumber, so we can more freely tune the implementation after its release. Change-Id: Ie0c5e3f95fea9ec9b3dd481058db6c9f5ef2653c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QPair: mark relational operators and qMakePair() conditionally noexceptMarc Mutz2015-01-081-0/+7
| | | | | | | | | | | | | | | | The member functions are a bit more complicated, since they require <type_traits> support, so they're left for another commit. Change-Id: Icb792468e35c63eb1ae97f62ed023266fb86b89b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QPair: add member-swapMarc Mutz2015-01-082-0/+37
| | | | | | | | | | | | | | std::pair has it, too. Change-Id: I2526b09455db5502ad38a81f3d401098d54614a5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Make qSwap() noexcept, if possibleMarc Mutz2015-01-081-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | This greatly increases the value of qSwap(), since not only does it automatically do the parallel std+ADL lookup of swap(), but also now centralizes the rather messy code involved to create a correct noexcept specification. Other code now can simply use Q_DECL_NOEXCEPT_EXPT(noexcept(qSwap(lhs, rhs))). Change-Id: Ia35df4876b143e86c4150ac452a48c3775c3702b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QMargins: plaster API with Q_DECL_NOTHROWMarc Mutz2015-01-081-104/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mostly straight-forward, but some things are worth noting: 1. Yes, this is necessary. The noexcept operator looks for noexcept tagging, not at the contents of the function to determine whether to return true. The more conditionally-noexcept functions are used, the more important it becomes that low-level classes are correctly marked noexcept. In that, it is like constexpr. 2. In accordance with the rules governing noexcept specifications for the standard library itself, the operator/-family of functions are not marked as noexcept, since they have preconditions and thus a narrow contract. Narrow-contract functions should not be noexcept. All other functions have wide contracts (ie. no preconditions). Change-Id: I2cb1f951a92dcb25eac4d9afc5b7780311e39492 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QRect: plaster API with Q_DECL_NOTHROWMarc Mutz2015-01-082-317/+334
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mostly straight-forward, but some things are worth noting: 1. Yes, this is necessary. The noexcept operator looks for noexcept tagging, not at the contents of the function to determine whether to return true. The more conditionally-noexcept functions are used, the more important it becomes that low-level classes are correctly marked noexcept. In that, it is like constexpr. 2. In accordance with the rules governing noexcept specifications for the standard library itself, the get*()-family of functions are not marked as noexcept, since they have preconditions and thus a narrow contract. Narrow-contract functions should not be noexcept. All other functions have wide contracts (ie. no preconditions). Change-Id: I82e5d34a0293d73ddc98ee231e17e26463ab6686 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add support for printing the real thread ID with QT_MESSAGE_PATTERNThiago Macieira2015-01-081-2/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | %{threadid} should have been %{qthreadptr} but we forgot to make the change for Qt 5.4. So do it now. [ChangeLog][QtCore][Logging framework] %{threadid} now prints the real thread ID. On Linux, OS X, iOS, FreeBSD and Windows, the value is unique system-wide. On other systems, it will print something that may be process-specific (the value of pthread_self(3)). To print the pointer to QThread::current(), use %{qthreadptr}. Change-Id: Ie383ff864a11966cf5d095b966a30ace65d34ee6 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QSize: plaster API with Q_DECL_NOTHROWMarc Mutz2015-01-082-128/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mostly straight-forward, but some things are worth noting: 1. Yes, this is necessary. The noexcept operator looks for noexcept tagging, not at the contents of the function to determine whether to return true. The more conditionally-noexcept functions are used, the more important it becomes that low-level classes are correctly marked noexcept. In that, it is like constexpr. 2. In accordance with the rules governing noexcept specifications for the standard library itself, the operator/-family of functions are not marked as noexcept, since they have preconditions and thus a narrow contract. Narrow-contract functions should not be noexcept. All other functions have wide contracts (ie. no preconditions). Change-Id: I9fc94218a2728c272483f9c2826c265f5b11c9b4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove qRegisterSequentialContainer, qRegisterAssociativeContainer tracesKai Koehne2015-01-071-5/+2
| | | | | | | | | | | | | | | | | | | | | | The methods where introduced with commit 01fb843af88d9, but removed before the next release in a1898f446651. Also add a comment that we should get rid of the special Q_CC_MSVC handling in Qt 6. Change-Id: I8bb992a59f31a0de7e3f14f34d1d4f604ebfe8f3 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Move a few QStringList methods up to QList<QString>Thiago Macieira2015-01-073-39/+82
| | | | | | | | | | | | | | | | This should be completely source-compatible, aside from the indirect header order change. Change-Id: I4cf8800ea1bfeb3023c7319991ab8ae281c925e8 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Disable the warning about deprecation inside qalgorithms.hThiago Macieira2015-01-061-2/+4
| | | | | | | | | | | | | | | | | | | | | | Since some of the algorithms use other ones, we should not warn about those. The warnings are supposed to happen only in user code. Warnings obtained with GCC 5. The Clang change is just to be on the safe side. Change-Id: If295899f6ff6534de7b19741d33efc0b5c4c912c Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Remove workarounds for RVCT compiler bugsThiago Macieira2015-01-067-89/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This does not try to remove support for RVCT. There has been no report of it working or failing to work, so the status continues to be unknown. In particular, the inline assembly code in atomic_armv[56].h remains in place. This commit only removes workarounds for compiler bugs or bogus warnings, assuming that anyone using this compiler has updated since Qt last tried to use it for Symbian in 2011. Note also how anonymous unions are now part of the language in C++11. Change-Id: Idc4fab092beb31239eb08b7e139bce2602adae81 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Fix QFileSystemWatcher::directoryChanged docs/testCory Bloor2015-01-051-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QFileSystemWatcher does not signal directoryChanged() when files are modified in a watched directory. QTBUG-8945 was closed with the decision that it should not signal. Updating the docs and tests to reflect this fact. The test code that is being changed is a partial revert of Qt4 commit 1428cc6d71a65c1ac7123c9c4cc3cfaf225cceed. It appears that Symbian supported directoryChanged() on modification, hence why the check was for 0 or 1. Change-Id: I04320c68f227ca338ce65e525956ee201fd50699 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | QIsciiCodec: add an assert to silence CoverityGiuseppe D'Angelo2015-01-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Coverity (not rightfully) complains that the code is using "iscii", a uchar obtained by looking up into a table, as an index into the "uni_to_iscii_pairs" array. Since the array is only 18 elements long, there's the theoretic risk of accessing it past its end. However, the lookup of "iscii" never returns values that may actually go out of bounds. Coverity may be smart enough to see the values that "iscii" can get and not raise the warning, but since it does, make the code more robust and add an assert. Task-number: QTBUG-43642 Change-Id: Id75ca105758b343102ca94137d0379c10e55581a Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QFlags: plaster API with Q_DECL_NOTHROWMarc Mutz2015-01-051-36/+37
| | | | | | | | | | | | | | | | | | | | | | | | Yes, this is necessary. The noexcept operator looks for noexcept tagging, not at the contents of the function to determine whether to return true. The more conditionally-noexcept functions are used, the more important it becomes that low-level classes are correctly marked noexcept. In that, it is like constexpr. Change-Id: Ia1aebf9b8d73fd8164c10dfca27a710934ba79a8 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Use QStringLiteral to prevent runtime string conversions.Milian Wolff2015-01-051-11/+17
| | | | | | | | | | Change-Id: I0b2f06f9f09868051e84af80b2c61b5ada99af69 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Fix undefined behavior found by GCC 5Thiago Macieira2015-01-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC said: qtldurl.cpp:51:50: error: loop exit may only be reached after undefined behavior [-Werror=aggressive-loop-optimizations] qtldurl.cpp:51:48: note: possible undefined statement is here while (tldIndices[index] >= tldChunks[chunk] && chunk < tldChunkCount) { ^ That's because we check whether chunk is still valid (less than tldChunkCount) after we've dereferenced tldChunks[chunk]. That is, we've already read tldChunk[2]. Change-Id: I79b6a1ea9a2454813d6cce7596fc2bb6d972d097 Reviewed-by: David Faure <david.faure@kdab.com>
* | QNX: Fix build.Rafael Roquetto2014-12-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Commit 99357e32a0e29c73ed721d6d31da66635e6586ca introduces a change that causes <cstddef> to be included instead of <stddef.h> under QNX. That causes symbols such as size_t to be placed on the std namespace only - QNX does not put those in the global namespace, since it is not really required by the standard, and therefore the build fails. Merry Xmas! Change-Id: I70c6976203a9d7beadd0076e122e2ac633a4ba69 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Enable ELF .interp section on HurdPino Toscano2014-12-301-1/+1
| | | | | | | | | | | | | | | | | | The toolchain is basically the same as on Linux, so we can get the program interpreter and print the build information when Qt5Core.so is run. Change-Id: I02a910e691622e24e882015716c5f74dd5a20c4a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Complete MIPS atomic support on pre-MIPS32 architecturesPino Toscano2014-12-301-1/+4
| | | | | | | | | | | | | | | | Extend the support for pre-MIPS32 architectures (done mostly in 60b6b28c213a420ee40e254ff1823876098e0a04) also to orderedMemoryFence. Change-Id: I50b9091c16166b8434a07988053c1f901d528237 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-12-2910-49/+45
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qbytearray.cpp src/gui/kernel/qplatformsystemtrayicon.cpp src/gui/kernel/qplatformsystemtrayicon.h src/plugins/platforms/xcb/xcb-plugin.pro Change-Id: I00355d3908b678af8a61c38f9e814a63df808c79
| * QNX: Revert the change to give higher precision timers.Roger Maclean2014-12-241-16/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous change (SHA 82c2118c) to provide better than 1ms accuracy for timers on QNX is not safe. According to the docs, ClockCycles is not guaranteed to return consistent information if called from different CPUs. While this can be addressed by locking the thread to a single CPU, you wouldn't want to do that here. On some systems (e.g. BB10) the behavior is extremely bad since ClockCycles only has 32 bits of precision. This results in overflows in the calculations making short timers run very slowly (16ms timers were around 1s). Also ClockCycles wraps in under three minutes causing even more problems. I've talked to the kernel developers and there is currently nothing that will give you better than 1ms accuracy. An individual program could use ClockCycles to calculate more accurate times if they want. It's not clear to me what benefit one would get with increased accuracy. Unless I've missed something, these times are only used to calculate timeouts for calls such as select. These timeouts will themselves have the same resolution as clock_gettime provides so the increased accuracy would appear to be for naught. Change-Id: Ia38b154ca41949becbd0b8558a9ff4ddd5e01a43 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bernd Weimer <bweimer@blackberry.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
| * qstorageinfo_unix.cpp: Fix build on BSD and other unicesDmitry Shachnev2014-12-231-3/+4
| | | | | | | | | | | | | | | | | | | | | | * Include statvfs.h on all non-Linux and non-Solaris systems. * Fix type of stat_buf structure on BSD. Change-Id: I6336503082fafd7f6108cf95c079bdd329d2ea0f Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Fix typo in Qt5CoreMacros.cmakeAleix Pol2014-12-231-1/+1
| | | | | | | | | | | | | | | | | | | | According to the documentation, the argument is called COPYONLY instead of COPY_ONLY. Fixes warning and ensures it works properly. Change-Id: I643f5ea808aaaf94c3ee666ec39485e84ed38df1 Reviewed-by: Vishesh Handa <vhanda@kde.org> Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
| * Simplify use of __has_include in qlogging.cppThiago Macieira2014-12-201-12/+9
| | | | | | | | | | | | | | Easier to just #define it to 0 Change-Id: Ife99fdca6564077762fa67c6d7a5becaf48655d8 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Use the GCC and Clang __builtin_bswap intrinsics in qbswapThiago Macieira2014-12-201-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Glibc will use the intrinsics for 32- and 64-bit, but didn't for 16-bit (probably because GCC didn't document it until version 4.8), so this commit will make us access the intrinsics directly the intrisincs for all type sizes. Additionally, this will get us access to the compiler intrisics even without Glibc, such as when building against uclibc or Bionic. Another benefit is that both Clang and ICC will use the MOVBE instruction on Atom and Haswell architectures. Change-Id: I39d1891f479887d719d69ebe4ac92ac9bfeda8af Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
| * Make sure we don't try to ask QByteArray to allocate too muchThiago Macieira2014-12-203-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QFile::readAll could be asked to read a file that is over 1 GB in size and thus cause an assertion: ASSERT failure in qAllocMore: "Requested size is too large!", ... The idea behind the existing code was correct, but the value was wrong. It prevented overflow of the integer size request, but didn't prevent overflowing the storage size. Change-Id: I072e6e419f47b639454f3fd96deb0f88d03e960c Reviewed-by: Martin Smith <martin.smith@digia.com>