aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlengine.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* QmlEngine: Use separate mutex for network access managerKai Koehne2014-10-231-2/+2
| | | | | | | | | | | | | Creating the network access manager can involve blocking calls to DBus, which apparently can take quite long in pathological cases. Using the same mutex in this case like for instance registering objects can therefore result in a freezing UI. Mitigate this by introducing a separate mutex. Task-number: QTBUG-41183 Change-Id: I55bd8453d8e4bbc0bda1591eb3fd48b50ca921c1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix a PIDLIST_ABSOLUTE leak in QQmlEngine on WindowsJocelyn Turcotte2014-10-221-1/+5
| | | | | | | | | | | | | | The documentation of SHParseDisplayName doesn't mention that you need to free the ppidl parameter, but the documentation of the ITEMIDLIST does mention that you need to ILFree any ITEMIDLIST passed as PIDLIST_ABSOLUTE. Reproduced the leak by repeatedly showing and closing the window on the task's example. Task-number: QTBUG-41588 Change-Id: I91d08728fc907c59e56ae344a2d12f0865031120 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Cleaned up the documentation for QQmlEngine::ObjectOwnership.Kavindra Palaraja2014-09-161-34/+30
| | | | | | | The paragraphs needed a bit of polish. Change-Id: I5c6b41fad34f3f58a372aa1bf8be627769871cf8 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fixed documentation for QQmlEngine::ObjectOwnership.Kavindra Palaraja2014-09-161-1/+1
| | | | | | | | | The ObjectOwnership enum's documentation mentioned that QObjects returned from property access are indestructible, which they aren't. Task-number: QTBUG-35426 Change-Id: Ic936b33b736ff7a45482cf1b626977d34ac4ebb2 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Doc: Fix link to Qt namespacev5.4.0-alpha1Topi Reinio2014-09-051-1/+1
| | | | | | | | | Linking to 'Qt Namespace' will link to the Detailed Description section on the Qt namespace doc. Use the new linking format to link to the start of the page instead. Change-Id: Ib7e1b2b91fd9987262fc1a083ae94ef086260766 Reviewed-by: Martin Smith <martin.smith@digia.com>
* Update license headers and add new licensesJani Heikkinen2014-08-251-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-101-1/+1
|\ | | | | | | Change-Id: Iba61035910c46627e5e1c3824757da7b3d573657
| * Fix crash on QQmlEngine destruction.Andrew den Exter2014-07-031-1/+1
| | | | | | | | | | | | | | | | | | QQmlTypeLoader references QQmlImportDatabase in a thread, so change the declaration order so QQmlTypeLoader is destroyed and its thread stopped before QQmlImportDatabase is destroyed. Change-Id: Idfa511cf9625f893c4398f419a74d869169b478d Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Avoid race condition in QQmlEngine on shutdown.Gunnar Sletta2014-07-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | The QQmlTypeLoader was deleted (and its thread shut down) when the QQmlEnginePrivate was destroyed. However, the QQmlTypeLoader runs a thread which would happiliy make calls on the engine and its managed data. Fix this by stopping the QQmlTypeLoader's thread right away in QQmlEngine. Task-number: QTBUG-39905 Change-Id: Ida8e95d083f79237c74b036fd3521133a9fa4ac7 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-021-6/+3
|\| | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf examples/quick/scenegraph/openglunderqml/squircle.h src/quick/doc/src/qmltypereference.qdoc src/quick/scenegraph/qsgthreadedrenderloop.cpp Change-Id: Ife4f4b897044a7ffcd0710493c6aed1d87cf1ef9
| * Fix intermittent crash with older MinGW releasesRobin KAY2014-06-271-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | An alternate code-path was previously added to work around a bad signature for the SHParseDisplayName() function in older and non-w64 versions of the MinGW headers. This code-path incorrectly passed a single rather double indirect pointer to the third argument of that function causing it to produce corrupt data and subsequently crash. This change modifies the code to instead cast a pointer of the correct type to the incorrect type expected by the headers. Task-number: QTBUG-39793 Change-Id: I4d65dea4fc38d7e885468cd23434d8570c311fc2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Merge remote-tracking branch 'origin/5.3' into devSimon Hausmann2014-06-131-0/+1
|\| | | | | | | | | | | | | Conflicts: src/quickwidgets/qquickwidget.cpp Change-Id: Id4b080aea713df68608847bb82570231e37ce536
| * Fix bindings to when property of States not always workingSimon Hausmann2014-06-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "when" property is of type QQmlBinding* and we special case that type when writing property bindings. However in order for that to work, the meta-type for QQmlBinding* needs to be registered at the point in time when resolving properties in the type compiler. In Qt 5.1/5.2 this worked by accident due to a different code paths that implicitly registered the meta-type earlier from a different location. There are a couple of property types for which we have special handling, such as QQmlV4Handler and QJSvalue, besides QQmlBinding*. We do register them explicitly at engine initialization time, and therefore we should also initialize the meta-type for QQmlBinding* there. Task-number: QTBUG-39421 Change-Id: Iec8609848b632afa52aa42cf0b807330c74f6f3a Reviewed-by: Joona Petrell <joona.petrell@jollamobile.com>
* | Javascript heap profilerUlf Hermann2014-06-061-3/+3
|/ | | | | | | | | This profiler tracks every memory allocation and deallocation, by the MemoryManager as well as the V4 VM, and exposes them as a stream of events to the profiler service. Change-Id: I85297d498f0a7eb55df5d7829c4b7307de980519 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove V8 profiler serviceUlf Hermann2014-05-091-2/+0
| | | | | | | | | It's broken and useless and it sends confusing data to the profiler client. Task-number: QTCREATORBUG-12188 Change-Id: I944cf19a78ee4378d5773e7aa80876f199a0f03b Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Fix build on older MinGWKonstantin Ritt2014-03-271-1/+14
| | | | | | | | | | | The correct declaration of the SHGetPathFromIDList symbol is being used in mingw-w64 as of r6215, which is a v3 snapshot; until then, SHGetPathFromIDList was declared to use LPITEMIDLIST. Change-Id: Icc2f7814bad475c9b825f7d70c0ae4da72f471d9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Static plugins: support loading static plugins from several enginesRichard Moe Gustavsen2014-03-131-1/+1
| | | | | | | | | | | | | When loading dynamic plugins, we register them as loaded so that we don't try to register their types several times if using several engines. The same was not done for static plugins. This patch will ensure that we follow the same logic also for static plugins. Task-number: QTBUG-36532 Change-Id: Icc1e089ae5d682c38b2d36bf4808f1c753c122a4 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove old compiler and VMESimon Hausmann2014-03-071-4/+2
| | | | | | | | | | | | This removes the bulk of the code. A few smaller cleanups remain, to be done in smaller changes as they move code around. Additionally the "optimize" option of qqmlbundle was removed. It called QQmlScript::Parser::preparseData, which however was not implemented and always returned an empty QByteArray. Therefore "optimize" would not do anything and the class is gone now :) Change-Id: I0c265e756704cb53c5250be1f69e4a3e1b6e64d5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Switch the code path from the old compiler and VME to the new code pathSimon Hausmann2014-03-061-3/+1
| | | | | Change-Id: Ib1b38ec07830f8df9fa4caacd00879434608053b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Combine the source file, line and column number triplet in a common structureSimon Hausmann2014-03-041-5/+5
| | | | | | | | | This avoids unnecessary function calls when all of the three pieces need to be retrieved from a QQmlBoundSignalExpression. Change-Id: Ibcd498c907ea723baf6439cf32ca5fc704f204b5 Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Document qmlContext() and qmlEngine().Mitch Curtis2014-03-041-0/+6
| | | | | | | | | | | | | | | | | | | 146b942d59cca446516652d42718197573d34e46 documented them (Qt 5), but for some reason they aren't visible [1]. c74e4a74ba97d32df7406fb684527d415dd8a6ba (Qt 5.1) then moved them into the QtQml namespace "to avoid symbol conflicts with QtDeclarative", and then did the following trick so that they could be called without qualifying the functions with the namespace: using namespace QtQml; For that reason, qdoc shouldn't see the namespace, so we #ifdef it out. [1] project.org/doc/qt-5.0/qtqml/qqmlengine.html Change-Id: Id815ae4de7f081c22755eef7c37a2bc6e812b440 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* [new compiler] Fix qquickanimation test crashSimon Hausmann2014-03-021-1/+1
| | | | | | | | Share finalization callbacks across all sub-instances of ObjectCreator, by moving into into SharedState. Change-Id: Ibcd679caecd2009b4705d04c859b2fea4c2295fd Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Add dedicated QML profiler and adapterUlf Hermann2014-02-151-1/+7
| | | | | | | | The remaining "profiling" parts of the QML profiler service are engine specific and are best accessed through their own adapter. Change-Id: Idb763104bdd80e4dabdf132ec1a496b9bc9f6f46 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-02-111-2/+2
|\ | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4ssa.cpp src/qml/jsruntime/qv4arrayobject.cpp src/qml/jsruntime/qv4context.cpp Change-Id: Ied5b23bec4dc14abe51127c507aed668f855c1e1
| * [Regression] Fix lazy binding evaluationSimon Hausmann2014-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 04774bb14c81688f86a2b31b8624bde8ebf59062 long time ago introduced the concept of fixed order binding initialization with lazy evaluation, where a bit is reserved for each binding that indicates whether it's been initialized the first time or not. When reading a property on a QObject, we'd check if the corresponding binding for the property has been initialized or not and flush (i.e. execute) the binding if necessary. As part of the V4/V8 clean-up, commit 1eb41200948ab414f1c47d93123b41c547a993df removed the StoreV8Binding instruction, which made the call for setting the this-binding-is-not-evaluated-yet bit. Nowadays we only use StoreBinding, for which this optimization was never implemented (and not needed really). Now that we have a unified JS code path, we need to set the pending binding bit and also make sure that we call flushPendingBinding for any JS side property access (accelerated or not). Also flushPendingBindingImpl had two bugs: * In an attempt of trying to find the binding to flush, it could happen that we'd try to flush a previously destroyed binding (m_mePtr is null), so the b variable would remain the first binding in the object and we'd flush the wrong one (instead of none). Added a missing check to verify that the property index matches. * Also resetting the mePtr must be done through clear(), to ensure that the pointer in bindValues in the VME is also cleared, to avoid re-enabling the same binding again in complete(); Task-number: QTBUG-36441 Change-Id: Icdb0c8fb036051fd5d6c4d33b10cd0c0ed9a9d5c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Add a debug service for controlling qml enginesUlf Hermann2014-02-101-0/+2
| | | | | | | | | | | | | | | | Like this we can control the starting and stopping of qml engines from the client without having to extend each of the other debug services. Change-Id: I5f1c077b6cfa0e628c32e8bcdea2ec053e310509 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* | Unify the interface for QQmlDebugServicesUlf Hermann2014-02-051-7/+7
| | | | | | | | | | | | | | | | Let the debug server handle adding and removing of engines through defined interfaces to prepare for multi-engine profiling and debugging. Change-Id: I7b277e54bdcce1d3e95e723f041a7db6b08b29fc Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* | Change QQmlProfilerService::instance to be a getterUlf Hermann2014-01-291-1/+1
| | | | | | | | | | Change-Id: Id2eb973443cc73aac3a06f94c98b52334d9766a3 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Rename V8 profiler classes to V4Ulf Hermann2014-01-231-2/+2
| | | | | | | | | | Change-Id: I54a71b83bdcaa4198b63a08572bc3d9d1bf8deea Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | fix whitespaceOswald Buddenhagen2014-01-221-1/+1
|/ | | | | | | remove trailing spaces and expand tabs Change-Id: Ieacb9d096b612c45d1a64700044c114d1f7522bc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-12-121-1/+1
|\ | | | | | | | | | | | | Conflicts: src/qml/qml/qqmlcompiler.cpp Change-Id: I802731139d47c5b733dd805f7bf432d67d7331e1
| * Revert "Revert ffaf39e9a7f11d4e2800b3b37160a2a952795614"Alan Alpert2013-12-041-1/+1
| | | | | | | | | | | | | | | | | | | | This reverts commit 27052dcad9810869a9065da4c06e9f14379411d7. While the additional flexibility would be nice, I've been reminded that we already did commit to it back in July. Change-Id: Iaf990dda98ee46eb028b4737bdeeafd050d9513f Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
* | Windows: Use Shell API for checking file case correctness.Friedemann Kleint2013-12-101-8/+26
| | | | | | | | | | | | | | | | | | The old method of converting to short 8.3 name and back does not work for drives where this is disabled. Change-Id: Ia0a46331a31eeb61578c31ba063a80665d5fc25c Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Remove old qml object creation profilingUlf Hermann2013-11-291-8/+0
| | | | | | | | | | | | | | | | | | | | The old way the object creation profiler works is unsuitable for detailed profiling as it only tracks top level components. Task-number: QTCREATORBUG-10631 Change-Id: I502d0e144f2965f5e09af8461b50b56c61de5b4b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Add support for accelerated property access to QML types and namespace supportSimon Hausmann2013-11-281-0/+10
| | | | | | | | | | | | | | | | | | | | | | * Resolve lookups in namespaces at compile time and instruct the SSA optimizer to eliminate reads from the namespace (QQmlTypeWrapper) if possible. For example access to attached properties of types (i.e. MyNameSpace.ListView.isCurrentItem) requires neither reading the namespace nor the type. * Add support for accelerated lookup of attached properties Change-Id: Ib0b66404ed7e70e1d4a46a1ac8218743a4cc8608 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Merge branch 'release' of ssh://codereview.qt-project.org/qt/qtdeclarative ↵Simon Hausmann2013-11-261-4/+17
|\| | | | | | | | | | | into stable Change-Id: I0bf06be69927d5961f1bdb4948c3572ef6111923
| * Allow for QtQml and QtDeclarative to co-exist at run-timeSimon Hausmann2013-11-251-4/+17
| | | | | | | | | | | | | | | | | | | | | | This patch changes QQmlData to share the very first bit with QDeclarativeData, to indicate if the QObject in question is exposed in the QML1 or QML2 run-time. Task-number: QTBUG-35006 Change-Id: I3aa1d7c99038792011afd9f481ad30d9b981721f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Fix crash on QQmlEngine destruction.Robin Burchell2013-11-251-1/+1
|/ | | | | | | | | | QQmlTypeLoader references QQmlImportDatabase in a thread, so change the declaration order so QQmlTypeLoader is destroyed and its thread stopped before QQmlImportDatabase is destroyed. Change-Id: If1f8ef0a5ce56103a417ecfb6897d2c3b9c8d364 Done-with: Andrew den Exter <andrew.den.exter@jollamobile.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Revert ffaf39e9a7f11d4e2800b3b37160a2a952795614Alan Alpert2013-11-131-1/+1
| | | | | | | | | Making it public right now seems a little premature, given all the work happening on the engine now (and for 5.3). We'll be in a better position to commit to it or not next release. Change-Id: Ib7b14afeb9205fb8a87ed16a6d38b1f468b2bbbb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix various compiler warnings in order to remove warn_off in the near futureErik Verbruggen2013-11-041-1/+0
| | | | | Change-Id: Ic0492fbe31a1e134674bc6c20381f735dd6d5b7a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Delay calculation of offline storage path as long as is practically possible.Robin Burchell2013-10-081-6/+10
| | | | | | | | | This avoids calculating it incorrectly in the case that something later clobbers argv, such as a zygote or booster-type mechanism. Change-Id: Ifab16c7c94e9ee3fded0dfda2266a12c910858ee Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
* Doc: Updated imports, \qmlmodule, and \inqmlmodule versions in src/qml.Jerome Pasion2013-09-271-2/+2
| | | | | | | | | | | | -QDoc ignores the version in \inqmlmodule so its better to remove them to avoid confusion. -Qt QML import version is 2.2 for 5.2 release -Qt Quick import version is 2.2 for 5.2 release Task-number: QTBUG-32172 Change-Id: I15df270f1fb4df0476a9ddd854fb9ddf58e9fc7c Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Fix Persistent/WeakValue APILars Knoll2013-09-261-1/+1
| | | | | | | Don't use unprotected Values in the API anymore. Change-Id: I8851628227fca374de24701bc8ee0908b5ae3923 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Doc: Made \since commands in src/qml consistent.Jerome Pasion2013-09-251-3/+3
| | | | | | | | | | | | | | -QDoc displays the Qt version in the HTML output. -If there is only one argument to \since, QDoc assumes it is the Qt version. "QtQuick 2.1" -> "Qt 5.1" "QtQml 2.1" -> "Qt 5.1" "QtQuick 1.1" -> "Qt 4.8" Task-number: QTBUG-32172 Change-Id: I3c0da4dce8e44d717a6840bea250b4f0f9d78128 Reviewed-by: Martin Smith <martin.smith@digia.com>
* [new compiler] Add support for finalization callbacksSimon Hausmann2013-09-201-0/+3
| | | | | | | | | | | This is needed for Component.onCompleted (the signal emission) as well as the private finalization callback API in QQmlEngine, used by QtQuick. The creator - similar to the VME - tracks the attached properties object of QQmlComponent through a linked list. Change-Id: I8ada94009a7ce2078feefd359485657626c300fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Merge branch 'dev' of ssh://codereview.qt-project.org/qt/qtdeclarative into HEADSimon Hausmann2013-09-201-12/+50
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4isel_masm.cpp src/qml/jsruntime/qv4script.cpp src/qml/qml/qml.pri src/qml/qml/qqmltypeloader_p.h Change-Id: Ia784d855a2131e3289454f12d841ca2c65be15c1
| * Register Locale object in the QtQml namespace.Mitch Curtis2013-09-201-0/+1
| | | | | | | | | | | | | | | | | | | | It was previously registered with QtQuick, which meant QtQuick had to be imported in order to use Locale; a basic QML object. Task-number: QTBUG-32505 Change-Id: I9d49cc0d87c0fae07b46885fcdec4f27fb0e0708 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| * QmlDebugging: Process commands in v4DebugServiceAurindam Jana2013-09-191-2/+2
| | | | | | | | | | Change-Id: I6371db756f72ee373884268fc49a5b16cb66fd34 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
| * QmlDebugging: Replace QV8DebugService with QV4DebugServiceAurindam Jana2013-09-191-3/+3
| | | | | | | | | | Change-Id: Ic8c99e3984d9ef6d122f7d8834df97eeb1f1fda3 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
| * Make QQmlAbstractUrlInterceptor publicAlan Alpert2013-09-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | A supporting class for file selectors and qml import control, it allows redirecting local file paths (use a QNAM for remote paths). All work was done previously for Qt 5.1, including tests. This is just making it public for Qt 5.2. Change-Id: Icb319cc23200541c8e4088b2d400e9af94f3eee5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>