summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Add a configure-time check for QT_COMPILER_SUPPORTS_SIMD_ALWAYSThiago Macieira2017-11-301-5/+1
| | | | | | | | | | | | | | | | This has two main benefits: 1) introduces a qmake CONFIG we can use in .pro/.pri/.prf files 2) removes the need to keep an up-to-date list of which compilers support the feature The test is implemented as trying to compile every single SIMD test we currently have, but without passing the -mXXX option. The reason for trying all of them is that some people may have modified their mkspecs to add -mXXX options or -march=XXX, which could enable the particular feature we tried, resulting in a false positive outcome. Change-Id: I938b024e38bf4aac9154fffd14f7784dc8d1f020 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* QStorageInfo: use Linux's /proc/self/mountinfo to get the subvolumeThiago Macieira2017-11-301-28/+207
| | | | | | | | | | | | | | | | This allows us to get "subvolumes" on all filesystem types. We do that by detecting the subdirectory that was bind-mounted. /proc/self/mountinfo has been in the kernel since 2.6.26. Since btrfs was only added on 2.6.29, there is no loss of functionality for btrfs users. I've tested this with subvolume or mountpoint names containing spaces, tabs and newlines. Change-Id: I57a1bd6e0c194530b732fffd14f4fa418255d839 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.10' into dev" into ↵Thiago Macieira2017-11-3020-374/+856
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-11-2320-374/+856
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/network/access/qhttp2protocolhandler_p.h src/network/kernel/kernel.pri src/network/ssl/qsslkey_qt.cpp src/plugins/platforms/cocoa/qcocoascreen.mm src/plugins/platforms/windows/accessible/iaccessible2.cpp src/plugins/platforms/windows/accessible/iaccessible2.h src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.h src/widgets/widgets/qmenu_p.h tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp tests/auto/other/qaccessibility/tst_qaccessibility.cpp tests/auto/testlib/selftests/expected_cmptest.lightxml tests/auto/testlib/selftests/expected_cmptest.teamcity tests/auto/testlib/selftests/expected_cmptest.txt tests/auto/testlib/selftests/expected_cmptest.xml Done-with: Edward Welbourne <edward.welbourne@qt.io> Change-Id: I4217cc7d840cbae3e3dd28574741544469c4c6b9
| | * qfloat16(float) constructor: explicit cast on aarch64 to avoid warningShawn Rutledge2017-11-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The warning was global/qfloat16.h: In constructor ‘qfloat16::qfloat16(float)’: global/qfloat16.h:124:18: error: conversion to ‘__fp16’ from ‘float’ may alter its value [-Werror=float-conversion] __fp16 f16 = f; ^ cc1plus: all warnings being treated as errors The warning was added by fb5976038162d93d60c7f76376bbb4df38e83ba9. Change-Id: I489348c4d5d672bfa5d4db99c837696a2a69a27e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * QIODevice: do not clear error string on closeAlex Trotsenko2017-11-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Keeping a description of the last device error is a more informative to the user than forcing the string to 'Unknown error'. Change-Id: Ie98fe1c94f24279fb633ce950bbe16450b0efdbd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * A brute-force solution to get QRandomGenerator build on IntegrityLiang Qi2017-11-151-2/+3
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-64451 Change-Id: Ife11c3448f54609ba6e85a269a3b5376c43a075f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * QSemaphoreReleaser: Move private members to the usual positionThiago Macieira2017-11-141-2/+4
| | | | | | | | | | | | | | | | | | Change-Id: Ic632b4163d784b83951cfffd14f67b902d096d8b Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: hjk <hjk@qt.io>
| | * Fix QBasicMutex default constructor not constexprThiago Macieira2017-11-141-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 02dc39fa8ee6fd9945728e12208a9e313ac4dd4b added the constructor for the bootstrapped mode. For the regular mode, we hadn't needed, since the {} syntax guaranteed initialization for us. Turns out there's at least one compiler that doesn't think it was enough (GCC for QNX 7). Task-number: QTBUG-64451 Change-Id: Ic632b4163d784b83951cfffd14f6766b4cb4eb64 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Liang Qi <liang.qi@qt.io>
| | * Merge "Merge remote-tracking branch 'origin/5.9' into 5.10" into ↵Tony Sarajärvi2017-11-125-8/+41
| | |\ | | | | | | | | | | | | refs/staging/5.10
| | | * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-11-095-8/+41
| | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/kernel/qwindow.cpp src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/windows/qwindowssystemtrayicon.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp tests/auto/widgets/kernel/qaction/tst_qaction.cpp Change-Id: Ifa515dc0ece7eb1471b00c1214149629a7e6a233
| | | | * Doc: Be more specific on full stop in QVersionNumberKai Koehne2017-11-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far we just write ... '.'. , which looks weird. Change-Id: Iac6fc781c80976994ea0a182b55958baa39a7e52 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
| | | | * Change fallthrough detection order to fix clang detectionHelio Chissini de Castro2017-11-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clang compiler defines fallthrough, but wrongly detects QT_HAS_CPP_ATTRIBUTE(fallthrough). This makes compiler breaks compilation due clang be expecting clang::fallthrough. Change the order makes the exceptions. clang/gnu, been tested before the generic, setting then proper defines at end. LLVM-bug: https://bugs.llvm.org/show_bug.cgi?id=33518 Change-Id: Ic287e9028936af3bdade5c1ee319ca8914b36ea7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | | | * qGlobalQHashSeed: initialize the seed before returning itThiago Macieira2017-11-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you had never used QHash before, this function returned -1. That's not useful if you're trying to implement your own QHash that uses Qt's global seed. Change-Id: Ib0e40a7a3ebc44329f23fffd14b2e875b970a55c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | | | * QFilesystemWatcher/Windows: Use event dispatcher of threadFriedemann Kleint2017-11-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the native event filter listening on removable drivers was installed on QCoreApplication::eventDispatcher() which led to a mismatch when launched from a non-GUI thread since ~QAbstractNativeEventFilter() removes itself from QAbstractEventDispatcher::instance(). Amends 45580aa92557caa4f3f5be783573ddb80602e494, e612fe8d47bc0fe762668617a5189117ad1aee15. Task-number: QTBUG-64171 Change-Id: Icbe289bd585f124d66989d0cd574040b986e680c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | | | * QStorageInfo: Properly decode labels from /dev/disk/by-labelChristian Ehrlicher2017-11-041-1/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | udev encodes the labels for /dev/disk/by-label/ with ID_LABEL_FS_ENC which is done with blkid_encode_string(). This function encodes some unsafe 1-byte utf-8 characters as hex (e.g. '\' or ' ') Task-number: QTBUG-61420 Change-Id: If82f4381d348acf9008b79ec5ac7c55e6d3819de Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * | | QRandomGenerator: optimize the global() and system() storageThiago Macieira2017-11-112-62/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We store both in a single memory structure, instead of two local statics. By construction, we also ensure that the global PRNG mutex is in a different cacheline from the global PRNG state itself. Finally, we don't store the full system QRandomGenerator, since we only need the type member from it. Change-Id: Icaa86fc7b54d4b368c0efffd14eecc48ff05ec27 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * | | QRandomGenerator: add more of the std Random Engine APIThiago Macieira2017-11-112-13/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This brings us to almost parity with the C++11 Random Engine API requirements (see chapter 26.5.1.4 [rand.req.eng]). We don't implement the templated Sseq requirements because it would require moving the implementation details to the public API. And we don't implement the <iostreams> code because we don't want to. Change-Id: Icaa86fc7b54d4b368c0efffd14f05ff813ebd759 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | | QRandomGenerator: add securelySeeded(), to ensure appropriate seedingThiago Macieira2017-11-112-9/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we don't document how many bytes one needs (it's 2496), it's difficult for the caller to provide just enough data in the seed sequence. Moreover, since std::mt19937 doesn't make it easy to provide the ideal size either, we can't actually write code that operates optimally given a quint32 range either -- we only provide it via std::seed_seq, which is inefficient. However, we can do it internally by passing QRandomGenerator to the std::mersenne_twister_engine constructor, as it's designed to work. Change-Id: Icaa86fc7b54d4b368c0efffd14f0613c10998321 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | | Change QRandomGenerator to have a deterministic modeThiago Macieira2017-11-113-303/+581
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now only QRandomGenerator::system() will access the system-wide RNG, which we document to be cryptographically-safe and possibly backed by a true HWRNG. Everything else just wraps a Mersenne Twister. Change-Id: I0a103569c81b4711a649fffd14ec8cd3469425df Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | | QRandomGenerator: remove the per-thread bufferThiago Macieira2017-11-112-65/+8
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we're adding a deterministic generator that inherently does not use syscalls, and people should really use that one by default, there is no point in optimizing the secure generator wrt syscalls. Besides, keeping the random data in memory for longer than needed is likely inadviseable. Change-Id: Ib17dde1a1dbb49a7bba8fffd14ed0871117fe930 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | Change almost all other uses of qrand() to QRandomGeneratorThiago Macieira2017-11-082-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The vast majority is actually switched to QRandomGenerator::bounded(), which gives a mostly uniform distribution over the [0, bound) range. There are very few floating point cases left, as many of those that did use floating point did not need to, after all. (I did leave some that were too ugly for me to understand) This commit also found a couple of calls to rand() instead of qrand(). This commit does not include changes to SSL code that continues to use qrand() (job for someone else): src/network/ssl/qsslkey_qt.cpp src/network/ssl/qsslsocket_mac.cpp tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp Change-Id: Icd0e0d4b27cb4e5eb892fffd14b5285d43f4afbf Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | QWinEventNotifier: Fix exit crashFriedemann Kleint2017-11-071-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure the wait handle is unregistered even though there is no event dispatcher in QWinEventNotifier::setEnabled(). Task-number: QTBUG-64152 Task-number: QTCREATORBUG-19175 Change-Id: I608b95adc7cb874bc52dc5bf0e9f51b443b54ebc Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| | * | Fix unused variable warning when compiling in release mode with GCC 7Thiago Macieira2017-11-031-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | error: unused variable ‘ret’ [-Werror=unused-variable] Change-Id: I6e9274c1e7444ad48c81fffd14dcff9278d4376b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * | QDateTimeParser: Remove unused variableRobert Loehning2017-11-021-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Iaa6460d4eb96632f3cb03bc29b57934c53cbf88e Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-10-304-12/+11
| | |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/windows/qwindowswindow.cpp tests/auto/widgets/kernel/qaction/tst_qaction.cpp Change-Id: Ia017a825ed2ca2d53ac586f4ae48df6f65818d40
| | | * QUrl: make sure setPort(nonnegative) is taken as part of authorityThiago Macieira2017-10-261-8/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were a couple of corner cases where doing setPort() would result in QUrl thinking that an authority was not present. Since the full URL parsing implies that a host is always present if the authority is present, then we also imply that setting the port number makes the host be present too. Change-Id: I69f37f9304f24709a823fffd14e67c12da18d69f Reviewed-by: David Faure <david.faure@kdab.com>
| | | * Fix clazy-strict-iteratorsFriedemann Kleint2017-10-251-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I9276a85f0a8061b2636687cf694b8ed1abaa18b8 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| | | * winrt: Fix compilation with -no-pchOliver Wolff2017-10-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-63210 Change-Id: Icdd4fcee67e3b386b86a131c302424b53b18e565 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | | * Remove duplicate qnx from the platform file selector namesLiang Qi2017-10-241-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the QFileSelector tests for QNX. Co-authored-by: James McDonnell <jmcdonnell@blackberry.com> Change-Id: I68a8fde86725596323b539433287ac1a18fac1eb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Fix search-replaced broken commentAllan Sandfeld Jensen2017-11-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Also we can't use constructors for multiple reasons now that it is C. Change-Id: I27f3e011cc1f67f5aa134eaf3ab934456cead902 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Fix qFloatFromFloat16_fast on NEONAllan Sandfeld Jensen2017-11-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An over-correction snuck in at some point. Change-Id: Ib67c4f6ecf8e6e244a0598c025a7cb7c15401070 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Add functions for fast bulk conversion of qfloat16Allan Sandfeld Jensen2017-11-217-2/+187
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both ARM and x86 can convert fp16 much faster in bulk than one at a time. This also enables hardware accelerated conversion on x86, when F16C isn't unconditionally available at compile time. This code is implemented in C to ensure that there's no leakage of inline symbols from the .obj file that was compiled by Visual Studio with AVX support. Unfortunately, simd.prf uses $(CXX) instead of $(CC) for all its sources, which means the file gets interpreted as C++ by g++, clang++ and icpc. Those compilers at least don't leak any symbols. Done-with: Thiago Macieira <thiago.macieira@intel.com> Change-Id: I9d26d99e83392861fb09564e0e8e8d76cd8483b3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Add support for C11 static_assert and thread_localThiago Macieira2017-11-212-26/+56
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | Tested with Clang, GCC 4.5 & up, ICC 17 and MSVC 2017. No current version of MSVC supports C11 and GCC implemented the features slightly later in C than in C++. Change-Id: I57a1bd6e0c194530b732fffd14f45c5074c9a052 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | Add template text to \fn commands in qmap.cppMartin Smith2017-11-191-134/+146
| | | | | | | | | | | | | | | | | | | | | | | | | | | The \fn commands were not recognized by clang-qdoc because the template stuff was missing from the \fn commands. This update adds the correct template text and parameters. Change-Id: I7def18f35745b984cc1e2da7c351403d98d8668c Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | doc: Fix some "Cannot tie this..." errorsMartin Smith2017-11-173-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are errors where clangqdoc finds a qdoc comment, but it can't find anything in the API to associate it with. There are different causes. In many cases, soneone has documented a function that isn't in the public API so it should not be documented in the first place. In other cases, a function is platform-specific and we need to add || defined(Q_CLANG_QDOC) somewhere to make it visible. Change-Id: I2b707548109f626e20d28f084072ef78f2ee6ac5 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | doc: Ensure GUID is declared for clangqdocMartin Smith2017-11-161-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | Clang needs to see a declaration for GUID, or it will ignore some function declarations that must be documented. Change-Id: Ic5d5a88b82c709be7f763a44994b1c077977731a Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | Avoid duplicate rules in QWinTimeZonePrivate::init()Edward Welbourne2017-11-151-2/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was iterating the full range of years, adding a rule for each year. The rules have a startYear member and are used for later years until the next rule's startYear, so we don't need to duplicate them; and the system APIs we get them from do support recurrent rules (with wYear set to 0), that apply to ranges of years. So propagate that recurrence and reuse rules where we can. Change-Id: Ifdd292d3f3d3e07969d7a02bb01f2a0110d32950 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Restructure Dynamic TZ query to same form as Registry variantEdward Welbourne2017-11-151-17/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Break out the reading of an individual rule to a function and add a fall-back that tries to get a non-dynamic rule when there's no dynamic data for the zone. At the same time, change the first rule, in all cases to apply for all time (i.e. set its .startYear to MIN_YEAR, instead of 1970 or the advertised start range): we'll use it when extrapolating backwards into the past. Change-Id: Ife548c7c7deebef2427d2838f3e12ed7abb631c1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Replace ruleForYear() method with a local index-based functionEdward Welbourne2017-11-152-16/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removed private method of QWinTimeZonePrivate in favor of a local static that returns a rule index rather than a rule; this prepares the way for smarter searching in transition-finding methods. In the process, re-work the function to use binary chop instead of a linear search through a potentially long sorted list. Change-Id: I2171e3f01afa3037b9718e1be7d0c9343aa74ff0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | DRY: eliminate code duplication in calculateTransitionsForYear()Edward Welbourne2017-11-151-49/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace with calculateTransitionForYear(), which just does one of the transitions, and wrap that with a pair-struct type to call it for DST and standard time, respectively. This also eliminate in/out arguments, which is said to be good for optimisers. Change-Id: I1e397404a0abceee7654524902af5be4eb88a625 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Add QFontMetrics(F)::horizontalAdvance() functionEskil Abrahamsen Blomfeldt2017-11-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A source of constant confusion is the QFontMetrics::width() function, which does not return the bounding width of the text, but the advance width. We deprecate this and add horizontalAdvance() instead, to avoid the confusion in the future. Note that there was an internal width() overload which was only there for the purpose of supporting the Qt::TextBypassShaping flag. This flag has already been replaced by public API, so no such overload is added. Instead, we deprecate the TextBypassShaping flag as well, which makes sense, since a replacement has been made. Also note that there was a consistency problem with QFontMetrics and QFontMetricsF, which are supposed to be interchangeable. The QFontMetrics::width() functions for strings took an optional int length argument, while the floating point version did not. This error is corrected in the advance() functions. [ChangeLog][QtGui][Text] Added QFontMetrics::horizontalAdvance() and QFontMetricsF::horizontalAdvance() to replace the confusingly named width() function. The latter has now been deprecated. Change-Id: I0dfda43aa65c8235be32c62fade82cae05b29c79 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | QDirIterator: Skip inconvertible file names on UnixAlexander Volkov2017-11-141-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the case when user's local encoding is UTF-8, QDirIterator may list entries which names can't be correctly converted from UTF-8 to UTF-16, e.g. for "\xC0\xB0" file name QDirIterator::fileName() returns "\uFFFD\uFFFD" (FFFD is a code of Replacement Character). The problem is that you can't do anything with such directory entries because there is no way to get the original entry names. List only those names that can be converted to QString and then back to the local encoding without corruption. Change-Id: Ib6a71dea8ce9601876040c07276c325fd997e767 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QLockFile/Unix: save the boot and machine IDs in the lock file tooThiago Macieira2017-11-144-6/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to make sure that the PID we read is from the same boot as we are right now running. The collision could happen on embedded systems where the boot sequence is fixed, so all the same processes would have the exact same PIDs after reboot as they did before. [ChangeLog][QtCore][QLockFile] QLockFile can now properly conclude that a lock file from a previous boot of the same device is stale and can be removed. This is implemented only for Linux and Apple operating systems. Task-number: QTBUG-63425 Change-Id: I0b48fc8e90304e0dacc3fffd14e8e3a197211788 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | | QSysInfo: Remove the caches in {boot,machine}UniqueId()Thiago Macieira2017-11-141-62/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | Looks like there are conditions in which they could be used during shut down and thus access an already-destroyed static. This was tested in test tst_lockfile.cpp:LockFileUsageInGlobalDtor. Change-Id: I57a1bd6e0c194530b732fffd14f4dae39ab1ae2c Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | | Make qsimd_p.h compile in C mode tooThiago Macieira2017-11-141-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Since we very often need to write our intrinsic-using code in C to avoid "leakage" of not-inlined inline functions, this file is very handy. Change-Id: I57a1bd6e0c194530b732fffd14f45d27a32538f8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | | Remove some unnecessary namespace prefixingEdward Welbourne2017-11-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | QWinTimeZonePrivate is based on QTimeZonePrivate, so can reference its members without prefix. Change-Id: I7b6bc33f70c4a497ec0caf897d48886a21f8fd65 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Merge "Merge remote-tracking branch 'origin/5.10' into dev" into ↵Liang Qi2017-11-0615-170/+236
|\ \ \ | | | | | | | | | | | | refs/staging/dev
| * | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-11-0515-170/+236
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/minimum-linux.S src/network/access/qhttpthreaddelegate.cpp src/widgets/kernel/qwidgetwindow.cpp Change-Id: Id2e817e85f85c68f5482c9a12912d35590f9d5f8
| | * | QFileSystemEngine: Fix renameat2() failures on non-local filesystemsThiago Macieira2017-10-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The RENAME_NOREPLACE flag is supported for all Linux local filesystems, since that can be easily checked by the VFS layer (it knows which files exist and which ones don't). For non-local filesystems, the backend needs support and that might need server-side support too. So we may get EINVAL errors for those, in which case we fall back to link/unlink, which in turn can fall back to rename(). EINVAL can also happen if we attempt to make a directory a subdirectory of itself. In that case, we will attempt to link() it, which will result in EPERM as we can't hardlink directories. Then we try rename() again, which should result in the expected EINVAL. Task-number: QTBUG-64008 Change-Id: Icaa86fc7b54d4b368c0efffd14f09ca23602dd2e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>