Commit Graph

18098 Commits (c501eb8bece9c9de37f7f0839a8396fbfa697fec)

Author SHA1 Message Date
Marc Mutz c501eb8bec QNetworkAccessManager: optimize QNetworkAccessAuthenticationManager allocation
Use QSharedPointer<T>::create(), which co-locates the refcount with the payload
in a single memory allocation, instead of QSharedPointer<T>(new T), which causes
two allocations.

Change-Id: I58196b6390dcc9bd52417e279fd9e000ab9ee9cc
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-04-11 22:55:30 +02:00
Marc Mutz 0b2bd6be6c QStringList: add move ctor from QList<QString>
Change-Id: I93fe4656c1a608ccc828bd9db528d4597a22f070
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-11 22:55:10 +02:00
Marc Mutz d5b7b4e41c QStringList: add op= overloads for QList<QString>
QStringList = QList<QString> already compiled, but was interpreted as
QStringList = QStringList(QList<QString>), which involves the QList
copy ctor. Adding the overload saves that copy.

Cannot use a using declaration here, since the return type is different.

Change-Id: I9f4feb2f97480d2d6a3b6fa7c71b5d511b623601
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-11 22:54:40 +02:00
Marc Mutz a74e4b85be QNetworkReplyImpl: optimize QRingBuffer allocation
Use QSharedPointer<T>::create(), which co-locates the refcount with the payload
in a single memory allocation, instead of QSharedPointer<T>(new T), which causes
two allocations.

Change-Id: I84980e98c4fe9773f12533983937eafa0b0ab250
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
2014-04-10 01:03:05 +02:00
Martin Smith e41c6e65b5 qdoc: Links to Q_DECL_FINAL not created
This update fixes part of QTBUG-37719. Q_DECL_FINAL is a
macro that is documented, but links to the documentation
for it were not created. The problem was that Q_DECL_FINAL
is actually used in the Qt sources, but it was not listed
in the Cpp.ignoretokens clause in the qdocconf file. This
update just adds it to Cpp.ignoretokens.

Task-number: QTBUG-37719
Change-Id: I62945df4976b21b67084e6de25e25bbc4c92f89f
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-04-09 08:56:57 +02:00
Jan Arve Saether cfaf3221d3 Remove some unused forward declarations.
Change-Id: I7816635ec37f3a70d23f0ab5aaf6c53481dbdbf9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-04-08 00:20:36 +02:00
Marc Mutz 27ae6ce93b QEvent: mark registerEventType() as no-throw
The new implementation using an atomic bit field performs no
memory allocations and thus cannot throw anymore.

Change-Id: If6a98f307ab4e6a7c3fe3c54763ac0c6d2da4ac0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-07 20:41:43 +02:00
Marc Mutz 90f87fabe8 QEvent: optimize registerEventType()
Instead of always searching from the end of the range [User, MaxUser],
cache the next available id and start searching from there.

Instead of saving the already-allocated IDs in a QSet, use an atomic
bit-field. This removes the need to use a mutex.

The QBasicAtomicBitField class is designed to be reusable, but lacks
features that are not needed by QEvent::registerEventType(). It is
also unclear how this could be made more encapsulated without losing
the property that the whole instance is placed in the BSS segment,
since making the data fields private will make the type non-POD.

Change-Id: I4012fa114d9d9e85e9e881e100a2c021fa09a0d7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-07 20:41:15 +02:00
Egbert Eich 5819ffe492 [xcb/xsettings] Byte order byte is at address 0
Accoring to
    http://standards.freedesktop.org\
    	        /xsettings-spec/xsettings-spec-0.5.html
the byte order byte is address 0 (not 1).

Change-Id: I441084a7f24908dd8a504648bfc50ba2d486a586
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-04-07 17:03:50 +02:00
Jan Arve Saether a6b5b173b3 Add missing \since 5.2 for qFloatDistance
Task-number: QTBUG-38090

Change-Id: Icd46d7e3e95c9a019a94cfef3c51e3a6ee82bd91
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-07 13:21:15 +02:00
Friedemann Kleint 5e6697bf20 Remove qobject_cast to QDockWidget in QWindowsVistaStyle.
Rearrange checks in handling of CE_DockWidgetTitle
to be consistent with the other styles.

Task-number: QTBUG-37350

Change-Id: I8f5d11092eff96337ff1e685d3c42fbb2f128827
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-04-07 12:38:30 +02:00
Marc Mutz 0ff6f175ec Add QNonContiguousByteDeviceFactory::createShared()
for more efficient creation of QNonContiguousByteDevices held in shared pointers.

Use the new functions in QNetworkAccessBackend::createUploadByteDevice()
and QNetworkReplyHttpImplPrivate::createUploadByteDevice().

Change-Id: I8a3c76f7c8d5926850303992c77e9382a39a55e8
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-04-07 12:11:47 +02:00
Marc Mutz 89fb2271f3 QSharedPointer: allow one create() argument in C++98, too
Survey says that most uses of QSharedPointer(T*) in Qt that could benefit from
variadic create() pass only a single argument. In order to prevent all such
uses from #ifdef'ing on the complex condition that enables the variadic version,
provide a single-argument version (for lvalues only, obviously) for C++98, too.

Change-Id: I22ad251a20bbf80867cc31eaa3bcec677bde4359
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-07 12:11:39 +02:00
Marc Mutz 509428decc Stabilize QListWidget test
Shot in the dark, as usual.

Change-Id: I272392e6d865f6b32047c3a0ebad70c0f007ba58
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-04-07 12:11:14 +02:00
David Faure f51cbc9e17 Add missing Q_DECL_OVERRIDE
Change-Id: Iffa196043d345d0b839a45635c0500d1abc3199c
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-04-05 12:42:27 +02:00
David Faure d7564624ac Add function for setting the startup ID for the next window that will be shown.
This is useful for applications being requested to show a second window
(e.g. via DBus)

Change-Id: I04add2aa82dce63e854ba0f1c020274ed586bf1f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-04-05 12:42:20 +02:00
Thiago Macieira d041ae30d6 Add detection for the Intel compiler in QLibraryInfo::build()
Change-Id: I26ed74ac963226abc42d50c0edac6ce9a1c0fd23
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-04-04 23:35:11 +02:00
Tomasz Olszak 790bc92bc0 Added handling of QT_LINUX_ACCESSIBILITY_ALWAYS_ON variable.
By setting this variable to non empty value we can, bypass
checking ScreenReaderEnabled proprty of org.a11y.Status
dbus interface. Not all accessibility readers set this.
The variable is also useful for debugging.

Change-Id: I6c5a1a51065948248e068dfff4755d6818ed9fb1
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-04-04 08:33:16 +02:00
Marc Mutz b1d6af35a4 QWeakPointer: add member-swap
[ChangeLog][QtCore][QWeakPointer] Added member-swap function.

Change-Id: Ide3672dc74a9d8153e5f930290d938e8c23993b5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-03 22:36:06 +02:00
Marc Mutz e3a8e242ad QWeakPointer: add lock() for std::weak_ptr compatibility
[ChangeLog][QtCore][QWeakPointer] Added lock() method for std::weak_ptr compatibility.

Change-Id: I0851d91c51f5a4f04a855a1d8082234ce38396b4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-04-03 22:35:57 +02:00
Jędrzej Nowacki ef2a2a9c03 Optimize QColor::setNamedColor
This patch removes two memory allocations from the algorithm.

Change-Id: I9366f9c5ce02fb1cae8adfbd8dff36c7f23af2a7
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-04-03 22:35:48 +02:00
Egbert Eich a3ed9b781c [xcb/xsettings] Add support for byte swapping
The XSettings protocol is not endian neutral. Instead it holds
information about endianness in the first byte. It uses the same
convention as X11/X.h does.
So far byte order handling was missing leading to nasty crashes
when byte order between clients setting and reading XSettings
differed. This patch fixes this.
Using the X11/X.h conventions seems to be an 'established standard',
this piece is missing from the Xsettings specifications. Therefore
this fix may introduce spurious regressions as other Xsettings
'providers' may use a different convention. To detect this and
to avoid crashes the fix also adds checks to avoid reading past
the end of the of the Xsettings data blob. If problems are
encountered: warn and bail.

Change-Id: If8acb23cca2478369633129af2d99e122a84cede
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-04-03 14:45:48 +02:00
Robin Burchell 5ef4e0ed0c QPainter: Fix a hard to trigger null dereference in QPainterPrivate::drawTextItem.
Done-with: Mohammed Hassan <mohammed.hassan@jollamobile.com>
Change-Id: I24c724d24346fb5be8c4a66d68a11d51be5ad5f2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-04-03 01:15:16 +02:00
Mitch Curtis 78f6d144d6 Serialize QPicture using the latest QDataStream version.
The QDataStream version with which QPicture was previously serialized
with was hard-coded to 11 (Qt 4.5). This prevents features of
serializable types used by QPicture from being serialized if they
were added after Qt 4.5; namely features of QFont like
HintingPreference.

[ChangeLog][QtGui][QPicture] QPicture now serializes its data properly
by also accounting for QDataStream versions greater than Qt 4.5.

Task-number: QTBUG-20578

Change-Id: Idd27682b187f4d4a3695c52bbf68e84853c024a8
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-04-02 15:18:11 +02:00
Marc Mutz 463d58325c QColor::colorNames(): reserve the result QStringList
Avoids reallocations.

Change-Id: I56afcdb400d1e07394e62a610f838a33feda9fe8
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-04-02 09:34:22 +02:00
Jan Arve Saether 81c5769493 Fix warnings produced by QT_ASCII_CAST_WARNINGS in widgets/accessible
Change-Id: Ibd468f6f7b4f8b5c4776655d33f27989bafa9b58
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-04-02 09:34:22 +02:00
Trung Ngo b79a3cd788 IBus: Implement IBus' surrounding text feature
Task-number: QTBUG-37540
Change-Id: I5aacaedff3ada57f6f2c09b0d856340b1a25d1e5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-02 09:34:22 +02:00
Trung Ngo 52b802cc66 IBus: Implement QDBusArgument serialization operators
Task-number: QTBUG-37540
Change-Id: Idbe952dbd9851dde2c4aee0662d845996bf0c36a
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-02 09:34:22 +02:00
Trung Ngo db665477e9 IBus: New version of IBus.InputContext DBus declaration file
Task-number: QTBUG-37540
Change-Id: I9977198b15c0f827b7483f4131c45fe2a86e8ef5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-04-02 09:34:22 +02:00
Iikka Eklund d6f58e5e17 Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2014-04-02 07:36:48 +02:00
Joerg Bornemann 83de197a57 qmake: use the manifest embedding feature of the MSVC linker
Since VS 2012 the linker supports the /MANIFEST:embed option, which can
be used to embed the automatically generated manifest without calling
mt.exe. Using this feature simplifies our generated makefiles, esp. in
the case of incremental linking.

Task-number: QTBUG-37363
Change-Id: I2c2d8d2abf36c1b9e7b41bc15244344aab8f5b6e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-04-01 15:56:37 +02:00
Mitch Curtis 3217582405 Simplify and update QDataStream's versioning documentation.
Now we'll no longer need to maintain two separate tables containing the
same information.

Also, update the version after
4f50be8d18.

Change-Id: I82fe243889cee67e47296cc4498c9a93d5472e81
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-04-01 15:03:16 +02:00
Mitch Curtis de59f74282 Add Qt_DefaultCompiledVersion to the QDataStream::Version enum.
This allows code to, amongst other things, use the latest compiled
QDataStream version in static const variables, where previously the
only alternative was to hard-code the version (and update it with every
Qt version bump) or use QDataStream().version(), which is not allowed
because it increases Qt's startup time.

Change-Id: If1f29fc9cd83c9d7fe619a4ca197152aa9c77a04
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-04-01 12:44:40 +02:00
Iikka Eklund 0ab63b035a Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I2a6eb9dd7724931bc89f28bcc156e77c4e26d069
2014-04-01 11:44:27 +03:00
J-P Nurmi 0cb2c760c2 Item views: respect selection mode when closing an editor
Task-number: QTBUG-31411
Change-Id: I1a52eb739e0bc2afa7227f006461916df8ecaf48
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2014-04-01 05:27:00 +02:00
J-P Nurmi cc08fc7bfd Item views: respect focus policy when closing an editor
Task-number: QTBUG-31411
Change-Id: Ib0a72755c35a553653ea014672d59979a550b7ae
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2014-04-01 05:26:50 +02:00
Marc Mutz a6f8aa0ae1 QStringList: use QList:.swap(int,int) in removeDuplicates instead of assignment
This is faster because it just swaps the pointers stored instead of touching
the refcounts. It's the same as qMove()ing the right-hand-side, but benefits
C++98, too.

Change-Id: I6b7e3d0e5c7eb81f88fe9069d6662335d24aa86c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-03-31 22:54:14 +02:00
Marc Mutz 08b8f9d087 tst_QStringList: add more checks for removeDuplicates
Check whether a detach happened, and also check that non-consecutive duplicates
are properly removed.

Change-Id: Iac7a3d8fe5ed5a69a9a0b55ddbf95308f11122c2
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-03-31 22:54:14 +02:00
Marc Mutz 35ed65b1a9 QStringList: use a functor instead of a function pointer for std::sort
A function pointer requires aggressive optimization to inline. A function object
otoh is inlined by compilers two decades old.

Even shaves off 544B in text size off of a -O3 GCC 4.7 QtCore build.

Change-Id: Ibfd41654257360fa0f118701f502e6c23a6c28b3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-03-31 22:54:14 +02:00
Marc Mutz adf0db5243 QStringList::join: micro-optimization
Don't call that->size() if we have already saved its value in a local temp.

Surprisingly, this saves 56B in text size even on a -O3 GCC build, proving
that the compiler does _not_ have enough context to const-fold the repeated
size() evaluation.

Change-Id: I2c41ddc4376f4e1534fc2f0d4789e42b984d3ba6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-03-31 22:54:14 +02:00
Marc Mutz 47d2d19cf6 QStringList: add op<< overload for QList<QString>
QStringList << QList<QString> already compiled, but was interpreted as
QStringList << QStringList(QList<QString>), which involves the QList
copy ctor. Adding the overload saves that copy.

Cannot use a using declaration here, since the return type is different.

Change-Id: I119cc98e7e2df24549a1abb158543b729edc30ef
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-03-31 22:54:14 +02:00
Marc Mutz 2a9d3b7a46 QStringList: remove copy ctor
The compiler-generated one is just fine, and enables the move constructor
inherited from QList, too.

This is BC and SC since QStringList isn't exported.

Change-Id: Ic49000d9feb66504d7ec7e5d519e7a13ca9e5d9e
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-03-31 22:54:14 +02:00
Marc Mutz c3a2fe6436 QCUPSSupport: Extract Method bannerPageToString() from setBannerPages()
The new function just converts the job-sheets cups option argument,
reducing the number of almost-identical switch statements to one.

Effects on a stripped Linux AMD64 GCC 4.7 -std=c++11 -O2 build:
  text: -1008B
  data:   +-0B
  relocs: +-0

Change-Id: I56843fa963e098e5c8ae203584f34bf5798667e6
Reviewed-by: Martin Klapetek <mklapetek@kde.org>
Reviewed-by: John Layt <jlayt@kde.org>
2014-03-31 22:54:14 +02:00
Marc Mutz c36746a829 QCUPSSupport: Extract Method jobHoldToString() from setJobHold()
The new function just calculates the job-hold-until cups option argument,
reducing the number of setCupsOption() calls down to one.

Effects on a stripped Linux AMD64 GCC 4.7 c++11 release build:
  text:  -552B
  data:   +-0B
  relocs: +-0

Change-Id: I4aa4118c3493cd302dd8fd7f4985c7e0f70ef071
Reviewed-by: Martin Klapetek <mklapetek@kde.org>
Reviewed-by: John Layt <jlayt@kde.org>
2014-03-31 22:54:14 +02:00
Dimitar Asenov 3270b4490b Add a new optimization flag to QGraphicsItem.
The new flag ItemContainsChildrenInShape is similar to the existing
flag ItemClipsChildrenToShape. Setting the new flag makes QGraphicsScene
assume that children are drawn within the shape of the current item
but this is not enforced by clipping. When an application manually
ensures this clipping boundary, setting the new flag removes the
overhead of enforcing the clip with ItemClipsChildrenToShape, while
still allowing other routines to behave more optimially by assuming
children are within the shape of the current item.

[ChangeLog][QtWidgets][QGraphicsItem] Added the
ItemContainsChildrenInShape flag that enables using optimizations
of ItemClipsChildrenToShape without the overhead of enforcing the clip.

Change-Id: I5496fe1ca331b77fd51e0df8a3ace2b8e939eaf2
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
2014-03-31 22:54:14 +02:00
Martin Smith d13d03f012 qdoc: Unexplained empty ref attributes in qhp files
This update fixes a bug introduced by the extensive changes
for QTBUG-35377. Three node subtypes - Group, Module, and
QML module, were promoted to be first line node types in the
update for QTBUG-35377. This broke the file name construction
routine for those node subtypes, which used to have the DocNode
node type. This caused empty ref attributes to appear for those
keyword elements in the qhp file. The file name construction
routine has now been corrected to account for this.

Task-number: QTBUG-37658
Change-Id: I307979255fdfd48493b3a4cebaf996b2130bc2c7
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-03-31 21:05:30 +02:00
Martin Smith 2ea15849a0 qdoc: \l{Qt::Window} links to the wrong page
kThis update fixes a bug introduced by the extensive changes
for QTBUG-35377. The name Qt represents two namespaces, one
in C++ and one in QML. The name "Window" is used in both of
them, so the link \l{Qt::Window} would cause a collision in
the single tree qdoc. In the multiple tree qdoc, there is
no collision, but in this case the link should have gone to
the C++ page and it went to the QML page instead. The fix
involved correcting the way qdoc searches for link targets.

Task-number: QTBUG-37633
Change-Id: Ib9b209eced937a0be0d3299f300ebf22b2776012
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-03-31 21:05:23 +02:00
Martin Smith 900c150a07 qdoc: fix inheritance information for some QML types
This update fixes a bug introduced by the extensive changes
for QTBUG-35377. For a QML base type loaded from an index file,
its QML base type was not being resolved. This resulted in the
"All members" page for some QML types to be incomplete because
the pointer to the base type was 0 when it should have been set.
This change also introduces the concept of "just in time"
resolution for base type pointers, which appears to speed up
qdoc a little.

Task-number: QTBUG-37326
Change-Id: I5f09336ec70ba84029b44b245c56f7f8fe349757
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-03-31 21:05:16 +02:00
Martin Smith c55d437d29 doc: Remove "current child" code
The current child concept was added to the Name
Collision Node to heuristically provide better
linking when a link operation reached a collision
node. It is doubtful that this improved linking
much, but now that qdoc uses multiple trees, it
is much less likely that collision nodes will
occur. In fact, there are none in in the current
Qt5. Therefore, the current child code is hereby
removed from qdoc.

Task-number: QTBUG-37067
Change-Id: I33aea5d550afb7ceaf941d49112e02c21d44f6dc
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-03-31 21:05:07 +02:00
Martin Smith a9d75c8eb8 qdoc: Teach qdoc to use multiple trees (part 3)
With this update, qdoc is now ready for testing
with multiple trees. In making this change to using
multiple trees, it has become clear that qdoc does
not really need trees the way it currently uses them.
Each C++ class or namespace, or QML type is naturally
a tree tree structure, but above that level, what we
currently call a tree in qdoc should really be called
a collection of maps. This change has moved qdoc in
that direction. It remains to replace the Tree class
with a class that encapsulates a set of maps, one for
each major node type. That can be implemented later.

Task-number: QTBUG-35377
Change-Id: I39068a0cb26c01f14ec0e4621742d727efb913bf
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-03-31 21:05:00 +02:00