Commit Graph

28337 Commits

Author SHA1 Message Date
Thiago Macieira
72393ac3b6 Allow QDateTime to shrink back to short data mode on copy
We won't shrink on manipulation when we have memory allocated, but it's
a good idea to create a non-shared copy if we can. It's an unlikely
scenario, though, because it requires the QDateTime object to have been
set to a large state then manipulated back into a small state.

Change-Id: I06bae9392f534e45b3f1ffff144dfee755bafa01
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:57:13 +00:00
Thiago Macieira
d1395b76cf Move the QDateTime file static functions to their right place
The file has an organization, so let's follow it. This commit has no
other changes besides moving code around.

Change-Id: I06bae9392f534e45b3f1ffff144e0b1f6dd72622
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-10 17:57:08 +00:00
Thiago Macieira
fb498a6519 Long live the short QDateTime optimization
Well, maybe not for so long: we may want to revisit it for Qt 6. At the
very least, we should enlarge the size of QDateTime on 32-bit system so
that they too can benefit from the optimization.

With this optimization, on 64-bit systems, the most common uses of
QDateTime now no longer allocate memory at all. The range is slightly
reduced from 584,554,049 years to 2,283,414 years around 1970. The other
drawback is that calling QDateTime::offsetFromUtc() on a localtime now
needs to recalculate the offset, instead of using the cached offset.
(QDateTime::toMSecsSinceEpoch() didn't use the cache).

Change-Id: Id5480807d25e49e78b79ffff144a8b2c9af91814
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:57:03 +00:00
Thiago Macieira
3eb5b15d80 QDateTimePrivate refactor: static'fy the date/time manipulators
This commit moves QDateTimePrivate functions setTimeSpec, setDateTime,
getDateTime, checkValidDateTime and refreshDateTime outside the
class. Like the previous commit, this is done in preparation for the
"Short QDateTime Optimization" as the "msecs" field will be placed in
the short data, if possible.

By making them file-level static, this also improves code generation, as
the compiler doesn't know whether it has to emit the class members for
out-of-line use or not.

Change-Id: I06bae9392f534e45b3f1ffff144df4d73cbc9184
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:56:57 +00:00
Thiago Macieira
97eae54083 QDateTimePrivate refactor: static'fy access to d->m_status
This commit changes most accesses to the d->m_status (including
d->spec() and d->setSpec() uses) to use new static functions. This is
done in preparation to the "Short QDateTime Optimization" as the status
byte will be kept in the short data.

Change-Id: I06bae9392f534e45b3f1ffff144dbd795d03227a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-10 17:56:53 +00:00
Thiago Macieira
b726751cd1 Refactor & simplify QDateTime::setMSecsSinceEpoch
Change-Id: I06bae9392f534e45b3f1ffff144df5ce1aa52636
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:56:48 +00:00
Thiago Macieira
38a1f610ab Refactor & simplify QDateTimePrivate::refreshDateTime()
Change-Id: I06bae9392f534e45b3f1ffff144df51ae6159a97
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-10 17:56:45 +00:00
Thiago Macieira
8e12120a2b Simplify the QDateTimePrivate::setTimeSpec() function
Change-Id: I06bae9392f534e45b3f1ffff144df36cc98b5f3f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:56:41 +00:00
Thiago Macieira
d3279b3217 QDateTime: fix the massageAdjustedDateTime differently
Instead of using a macro for maybe passing an extra parameter, pass the
d pointer and let the function decide what to use and what not to use.

Change-Id: I06bae9392f534e45b3f1ffff144dbeb68a30cb48
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:56:37 +00:00
Thiago Macieira
31b926d679 Move QDateTimePrivate::toMSecsSinceEpoch() code into QDateTime
Change-Id: I06bae9392f534e45b3f1ffff144dbad485814779
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:56:33 +00:00
Thiago Macieira
0358b87102 Remove QDateTimePrivate::isNull{Date,Time}()
They're superfluous, since b491fab02a
removed the distinction between null and invalid. Just use the
isValidXxx equivalents.

Change-Id: I06bae9392f534e45b3f1ffff144db9badad010fd
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:56:28 +00:00
Thiago Macieira
6d311a23ad Stop QDateTimePrivate from inheriting QSharedData
We're going to have to stop using QSharedDataPointer because of the
upcoming short-datetime-optimization. By dropping the inheritance, I am
also able to rearrange the members and remove the padding hole that
existed.

The second padding hole was removed in the previous commit, which merged
two 32-bit fields into one.

On 64-bit systems, there's no way around a remaining 4-byte hole
somewhere due to the odd number of 32-bit members. I chose to leave it
in the middle of the struct, before the m_timeZone member, instead of
tail padding, so that the layout of the first members structure are the
same in bootstrapped and non-bootstrapped builds. That should help
debugging the bootstrapped tools in Qt Creator. It's also now the same
in 32- and in 64-bit systems.

Change-Id: Id69569111e7d4e619e22ffff144b1fba708885f7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-10 17:56:23 +00:00
Thiago Macieira
1a161c8ede QDateTimePrivate: merge the time spec, DST status and validity flags
Storing them in a single byte is the first step towards the Short
QDateTime Optimization.

The bump in the "private version" by 10 is to accommodate possible
changes in the Qt 5.7 branch.

Change-Id: Id5480807d25e49e78b79ffff144a59420457bcf0
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-10 17:56:18 +00:00
André Klitzing
9466d0e633 Disable QSslDiffieHellmanParameters tests for QT_NO_SSL builds
Change-Id: Ie0b7e9c819ddd1627709f64c30c8d2374bf50c9b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-06-10 13:18:03 +00:00
Shawn Rutledge
04e224b19a add QTest::createTouchDevice()
This enables creation of autotests which use touch events, without using
private API.

Task-number: QTBUG-44030
Change-Id: If8fe89f8423aaafd9e6501e231c33580b9365eb8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-06-10 13:08:00 +00:00
Shawn Rutledge
982b70d37d autotests: use QTest::createTouchDevice()
Task-number: QTBUG-44030
Change-Id: I514c1294a0ff6587b825982a8bb354104c214120
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-06-10 13:07:17 +00:00
Milla Pohjanheimo
e73e2264de Blacklist tst_QWindow tests for Ubuntu 16.04
Blacklisting tests positioning(default), modalWindowPosition() and
modalWindowEnterEventOnHide_QTBUG35109()

Task-number:
QTBUG-53156
QTBUG-54001
QTBUG-35109

Change-Id: Ib0c50a356a1928afbd12a1ec3650f80f65b81265
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2016-06-10 08:49:44 +00:00
Anton Kudryavtsev
1c9818c871 QString: use new QL1S::at() in lastIndexOf()
Make overloaded lastIndexOf() functions
more homogeneous.

Change-Id: If45aac88b43d26baf7f93caec3662a1085e26b97
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-09 18:01:50 +00:00
Allan Sandfeld Jensen
bdf270202b Remove QWidgetBackingStore::fullUpdatePending
This was no longer used and always false.

Change-Id: I981055e6cc736cfe3432914c173c8b3edc31b46e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-06-09 14:53:05 +00:00
Erik Verbruggen
923d869b0f Aarch64: vectorize ascii de-/encoding.
This works only on Aarch64, because the vaddv instruction is only
available on 64bit ARM. Doing something equivalent on 32bit ARM has the
high chance to run into micro-architecture differences: on an Cortex-a8,
transferring a single vector element from NEON to the regular CPU
registers takes 20 cycles(!).

Change-Id: Iccbfe84da82abb9b10f3f3dc35c8b950df69e251
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2016-06-09 08:06:04 +00:00
Jan Arve Saether
7c264643f6 Fixed a bug where IM reported wrong anchor rectangle
The problem was that in some cases, the cursor position was used to
calculate the anchor rectangle instead of the anchor position.

This caused selection handles to be shown at the wrong position.

Change-Id: I8d866b644fc3c4d530529b7f468d16ae1088cd98
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2016-06-09 07:36:09 +00:00
Thiago Macieira
48fd845c61 QElapsedTimer: Remove legacy code dealing with Windows pre-Vista and CE
GetTickCount64 is available on Windows Vista and WinRT. Since Windows CE
is no longer supported on dev, we don't need to dynamically resolve the
function anymore.

What's more, QueryCounterFrequency is documented to never fail since
Windows XP, so we haven't needed GetTickCount64 for years (no clue when
we dropped support for Win2k).

Change-Id: I115db302eb114bed8cd1fffd14558a81353d2aed
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-08 22:49:57 +00:00
Marc Mutz
a7ae92e67d QStringRef: add missing relational operators against QByteArray
QStringRef op QByteArray was ambiguous between

  bool QStringRef::operator op(const char*) const
  bool operator op(const QStringRef&, const QString&)

QByteArray op QStringRef was ambiguous between

  bool operator op(const QString&, const QStringRef&)
  bool operator op(const char*, const QStringRef&)

Fix by providing more overloads.

[ChangeLog][QtCore] Disambiguated the relational operators
comparing QByteArray with QStringRef (and vice versa).

Change-Id: I1cfa9ecfdd8b4102e652593faf35f6098289bc34
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-08 21:42:33 +00:00
Marc Mutz
f0d9eed064 QString: fix QChar <> QLatin1String relational operators for non-US-ASCII
The implementation used the QString::compare_helper(QChar*, int, char*, int)
overload, which, however, interprets the rhs as a UTF-8 sequence, not as
Latin-1.

Fix by using the (QChar*, int, QLatin1String) overload.

Extend the test to cover this case, too.

Change-Id: I59b26d63d0caec036b80ef8818c75d0cebe519d2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-08 21:35:54 +00:00
Jake Petroules
e672fd5432 Remove QSysInfo code related to unsupported versions of Windows.
Change-Id: Ia28f17146d61724dbea73939793dfbd503546e56
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-08 21:21:55 +00:00
Marc Mutz
0843ce8524 tst_qstringapisymmetry: cover QByteArray, const char*, too
As in 032efc2cb2, which added the
API-symmetry test, define the missing relational operators
locally in the test harness until they are fixed in the library.

Change-Id: Ic2688e6b6b3e028a9c29f1a5eb01058375ef3fe9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-08 15:32:02 +00:00
Giuseppe D'Angelo
982ef5b494 QSharedPointer/QWeakPointer/QScopedPointer: add comparison against nullptr
Some constructors were added, but the comparison operators were missing.
The STL has them, so we ought have them too.

Change-Id: I030c14a3b355988f509716b4b1b1a835b3ab9481
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-06-08 09:09:47 +00:00
Erik Verbruggen
997572d859 Use built-ins for qPopulationCount on MSVC and recent Clang versions.
Change-Id: Ib7e5f1129dda664d81f8a59bfa851ae70ef04542
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-08 08:03:31 +00:00
Lars Knoll
95a4e5f016 Set ssl in QT_CONFIG when openssl is enabled
Makes things symmetrical with the windows configure and cleans
up the logic in ssl.pri

Change-Id: I4a373afe78e904de7d04baea38c250ff0c9d5062
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-08 07:07:15 +00:00
Giuseppe D'Angelo
bc9f8fd8de QSharedPointer/QWeakPointer/QScopedPointer: plaster API with Q_DECL_NOTHROW
Some methods were already marked, this adds noexcept to even more methods.

Change-Id: I420bb1cc985058c7976ce3a1f251fadbba7ddceb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-06-07 21:09:42 +00:00
Richard J. Moore
b6d0c127f8 Make QCryptographicHash a Q_GADGET.
This makes the hash algorithm play nicely with qDebug.

Change-Id: I6db651cd5c73e8be65442dd68d6b865dcb975f4c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-06-07 19:01:02 +00:00
João de Deus Morgado
1f8a2ff41d Fix Infinite loop in QGraphicsScene::focusNextPrevChild
Task-number: QTBUG-42915
Change-Id: Ie380e0d77453bcdb68e92dcffe8278f169da27bc
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2016-06-07 08:44:34 +00:00
Tor Arne Vestbø
87c426d5f4 Simplify Foundation conversion function documentation
The \fn command to specify the function signature is not needed when
the documentation precedes the function itself.

Change-Id: I9de0d1ae73af443f0beded77538d62cea85b5e72
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-06-06 22:24:49 +00:00
Lars Knoll
74d7824c1f Remove output of QT_PRODUCT_LICENSEKEY
This is not being used anywhere anymore.

Change-Id: I4d8ded9e9f6c28b594930bd1ea9347ba2db8a2e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-06 16:27:38 +00:00
Lars Knoll
96d935cd05 Remove some dead code
CFG_WEBKIT is never set to anything (removed in 1b716724f, 2012),
so simply remove the dead code path.

Change-Id: I63ef7cc6a2bf2fbf9ceb63f1a54e28882ec6e01e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-06 16:26:24 +00:00
Ralf Nolden
f969c50bc2 Remove obsolete a.out code after QT_AOUT_UNDERSCORE is gone
Old versions of OpenBSD and NetBSD mkspecs had the QT_AOUT_UNDERSCORE
define declared in their qplatformdefs.h to support systems still
using a.out format. As those systems are long obsolete and the defines
are removed, remove the obsolete code, too.

Change-Id: Ia9e2f2d6de81fb182ef4c995b29062afe570b8b9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-06 16:20:51 +00:00
Gatis Paeglis
23ac4a1a88 Refactor xcb configure logic
- This is more readable in my opinion.
- Fixes the bug where configure script would fail in certain
  cases for CFG_XCB="auto" by complaining of missing xcb
  dependencies. "auto" should not fail, in case of missing
  dependencies it should set CFG_XCB to "no".
- Error messages are more accurate.

Task-number: QTBUG-47624
Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Change-Id: I0572be4ad441931b7c771246bbd70f819d810d22
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-06 16:13:12 +00:00
Oswald Buddenhagen
1816b53138 make the xcb-xkb compile test more specific
try hard to detect only 1.10 and up.

Change-Id: I14517a42b810604f65c07df74f2ef9e840393a38
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2016-06-06 16:13:05 +00:00
Jake Petroules
95ea1b1aa8 Remove all code paths related to unsupported Apple platforms.
Now that the minimum deployment target (and thus SDK) is 10.9 for OS X
and 7.0 for iOS, all code paths affecting platform versions lower than
the aforementioned are removed.

Change-Id: Id985c7259c4ac069319d88f2c29c9559ae9e8641
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-06-04 09:24:33 +00:00
Thiago Macieira
2f01e04d8f QObject::connect: reduce generated code size for statics and functors
Instead of placing the assignment of false in the impl() function, move
it to the inline QSlotObjectBase::compare() function. That means it's
assigned in one place (two, actually, inside qobject.cpp), instead of
for every static member, non-member or functor we connect or disconnect.

Change-Id: I87e17314d8b24ae983b1fffd1453623ad4c4dcb2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-06-03 22:14:49 +00:00
Lars Knoll
3379ef2280 Remove some code for cross building from MingW to Solaris
I don't think anybody would do this today.

Change-Id: Id4eb69fb0a38bbd2a28099b66896e55d2b8c9022
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-03 10:27:39 +00:00
Oswald Buddenhagen
2f68d08be0 move xcb 1.5 compile check from qpa/xcb-syslibs to qpa/xcb
the test should be executed in every case. configure's use of pkg-config
implies that intention.

Change-Id: I722c88da5c2a0f2cc1f926d796093b78cd79bea8
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2016-06-03 10:27:01 +00:00
Volker Krause
3726aed788 Add Q_FLAG for QDBusServiceWatcher::WatchMode.
This is needed for generic property access to work correctly.

Change-Id: I76613ace730985001fc5fe1bb1b3fa5c6a8bdf70
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-03 09:57:55 +00:00
Giulio Camuffo
ec4eb4db61 Install some eglfsdeviceintegration headers, as a private module
This allows external integrations to be developed against it.
Also uniforms all class names as QEglFSFoo.

Change-Id: I72ff37c0fcdf1ccd37110b4c36874d6c99b2e743
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-06-03 09:19:05 +00:00
Thiago Macieira
3ec57107ce Windows: stop using _beginthreadex on regular builds
This commit also reverts fecaa6aae8.

The Microsoft documentation says _beginthreadex and _endthreadex are
used to initialize the C/C++ runtime and are necessary when linking to
libcmt(d).lib (that is, when using the -MT or -MTd options). For regular
builds linking against the .dll runtime, there should be no impact.
Inspection of the CRT source code which gets installed with Visual
Studio or Windows SDK proves that.

It's preferable to use CreateThread directly as _endthreadex will try to
call FreeLibraryAndExitThread, which can cause a deadlock if we try to
wait for the thread to exit from a global destructor.

For -MT builds, since there can be no DLLs, it's not a problem to
continue to use _beginthreadex and follow Microsoft's recommendation.

Task-number: QTBUG-53031
Change-Id: Id5480807d25e49e78b79ffff144af62c3c59dfe0
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-06-02 22:16:47 +00:00
Jake Petroules
49e49bdbe1 Remove reliance on QSysInfo::[Mac|Windows]Version in QSysInfo itself.
Those enumerations and their associates are being deprecated,
and so the backing of their replacements cannot rely on it.

Change-Id: Id544aa757313065f435b5e66cd0475975cd5b825
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-02 22:16:27 +00:00
Friedemann Kleint
740470457e Simplify constructor code of QTemporaryFile.
Pass the name as parameter to the constructor of QTemporaryFilePrivate
and use delegation in the convenience constructors.

Change-Id: I4087600b804fe22910b4985a59a02547f54a6acd
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-06-02 12:58:26 +00:00
Milla Pohjanheimo
abe32df864 Blacklisting pendingCallWhenDisconnected on OpenSUSE 42.1
We need to get QtWayland in the CI asap, and that's why we need to
blacklist every test that fails in the CI without really looking what's
the problem behind it. Sorry for that!

Task-number: QTBUG-53786
Change-Id: I64102c35ad879df07a692a112163f318ffb2f658
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
2016-06-02 10:12:50 +00:00
Joerg Bornemann
5803a9ba57 Remove Windows CE vestiges
Remove every usage of the _WIN32_WCE macro outside of 3rd party
source code directories.

Change-Id: Ia7e859bd6dcaef10c66674612c8e440f9a2dee56
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-06-02 08:03:37 +00:00
Lars Knoll
f08da97186 Get rid of dead code
QMAKE_SWITCHES (dead/broken since d1c10615e, 2012) and QMAKE_VARS
(dead since 389f8b039, 2006) were set, but never used in configure.
SUPPORTED was defined but never used since 018aff49cd (2003).

Removed dead command line arguments -depths (qws-related, dead since
f220f99a6d), -arch, -host-arch (both 921e5193), and -qconfig (710ec5ca).

Change-Id: I6bbed56c538cdd74b68432e7fd1e51177f79cc85
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-05-31 19:15:32 +00:00