aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Settings: document how to have several categoriesMitch Curtis2017-09-071-0/+9
| | | | | Change-Id: I0f27a162936015e2aeb9d52079a65b218498b50a Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* Fix crashes in QML apps when upgrading Qt snapshotsSimon Hausmann2017-09-072-10/+19
| | | | | | | | | | | When upgrading from one Qt snapshot to another, we may not end up bumping the Qt version. However we do need to re-generate QML cache files. Therefore let's encode the commit hash of declarative in the checksums. Task-number: QTBUG-62302 Change-Id: Ia597fcbe05ea2d32664da2572a1b35c624490095 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QQmlPropertyValidator::validateObject(): remove unused codeJ-P Nurmi2017-09-071-10/+0
| | | | | | | This code was moved to QQmlDeferredBindingScanner in f27d058. Change-Id: I8cf261c497ec433a14e00e17b67a284b45cf8d75 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* add qt.quick.canvas logging category, show size change due to DPRShawn Rutledge2017-09-071-0/+11
| | | | | | | | | Mostly as a way of verifying the fix for QTBUG-37095, so far. But of course other log messages can be added to this category later. Task-number: QTBUG-37095 Change-Id: I57930e9376529b6eacca1b554d31382d41582fda Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Canvas: Repaint on devicePixelRatio ChangeMorten Johan Sørvig2017-09-072-11/+15
| | | | | | | | | | | | | Handle moving between high- and normal-DPI displays. The texture gets a setCanvasWindow() call on screen change. Read window->effectiveDevicePixelRatio() here and set m_canvasWindowChanged on change to trigger a repaint if there was a change. Task-number: QTBUG-37095 Change-Id: I96ff07bd7334269cad219eb0a9056c62e850aac7 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QQuickDragAttached: make hotSpot work with imageSourceOleg Yadrov2017-09-061-0/+1
| | | | | | | | | | | | This amends patch 4b982c744f538a24e21a2af146c45f93d27dd1cb. Previously, setting hotSpot had no effect on the image position because QDrag object used for the drag is created in startDrag(), and the hotspot was never updated before drag->exec(...). Task-number: QTBUG-61980 Change-Id: I9c11c456d3b32b5986cf287b2610437e3825d9d9 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Disable deferring when referenced as a grouped propertyJ-P Nurmi2017-09-061-1/+1
| | | | | | | | | This allows us to fix QTBUG-50992 - the issue with most votes in QQC2. Task-number: QTBUG-63036 Change-Id: I996cd1128582b80e0c8480ae143d682c1e8eb8fe Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Fix crashes with closures created in QML componentsLars Knoll2017-09-0613-106/+210
| | | | | | | | | | | | | | | When closures created inside QML components are called after the surrounding component (and consequently QML context) has been destroyed, we are in a somewhat limited environment. Initially we would just crash as the calling QML context is not valid anymore. We can alleviate that by introducing reference counting on the context and letting the QML context wrapper keep a strong reference. This avoids the crashes and also ensures that at least imports continue to be accessible within these contexts (as the singleton test case demonstrates). Task-number: QTBUG-61781 Change-Id: I893f171842d01b0863d95a02ea738adc2620e236 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Qml Tooling: Replace bare pointers with QScopedPointerUlf Hermann2017-09-064-27/+18
| | | | | | | This way we don't have to manually initialize and delete them. Change-Id: I0104c744dba380e957271d0924498e3643856e9e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix QtQml crashing with GHS compiler when using AOTSimon Hausmann2017-09-051-13/+30
| | | | | | | | | | | | In order to support compilers that do not support the packing attribute, replace the use of the pack macros with static assertions about the structure size, to ensure that what is generated by host tools (qmlcachegen, qqc) is compatible with what's loaded by the target at run-time. This requires padding and re-ordering some structures. Task-number: QTBUG-61468 Change-Id: I3d82457f086a9b066d1c6df4c46d9f154dd5f208 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Change mirror vertical for software QSGLayers to trueAllan Sandfeld Jensen2017-09-051-1/+1
| | | | | | | | | | This is the default for OpenGL and D3D12 QSGLayer implementations, and means that code using QSGLayer can end up rendering upside down if switched the software backend. Task-number: QTBUG-62929 Change-Id: Ib34b10c4eb834d2ef52e9005866242886b3addeb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QmlProfiler: Avoid race conditions in QQmlTypeLoaderUlf Hermann2017-09-055-16/+54
| | | | | | | | | | | | | We have to make sure all profiler calls to one adapter are done from the same thread. It turns out that all the calls from QQmlTypeLoader are done from the type loader thread. By using a separate adapter for that, we avoid any extra locking. Task-number: QTBUG-62987 Change-Id: I5cffcc30b84dd4154daa0c56312a1141ce2033e1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Make releaseResources() free the renderer's shader cacheLaszlo Agocs2017-09-047-3/+36
| | | | | | | | | | | | | | Normally all shader programs from materials are cached in a simple table that is alive as long as the renderer exists, in practice this means being tied to the QQuickWindow which is often the entire lifetime of an application. Use releaseResources(), which is mostly a no-op on the scenegraph level at the moment, to free this cache. Task-number: QTBUG-62392 Change-Id: I279e595874fee1ab4fe0dede0843a3686dea5806 Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
* QQuickListView: ensure we re-layout when a delegate is placed at the last ↵Richard Moe Gustavsen2017-08-301-6/+4
| | | | | | | | | | | | | | | | | | | | | | visible pos The current implementation would only return true if the added delegate was positioned below the last visible pixel. This caused a problem when the position ended up at exactly the last visible position, since then we would return false, meaning that a re-layout would not be done. Since we use the same calculations several places, this patch will factor it out into lastVisiblePos, and also fix up the places where we test on it. Especially this includes making sure that we set visibleAffected to true if we actually enter the for-loop that adds the item to visibleItems. To make the code more readable (and to ensure that we are consistent), we set it to true inside the for-loop. Task-number: QTBUG-61537 Change-Id: Ie697b5b6d9f4236ee856bde75fd9bc0a07dda7ea Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* Doc: Minor fixes to Loader QML type documentationTopi Reinio2017-08-293-7/+10
| | | | | | | | | | - Convert section titles to bookcase - Minimize line length for code snippets that are embedded in tables to prevent overflow. Change-Id: I316fc0fc4c3663397110d1ad1b8b83abce4af02e Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Doc: Fix capitalization in section titlesTopi Reinio2017-08-2922-54/+54
| | | | | | | | ...and fix some section titles to be less confusing. Change-Id: If83c3faffead9e2e9be7fc0fb360f1c5b8b1bb51 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
* Don't copy the bytecode data from the cached compilation unitLars Knoll2017-08-291-6/+0
| | | | | | | | There hasn't been a need to copy the data since some time, as we are not patching the bytecode anymore. Change-Id: I2303d5a2fceb611933905311aaedb041a78c42ac Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Doc: add missing word to Item::enabledMitch Curtis2017-08-281-1/+1
| | | | | Change-Id: I4f30dcc92ebd20a66fb18615f8cc82675380c450 Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
* Update doc to clarify the slot parameter for connectNotifySignalAndy Shaw2017-08-251-0/+3
| | | | | Change-Id: I89da2d258d6e5663d45497bd4b7fa105a11e46e7 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Fix crash in mouseGrabberItemSune Vuorela2017-08-231-2/+1
| | | | | | | | | | Under certain circumstances, point can be null. All users of mouseGrabberItem does check for nullpointers, so it should be safe. Task-number: QTBUG-62055 Change-Id: I1d53b7980efa4fe149714a65f35d05fa306efb06 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix compiler errors with clang 4.0Lars Knoll2017-08-231-12/+12
| | | | | Change-Id: I5bd236f0a38a8a83eddef7d2239b17ae7be2239a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix memory corruption with type trimmingSimon Hausmann2017-08-234-12/+14
| | | | | | | | | | | | | | | | | | When creating a composite type, we register the meta-type in the qml loader thread. However we would require linking of the compilation unit to the QML/engine thread before we would be able to also undo that registration in unlink(), because we require the engine member to be set. If that did not happen, i.e. a qml type was loaded and trimmed from the cache before it was ever linked, we would end up with a dangling pointer in m_compositeTypes. Let's handle the case of CompilationUnit referring to a QML composite type separately from it being a compilation unit resulting from a .js file or in a plain QJSEngine environment. Task-number: QTBUG-62630 Change-Id: Ia68cc46f05345702bd9ba0378f61118f1964d141 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Small cleanupLars Knoll2017-08-231-2/+1
| | | | | Change-Id: Ifb111ceab64244965569f59eda8d9604131d209d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix valgrind warning about uninitialized variableLars Knoll2017-08-231-0/+1
| | | | | Change-Id: I1f39c488f5a7b7f1a10fa94461c308f0cde5fcd5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Cleanup obsolete TODO in source codeLars Knoll2017-08-231-3/+0
| | | | | Change-Id: I0c4f5d908215b9b6fac0fadb352f7c36849dce6f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Clean up void * usageLars Knoll2017-08-235-13/+16
| | | | | | | | Don't use void * in our internals, when we can simply pass a typed pointer. Change-Id: Id02033c7e66df7e041c079d3546f9dd6027ef8d5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix finding test data on AndroidEskil Abrahamsen Blomfeldt2017-08-221-0/+5
| | | | | | | | | | | | | The standard way of doing Qt Quick testing requires having qml files available in the deployment somewhere in the regular file system. This is not how Android works, where all test data should be deployed as resources. To allow this, we simply hardcode the test path as a resource path on Android instead of checking on the disk. Task-number: QTBUG-45576 Change-Id: I0729f5004a6206d2a10b782eb5b7d83a833c4f51 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* Fix memory leaks with threaded rendererJoni Poikelin2017-08-223-5/+5
| | | | | | | | | | Reverts 39061af50cc3092289cdd71d17802139590ecb59 and calls endSync() instead after syncSceneGraph(). Task-number: QTBUG-61754 Change-Id: I7b51ffdc93557bacd93927dd642ec3715980b21c Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Roger Zanoni <rogerzanoni@gmail.com>
* Don't crash when trying to bind an invalid property indexUlf Hermann2017-08-171-1/+1
| | | | | | | | findAliasTarget() in binding() can result in an invalid index. We do check for valueTypeIndex below, so we should also check for coreIndex. Change-Id: I8cfed237666f8c1f8733592d3abd9be5ccee3229 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix crash in QQuickAnimatedImageAleksei Ilin2017-08-151-1/+1
| | | | | | | | | | | Check d->_movie pointer before dereferencing Task-number: QTBUG-62380 Change-Id: I62314c7c0d4a7e41fa6f8c4629d16f30d6036156 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry-picked from fc3ecd2522deb3f6d8d48b66dbd89402e1ab4b53)
* QQuickTextInput: Allow going from an Acceptable to an Intermediate stateAndy Shaw2017-08-151-0/+5
| | | | | | | | | | | When editing text with a validator set then it can happen that it would no longer be in the acceptable state. This ensures that it does not prevent editing the text when an input mask is used to go back to an Intermediate state. Change-Id: I6da533d18035e9da468939c28a961bc8f2f3090b Reviewed-by: Robin Burchell <robin.burchell@crimson.no> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix ListView::StrictlyEnforceRange with resizing delegateMichael Brasser2017-08-093-1/+14
| | | | | | | | | | | When fixupPosition is called for a ListView with StrictlyEnforceRange, the original reason for the move is lost, and the fixup is applied immediately. There are already checks for whether the view is moving, so expand these checks to include movement caused by highlight. Change-Id: I25f771b9a529d31dc28acb9f91fcd2b582428200 Task-number: QTBUG-33568 Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* Improve releasing of memory allocated from compilation unit stringsSimon Hausmann2017-08-043-8/+9
| | | | | | | | | | | | | | | Allocate the strings in the compilation unit as regular strings, not as identifiers. We mark the runtimeStrings in the compilation unit, so when the unit is released as part of component cache trimming, those strings can also be collected. The JS object literal class keys have to remain identifiers though. However this is just a stop-gap as the real problem is that the identifier table can be triggered to grow without bounds. Task-number: QTBUG-61536 Change-Id: I7a2854b7fa9c9953348b5e34a31833f7be67cfbf Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Doc: Mention license in Qt Quick documentationKai Koehne2017-08-031-0/+8
| | | | | Change-Id: Ib7cb0781799191636a13aba9d357313a860876e9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Avoid meta-object creation when looking up QML properties in the property cacheSimon Hausmann2017-08-021-4/+8
| | | | | | | | | | | | | | When looking up QML properties in the property cache, we also need to verify that they should be visible in the QML context they are requested from, i.e. if the revision of the object in that context has the property visible or not. That requires retrieving the VME meta-object for QML declared properties. We can retrieve that directly from the QObjectPrivate instead of going through the potential meta-object builder creation path. Task-number: QTBUG-61536 Change-Id: I695921d625169de5c58941087464beb5367fb2db Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Reduce memory consumption of stat() cache in QML type loaderSimon Hausmann2017-08-022-24/+20
| | | | | | | | | | | The m_importDirCache caches the result of QDir/File::exists across paths. By changing the data structure to a QCache we impose a limit on the size of the entries and thus the memory consumption for long running programs that access many qml files. Task-number: QTBUG-61536 Change-Id: I20c4dc77260fe353c13da570b7e1bbd3f47d4b79 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix void * usage in our internal APIsLars Knoll2017-08-027-63/+60
| | | | | | Task-number: QTBUG-61536 Change-Id: Ia2b5cfeab093d8be91728032528788dd238c2872 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Move the m_qmlLists member in the QML engine to QQmlMetaTypeLars Knoll2017-08-025-47/+67
| | | | | | | | | | This is a pure metatype id to metatype id mapping, nothing in there is specific to a QML engine instance. Thus move the mapping to QQmlMetaType and make it global for all engines. Task-number: QTBUG-61536 Change-Id: I3792567bc9f585e3e0fbbad94efd1ec3a0db3de0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Remove unused types on engine destructionSimon Hausmann2017-08-026-99/+202
| | | | | | | | | | | | | The QML engine destructor as well as trimComponentCache() do now clean out unused composite types that the engine registered internally. This helps avoid 'static' leaks, when more and more types would get registered by the engine. Task-number: QTBUG-61536 Change-Id: I5b32af4b88fbf626de8c0bfbaedb2285b09e3679 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove unused variableSimon Hausmann2017-08-021-1/+0
| | | | | | | | QQmlTypeModulePrivate::types is not used (anymore?). Task-number: QTBUG-61536 Change-Id: Ia7af542e6969c167d1f05a460e0926398f56f380 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Change data structures in QQmlMetaTypeDataLars Knoll2017-08-024-137/+118
| | | | | | | | | | | | | | | | | Make sure any QQmlType stored in the meta type data has a refcount of 1. This should now make it possible to clean out unused types by iterating over the list of types and removing those that have a refcount of 1. Some care is still needed for C++ registered types, that will need to get one more refcount, so we don't accidentally remove them. Task-number: QTBUG-61536 Change-Id: Id2a18dae5ddcb815f34013f5fde1f05d2d9d0214 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Remove QQmlEnginePrivate::typePropertyCacheSimon Hausmann2017-08-025-112/+146
| | | | | | | | | Instead of maintaining a hash per QQmlType and minor version, move the version specific property caches into QQmlType. Task-number: QTBUG-61536 Change-Id: I72f3990cb93e64ac5074060b4ff327043eab7966 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Move property cache from the engine to QQmlTypeSimon Hausmann2017-08-025-32/+38
| | | | | | | | | | | | | Now that the property cache is independent of a specific engine, we can cache them in QQmlType instead of caching them per engine. This simplifies the logic and avoids duplicated property caches when multiple engines are running. Task-number: QTBUG-61536 Change-Id: I6f082e1e7495ae0f5b92559e8d0a3437c56e303a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Move the engine pointer from the property cache to the VME meta objectLars Knoll2017-08-0212-100/+70
| | | | | | | | | This is where it belongs, and it makes the PropertyCache independent of the engine used. Task-number: QTBUG-61536 Change-Id: I21c2674ee3e2895abd2418764d140b154b47b868 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Use QQmlType by valueLars Knoll2017-08-0228-343/+356
| | | | | | | | | | | QQmlType is now refcounted, and we need to use it by value, to control it's lifetime properly. This is required, so we can clean up the QQmlMetaTypeData cache on engine destruction and with trimComponentCache() Task-number: QTBUG-61536 Change-Id: If86391c86ea20a646ded7c9925d8f743f628fb91 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Simplify logicLars Knoll2017-08-021-3/+1
| | | | | | Task-number: QTBUG-61536 Change-Id: Ibdb10dfb8d9fbd15fddc27a2802b756381755ee7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Use QQmlType by value in the type wrapperLars Knoll2017-08-026-36/+65
| | | | | | Task-number: QTBUG-61536 Change-Id: Ie40cb3a6e170331b0ec7ab5deaf7c1d7ef0cdaeb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Use QQmlType by value in the MemberExpressionResolverLars Knoll2017-08-022-11/+17
| | | | | | Task-number: QTBUG-61536 Change-Id: Ia9a43890937399f3a109d93227e5d44420974737 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Turn QQmlType into a refcounted value typeLars Knoll2017-08-022-67/+142
| | | | | | Task-number: QTBUG-61536 Change-Id: If906af2bf3afd09c23a612aaac417a751b06eba4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Add QDebugStateSaver to operator<<(QDebug, const QSGRootNode)Jesus Fernandez2017-07-271-0/+1
| | | | | | | | | CID 54558 (#1 of 1): Not restoring ostream format (STREAM_FORMAT_STATE) 4. end_of_path: Changing format state of stream d for category basefield without later restoring it. Coverity-Id: 54558 Change-Id: Iad6e6103684c57d3ab98e78e7c91e23731632913 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>