summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Add qHash(QLocale)Marc Mutz2015-06-302-0/+21
| | | | | | | | | | | QLocales can be compared for equality, so qHash should be overloaded, too. [ChangeLog][QtCore][QLocale] Added qHash(QLocale). Change-Id: Ia0fdf1207b842b9bb20b8f9ab0165016915debf4 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QModelIndex: Fix a nullptr literal 0 that would look odd as nullptrMarc Mutz2015-06-301-1/+1
| | | | | | | | By dropping it. Found while looking into Task-number: QTBUG-45291 Change-Id: Ie7655d607244aa67219ade465525ec771c87ccf5 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QtGui: make all Q_DECLARE_SHARED types nothrow move-assignableMarc Mutz2015-06-3010-34/+50
| | | | | | | | | | | | | | Excepting QBitmap and the QTextFormat heirarchy, which don't have 100% value semantics (still pondering them). In QPolygon(F), adding the move assignment operator disables the implicitly-defined copy assignment operator, which therefore have to be made user-defined. That doesn't change the ABI of the class, since the base class QVector already had a user-defined copy assignment operator. Change-Id: I0b111c1d21cf47f559ada6357c982e3dc26aca68 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QtNetwork: make all Q_DECLARE_SHARED types nothrow move-assignableMarc Mutz2015-06-3016-42/+99
| | | | | Change-Id: Ib29ec4b73a4cdc51074997f7d167c289cf5af7a4 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QtDBus: make all Q_DECLARE_SHARED types nothrow move-assignableMarc Mutz2015-06-302-7/+8
| | | | | Change-Id: I5b04fb44b632a0bbb290199fc092b3ffd8289650 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QtCore: make all Q_DECLARE_SHARED types nothrow move-assignableMarc Mutz2015-06-309-27/+23
| | | | | | | Excepting QDebug, which doesn't have value semantics. Change-Id: I43757ef7bba4c1f5b6de9144f12b38ce840cd9f9 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Use QVector::reserve() all over the place.Sérgio Martins2015-06-2918-9/+41
| | | | | | | | | | | | Reduces internal memory fragmentation. The search criteria was: QVector::append(), QVector::push_back(), QVector::operator<<() and QVector::operator+=() calls inside for, do and while loops. Statements inside ifs and out of loops weren't considered. Change-Id: Ie5aaf3cdfac938994e6e5dfa5f51de501ed79a0c Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Do not use 16 bits per color on GLESLaszlo Agocs2015-06-294-17/+75
| | | | | | | unless GL_EXT_texture_norm16 (and so GL_RGBA16) is present. Change-Id: Ic15b81b8134fda147e96301b7f78cabe07a05d9e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* iOS: Use LC_MAIN to wrap user main() instead of mangling object filesTor Arne Vestbø2015-06-291-14/+3
| | | | | | | | | | | | | | | | With iOS 6.0 and above the LC_MAIN load command is available, which allows dyld to call the application entrypoint directly instead of going through _start in crt.o. By passing -e to the linker we can change this entrypoint to our wrapper that sets up the separate stack before entering the native iOS runloop through UIApplicationMain. As before, we call the user's main() from applicationDidFinishLaunching. By using LC_MAIN instead of messing with the object files we open up the possibility of generating Bitcode instead of object code, which can be useful for link-time optimizations, either locally or by Apple. Change-Id: If2153bc919581cd93dfa10fb6ff1c305b3e39a52 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
* QRasterPaintEngine: Don't detach QImageSérgio Martins2015-06-291-3/+3
| | | | | | | | | | Caught being detached a few thousand times per second. Change-Id: I9f3c80cc5178ec2016041a4f2f6e6e1f458171f1 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Fix inefficient container.values().first()Sérgio Martins2015-06-282-2/+2
| | | | | | | | Saves 1 full iteration and 1 memory allocation. Change-Id: I7e521054bd573f30dea2ec166d566ab6ac60eb4e Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QGraphicsItemAnimationPrivate: replace a sort with a rotateMarc Mutz2015-06-281-5/+3
| | | | | | | | | | | | | | | There's really no need to sort the whole collection if you a) know it's already sorted and b) already know its final position, because you looked it up using lower_bound a line up. Instead of appending and sorting the whole thing, simply append and rotate into place, conveniently packaged as positional insert. Also reverse the check for presence: less negations: more readable. Change-Id: Id23f108b64976061f666f517fbc436d3c72dd25b Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Make QGraphicsItemAnimationPrivate::Pair a (C++98) PODMarc Mutz2015-06-281-2/+1
| | | | | | | | There's no value in the ctor and it might be inhibiting some C++98 POD-only compiler optimizations. Change-Id: I6887afcd2af9805251eac2d8dfe4ced5b54bff85 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QGraphicsItemAnimation: don't hold Private::Pair in QListMarc Mutz2015-06-281-15/+16
| | | | | | | | | | | | | | QGraphicsItemAnimationPrivate::Pair, being a (qreal,qreal) is larger than a void*, so holding them in a QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Fix by marking Pair as primitive and holding it in QVector instead. Change-Id: I190721f4b0cdeab2efab2d51536f64572cd663df Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QWeakPointer: remove misleading Q_DECL_CONSTEXPRMarc Mutz2015-06-281-1/+1
| | | | | | | | | | Adding constexpr there is allowed, because QWeakPointer is a class template. But in 100% of cases, it will be dropped, because the destructor is not trivial. So, don't mislead users and devs to think that any or even all QWeakPointers could ever be constexpr. Change-Id: Ia50aad4d6c4fb724254308150124c666e82ef817 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QDataWidgetMapper: use QList::reverse_iteratorMarc Mutz2015-06-281-1/+1
| | | | | | | ... now that it's available. Change-Id: I85f547b294688c97288aaeab2af213c59e856a2b Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QCommandLineOption: Q_DECL_NOTHROW -> Q_DECL_NOEXCEPTMarc Mutz2015-06-281-1/+1
| | | | | | | | | | In IsInvalidName::operator(), marked as _NOTHROW, we're calling qWarning(), which, of course, _can_ throw. We don't care in that case, but then we musn't use _NOTHROW, which causes UB on MSVC, but _NOEXCEPT, which causes std::terminate to be called. Change-Id: I18f74546ea3b388495fdb173d3abd9a162fb78a9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSqlIndex: replace QList<bool> with QVector<bool>Marc Mutz2015-06-282-1/+7
| | | | | | | | | | | | | | | | | QList<bool> uses from 400% (32-bit platforms) to 800% (64-bit) more per-element memory than QVector<bool>. This change is binary compatible, since QList and QVector have the same size, and the QList field was not referenced from inline functions. This includes all relevant special member functions, since they are all out-of-line (and move assignment and move constructor are disabled by used-defined copy assignment and copy constructors, resp.). The header is unchanged from Qt 5.0, so there were also no past inline users of the member. Change-Id: I3a94ddc73a4f388031dfd4fce3fedccc507a39c7 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* Also add support for linked OpenSSL without SSL v2 & v3 supportDaniel Molkentin2015-06-282-0/+20
| | | | | | | | So far, this was only supported for dlopen mode. This adds symmetric defines for the linking case. Change-Id: I9cbfa18e04d041dde0cbd833929782cada9eb812 Reviewed-by: Richard J. Moore <rich@kde.org>
* QSharedPointer: destroy LHS on move assignmentMarc Mutz2015-06-271-1/+2
| | | | | | | | | | | | | | | | | Howard Hinnant is right: just swapping may keep a resource alive too long. The problem with replacing swap(other) was that the naïve approach: clear(); swap(other); is not safe for self-assignment. Taking a cue from the default std::swap() implementation, and the copy-swap idiom, a self-assignment-safe version is QSharedPointer moved(std::move(other)); swap(moved); which is to what I changed the implementation now. Change-Id: I589fdae50ae22b95350db8250b02d983dc8487a6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* network: Use QList::reserve(), reduces reallocations.Sérgio Martins2015-06-274-3/+11
| | | | | | Change-Id: Ie0e8cbd28802826206d7e92584b5d56bb844fb09 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Use QList::reserve(), reduces reallocationsSérgio Martins2015-06-2712-12/+38
| | | | | Change-Id: I9f218bdd65a97ad9c867b695f3ba27ab64a54d2a Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QList: Introduce constFirst() and constEnd()Sérgio Martins2015-06-272-2/+24
| | | | | | | | | | Allows to easily prevent detaching in common code like: getList().first() [ChangeLog][QtCore][QList] Added the convenience constFirst and constLast functions. Task-number: QTBUG-46026 Change-Id: I51ecb51fe91fc7d993ad35b5c7392f4da88e5f7b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add support for driver_description and os.release in GPU blacklistsLaszlo Agocs2015-06-263-34/+98
| | | | | | | | | | | | | | | | | | | | os.version is the kernel version which is just not very useful or easy to use for us. Instead, introduce a string that allows easy differentiation between Windows 7 and 8. From the adapter identifier the driver description is often helpful too, especially in virtual machines. These allow writing rules like: { "description": "Use WARP in some Win 8 and 8.1 VMs", "os": { "type": "win", "release": [ "8", "8.1" ] }, "driver_description": "VMware SVGA 3D", "features": [ "disable_desktopgl", "disable_d3d9", "disable_d3d11" ] } Change-Id: I196f6b44d7bb9e42ef47f61f4c28d8aa79afb7c4 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* QSortFilterProxyModel: Keep invalid index updated on source model sortDaiwei Li2015-06-251-0/+21
| | | | | | | | | | | If we have a filter applied that removes all entries, the source model is sorted, and then we remove the filter, QSortFilterProxyModel never emits rowsInserted. This is because it doesn't have the correct source mapping and doesn't update when the filter is removed. Change-Id: I447b2d150e509b128d27f4dabc4e081ca4ef037f Task-number: QTBUG-46282 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Micro-optimize QKeySequence datastream operator (I)Marc Mutz2015-06-241-8/+7
| | | | | | | | | Instead of creating a QList with the keys with one of two statically known sizes, stream the contents itself. Apart from QDataStream, this no longer allocates any memory. Change-Id: I5ed814b186dcaf8cc7dedcc520928aefab01f009 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QStateMachine: remove unused qHash(QPointer<T>)Marc Mutz2015-06-241-4/+0
| | | | | Change-Id: Idae3621d1a3cb961e2d46fd58208829651382c11 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QMdiArea: don't hold QPointers in QListMarc Mutz2015-06-241-2/+2
| | | | | | | | | | | QPointer is larger than a void*, so holding them in a QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Change-Id: I3cdd4914658b6fe025ad379007502b4223e126cd Reviewed-by: Sérgio Martins <sergio.martins@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QPicture: don't hold images in QListMarc Mutz2015-06-241-1/+1
| | | | | | | | | | | QImage is larger than a void*, so holding them in a QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Change-Id: I153995d691692f7317cab31b95a00d679f31c0af Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* QPicture: don't hold pixmaps in QListMarc Mutz2015-06-241-1/+2
| | | | | | | | | | | QPixmap is larger than a void*, so holding them in a QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Change-Id: I82bb9a88e7030e566f39421cd78babcf01bce285 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QZip*: mark various types movable and primitiveMarc Mutz2015-06-242-0/+10
| | | | | | | | ... even if they are not (currently) held in Qt containers (though FileInfo is). Change-Id: Id14d4af89fed8bcefdbb9b28d11c1c43fccf7190 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QtGui: don't hold QPainterPath in QListMarc Mutz2015-06-242-4/+4
| | | | | | | | | | QPainterPath isn't marked movable , so holding them in a QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Change-Id: Id4dae8037401c52fd57a2274e45399a9b70beb69 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QAbstractTransition: don't hold QPointers in QListMarc Mutz2015-06-243-3/+4
| | | | | | | | | | QPointer is larger than a void*, so holding them in a QList is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Change-Id: I52e83a26eda06fb9826e9c4773a7a0b84b0f59c7 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QMacStyle: replace a QSet<QPointer> with QVector<QPointer>Marc Mutz2015-06-242-10/+5
| | | | | | | | | | | | | | Holding a mutable item in a QSet violates QSet invariants, namely that in bucket N, all items have hash % size == N. If a value gets reset to nullptr by external means, that invariant no longer holds. The code works by pure luck. Replace the set with a vector, which doesn't care whether elements change under the hood, and will also outperform the typical QSet use due to better locality of reference. Change-Id: Ied7940e82525fd0da9f74dfb0bc36a320b45d172 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* widgets: Use QList::reserve(), reduces reallocations.Sérgio Martins2015-06-2317-41/+117
| | | | | Change-Id: I49cc03f365c77f142f62c8e77505ec09723a44d9 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* dbus: Use QList::reserve(), reduces reallocations.Sérgio Martins2015-06-233-2/+10
| | | | | | Change-Id: I5d60220c4d3014067a45a3d3553f0523c9fc7c74 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert "Handle context loss in window surface creation too"Laszlo Agocs2015-06-231-2/+1
| | | | | | | | | | This reverts commit e4f5278a4f308297bdcf12c04c8b4600a1294ef7. Revert this for now until we figure out what exactly is needed for the Windows 7 CI virtual machines. Change-Id: Ibd5578eac1d172785fac5e94c4c5c7508f8ddb79 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Revert "windows: Disable D3D9/11 with ANGLE in VMs"Laszlo Agocs2015-06-234-26/+4
| | | | | | | | | | | | This reverts commit a6000e2b6679d91c9dab44e49b485de6816372bc. Temporarily remove this to unblock the qtdeclarative dev CI. While Windows 8 VMs are fixed by this patch, Windows 7 has different problems. Change-Id: I45ef064ed953cc4b7bbf19657300d4fc43d82452 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* QTextureGlyphCache: add some qMove()Marc Mutz2015-06-221-2/+2
| | | | | | Change-Id: I1965f4de0f1bf9efdb15d07142f882897e163cc5 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Force Visual C++ math.h to define the M_ constantsThiago Macieira2015-06-221-0/+10
| | | | | | | | | | | | | | | That header defines those constants outside of the math.h include guard, so if someone #define'd _USE_MATH_DEFINES and #include'd math.h later, they would get VC++ warnings about constants like M_PI being redefined with different values (ours have parentheses, VS2010's math.h don't). Instead, let's define _USE_MATH_DEFINES ourselves so we get the M_* macros from math.h. That way, we won't redefine them outselves. Task-number: QTBUG-45935 Change-Id: Idf715b895bac4d56b4afffff13db2c98ba8345c2 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Replace #ifdefs with qmake feature checks.Ulf Hermann2015-06-2234-110/+14
| | | | | | | | This prevents the building of dysfunctional plugins that don't define a loader function, or won't compile at all. Change-Id: Ib62edb8db4a8917effa05292cb702bb4022f552c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Don't try to resolve symbols for xcb if QT_NO_LIBRARY is setUlf Hermann2015-06-223-6/+8
| | | | | Change-Id: I4bd5d8534abd9a585a4a641d01931de687eeae77 Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* Define openssl symbol resolution warning function only if necessaryUlf Hermann2015-06-221-0/+3
| | | | | | | | Without library support we don't try to load any symbols and the function is unused. This results in a compiler warning. Change-Id: I82ad46a478debe48cf9a8311f5e5ec299baa1af8 Reviewed-by: Richard J. Moore <rich@kde.org>
* gui: Add several QList::reserve() calls.Sérgio Martins2015-06-2217-16/+40
| | | | | | | Reduces reallocations. Change-Id: I0db16726f413a67b76a73fabd013f910ab5f5109 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QMap: use constrained templates instead of static-ifsMarc Mutz2015-06-221-29/+25
| | | | | | | | | Avoids warnings about constant expressions in ifs. Task-number: QTBUG-46649 Change-Id: I56adf8e80091330d2e97327df7751e57411fbd70 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* doc: Fix qdoc errors in qstring.cppMartin Smith2015-06-221-3/+3
| | | | | | | | Fixed a few qdoc errors. Change-Id: I9ede1c1d3b22e9613978e31722c8140ae966194e Task-number: QTBUG-46796 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
* doc: Add missing comment delimiterMartin Smith2015-06-221-0/+1
| | | | | | | | | This prevents qdoc from getting lost and reporting extraneous errors. Change-Id: I8edf11dec67c39d7aa314fe6748acf6df4e646c8 Task-number: QTBUG-46794 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
* Export gamma setting and metadata in QImageReaderAllan Sandfeld Jensen2015-06-223-9/+49
| | | | | | | | | | | | The PNG image plugin has the capability of applying gamma correction to read PNGs, but doesn't do so by default, and we export no way of accessing this through the qimagereader API. This patch adds the ability to read the PNG file gamma, and overriding decoded gamma to get gamma correction. Change-Id: Iaf9eaac0827516db6bc02247c58026270cd1f610 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Core: Fix QProcess::errorString() outputKai Koehne2015-06-221-0/+1
| | | | | | | | Fix regression introduced in commit 5147f73ac301d. Change-Id: I336e13d5127c5e6e2f9e7afdfa7956fc89533766 Reviewed-by: Marcel Krems <m.krems@software-vision.eu> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Handle context loss in window surface creation tooLaszlo Agocs2015-06-221-1/+2
| | | | | | | | | | While this is not what the EGL spec says, we can get EGL_CONTEXT_LOST in eglCreateWindowSurface too with ANGLE. Handle it the same way like we do for eglMakeCurrent and eglSwapBuffers (no warning, just return the error code silently since we may recover from this). Change-Id: I6b6c57ffd4fca23e1a14a90ef7b18b33f4c96fd2 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>