aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Expose the scene graph publically through a QSGEngine classJocelyn Turcotte2014-08-0113-140/+909
| | | | | | | | | This change wraps QSGRenderContext and QSGContext in a new QSGEngine class, and expose a public interface of QSGRenderer through a QSGAbstractRenderer to make it usable on a standalone window or FBO. Change-Id: I2d41187472424f5ea64650a006bcd61f2711f6b9 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/devFrederik Gladhorn2014-08-019-57/+74
|\
| * Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-299-57/+74
| |\ | | | | | | | | | Change-Id: Id95f7b01de36bccecbb7b73acc041654a1fe2ebe
| | * Remove metaobject revisioning for QQuickScreenAttachedAlan Alpert2014-07-291-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Attached property versioning is not currently fully supported. Initial approach was to add the version tags and not enforce them until you could version attached properties. However the QML engine is currently erroring on this. Specific error example: ""Screen.onNameChanged" is not available due to component versioning " Workaround recommended in the JIRA task is to just not version them, until attached property versioning is fully implemented. Task-number: QTBUG-35569 Change-Id: I5ded7eb223ec00f70d847b3fac09ec240d5d7901 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| | * Don't dereference null pointer.Sérgio Martins2014-07-281-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-40448 Change-Id: I75eb886ae765191101d6b01ebd038211e5fe8fba Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Flickable: Cancel interaction on interactive changesAlbert Astals Cid2014-07-282-21/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise if you have a listview with a flickable inside with a mouseare inside the pressed is never set to false if you make the interactive property of the outer list depend on the moving of the inner flickable. This makes that when later you change currentIndex of the list and you have StrictlyEnforceRange set, the list won't move because it still thinks it is pressed Change-Id: I2c2021f486fc0a31840c3f2199bc7cb76dc01e3e Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| | * Don't try to draw shader effect sources with dims < 0.Gunnar Sletta2014-07-281-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-40099 Change-Id: I0eb0d877963a9394765ec8e0f10569a98a263743 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| | * QQuickMouseArea: Mark override functions with Q_DECL_OVERRIDEAlbert Astals Cid2014-07-281-17/+17
| | | | | | | | | | | | | | | | | | Change-Id: I6fb5fd48a24affc463c5eb7ea0e80c81fab33f66 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
| | * Fix interaction of garbage collector with JS objects during QML type ↵Simon Hausmann2014-07-263-8/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instantiation It may happen that during the lengthy process of instantiating a tree of objects for QML, the garbage collector runs. For objects created by QML we support different ownership models, for example in QtQuick visual parents keep their visual children alive, despite perhaps a lack of QObject parentship. That ownership becomes active once the QML autoparent function has assigned the correct visual parent, which happens after object instantiation (after QQmlObjectCreator). Similarly when a composite type is created, its QObject parent is only set after all properties have been set. The root QObject is kept alive through a special boolean, but if the sub-objects aren't children yet, their JS wrapper might get deleted. For composite types with var properties, that also means their var properties get deleted, such as the model property of TableView.qml in the bug report. In the future we want to support creating QWidget hierarchies with QML, which also for layouts may rely on a delayed parent assignment for layouts. To accommodate all this, this patch introduces an array on the JS stack that keeps track of all JS wrappers for all QObjects created. This array is alive during object tree creation. Afterwards, the different ownership models take over, for example the auto parent function assigning a visual parent. This patch also fixes an off-by-one in the total object count calculation for composite types, where when instantiating a composite type as a sub-object we counted the sub composite's object count but forgot the object itself. Task-number: QTBUG-38835 Task-number: QTBUG-39966 Change-Id: I6104b2434510642081e0c54793ed296adeca7481 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Fix touch/mouse propagation bugsMartin Jones2014-08-014-54/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Filtered mouse release was not delivered if another touch started after a touchMouseId was activated. This meant that any filters expecting a release event would not receive it if another touch was made before release of the touchMouseId. We prevented a touch becoming the touchMouseId in the child mouse filters if there were any existing touches. The normal event delivery, however, does not require a single touch. Further to the previous, a touch could become the touchMouseId, even if the initial press happened when there was an existing touchMouseId. This meant that a touch could turn into a mouse when the existing mouse event was released, resulting in a new touchMouseId which hadn't been through child mouse filters. Flickable delayed press should be sent via normal event processing, as other touch/mouse events are now delivered in this way. We often called childMouseEventFilter() multiple times for each event. This is bad because the gesture handling relies on claiming a gesture in one event, then stealing it in the next. Instead of sending touch to mouse candidate points already determined to be within the item bounds and already transformed, we sent all of the points to the mouse recipient. PinchArea did not store the starting position at the original touch points, so other items could pass the dragThreshold before PinchArea and steal a gesture meant for PinchArea. Task-number: QTBUG-40330 Change-Id: Ic0009c176d3d1cb7cff0b5eda076a2c3ca864136 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* | | Make canvas cleanup work propertly...Gunnar Sletta2014-07-313-2/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depending on which mode we are in, we need to run cleanup on the right thread and in the right way. Image canvas doesn't contain any GL resources and can be nuked right away. The actual QSGTexture is managed by the node, so we don't need to worry about it. For FBO it is a bit more complicated. - Threaded: We create a cleanup handler that runs makeCurrent deleteTexture and doneCurrent and then release the surface on the GUI thread. - Immediate: Same as threaded, just right away - Cooperative: Schedule the texture to be deleted on the next sync. The Context doesn't have its own GL context in this case, so don't worry about it. Change-Id: I2d0ae7acfa05561faa52f3cacd767eb18cabaf02 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Document how to clean up graphics resources properlyGunnar Sletta2014-07-311-10/+71
| | | | | | | | | | | | | | | Change-Id: I9a1477dcc608372120d8d8c9b57d8e15f8e64312 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | QQuickWindow: fix resetOpenGLState handling of vertex arraysGiuseppe D'Angelo2014-07-312-6/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the core profile it's forbidden to set vertex attributes (via glVertexAttribPointer and similar) when there's no VAO bound. Similarly, if there's a VAO bound when calling resetOpenGLState, then we need to unbind it or those operations will affect its status. Change-Id: Id7db028ddde9f9429f5a210b8b3d1468888dbce4 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Fix crash when throwing an exception from within a constructorSimon Hausmann2014-07-311-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | We need to check for the exception before doing anything with the returned value. Change-Id: I0086be96b2df2434b95187489d7430ae67f561a1 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Avoid eventloop recursion in touch event handling.Gunnar Sletta2014-07-314-14/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The eventloop recursion in the threaded render loop was there to preempt any pending event to make sure we worked with as recent as possible input events. The benefit of this was never verified. The recursion after the actual flush was to fix animations which were constantly started during touch events, such as a behavior tracking the mouse point. This is fixed differently. Event loop recursion is always dangerous, so we're doing what we can to avoid it. Change-Id: I120b2e98350e3b9068153415a671408773fbc769 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Use the current context to resolve extensions.Gunnar Sletta2014-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When updating the code to not use direct gl calls, this code was changed to use the context's gl context. The context doesn't have a context when the rendering happens on the same thread as the scene graph rendering and we get a crash. Change-Id: I8adf62c0ed12bb055982a71ba59af76afeefcca1 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Update the WERROR setting for QtQmlThiago Macieira2014-07-311-2/+4
| | | | | | | | | | | | | | | | | | | | | Apple Clang 5.1 added the -Wunused-const-variable option from Clang 3.4. Change-Id: I95abe373d875ead0565d32187720e1b9042af0ca Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Invalidate the scenegraph properly in the rendercontrol's stop()Laszlo Agocs2014-07-291-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Taking the persistent flags from the QQuickWindow was a bad idea. These are not applicable to the case when an application drives the scene via QQuickRenderControl. Once stop() is called, all resources must be released since the context itself will typically be destroyed afterwards. Task-number: QTBUG-40435 Change-Id: Iaa3b950e60ec36783a12074d706e1a501573f110 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Introducing QQuickWindow::scheduleRenderJob()Gunnar Sletta2014-07-293-1/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick][QQuickWindow] Added QQuickWindow::scheduleRenderJob(), a convenience alternative to the equivalent signals for one-shot tasks. Change-Id: I5e4f0d67d5223f7fd77bca394e2a85810fadd335 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Move QSGRenderer::updateStencilClip down to QSGBatchRendererJocelyn Turcotte2014-07-294-154/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | This convenience method is currently only used by the batch renderer. Moving it allows removing the QOpenGLFunction inheritance of QSGRenderer and unbinding it slightly from the rendering implementation. Change-Id: I4322952f843de8d950ced32885feee8d6c4a2730 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Remove dead code in QSGRendererJocelyn Turcotte2014-07-292-237/+0
| | | | | | | | | | | | | | | | | | | | | | | | QSGRenderer::draw, QSGRenderer::setProjectionMatrixToDeviceRect and the QSGBindableFbo class aren't used anywhere anymore. Change-Id: Ia00c60c288e1b89beaada6b2bbe7022ef9367391 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Introducing QQuickItem::sceneGraphInvalidated/sceneGraphInitializedGunnar Sletta2014-07-294-0/+76
| | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick][QQuickItem] Added signals sceneGraphInitialized and sceneGraphInvalidated Change-Id: Idaea88bc743f0637d093cf1ba7ac4f78acd7e6ad Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Leave the depth mask on after rendering.Gunnar Sletta2014-07-291-0/+1
|/ / | | | | | | | | | | | | Try to be compatible with raw GL when possible. Change-Id: Id6e17da2d8c134362a5428de970cd5e562f57143 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Merge remote-tracking branch 'origin/5.3' into devSimon Hausmann2014-07-2618-34/+87
|\| | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4ssa.cpp src/qml/jsruntime/qv4arrayobject.cpp src/qml/jsruntime/qv4engine.cpp Change-Id: Ie3ef6202b6a3a8521971e1be10c40c6a2db6989c
| * Do not use mark() when marking ExecutionContextsLars Knoll2014-07-251-1/+5
| | | | | | | | | | | | | | | | | | | | | | Some execution contexts in the parent chain can be allocated on the C stack instead of the GC heap. Calling mark() on those would push them onto the GC stack (which is identical to the JS stack). In rare cases the reference can survive to live into the next call to gc(), causing invalid accesses to already deleted contexts. Change-Id: I709f58de27be9386cf70707c84e4c86c7c303fa7 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Don't recreate header and footer unnecessarilyMartin Jones2014-07-254-9/+11
| | | | | | | | | | | | | | | | | | | | The only time that they need to be recreated is if the orientation changes (even then, a good implementation could handle it, but no point requiring that now). Task-number: QTBUG-40375 Change-Id: Id0215fb812724827bb139cda8f8dc6208c703852 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
| * Clear the visibleImgTags list when setting up the text layoutAndy Shaw2014-07-241-1/+2
| | | | | | | | | | | | | | | | | | Since the text layout is being redone then the visibleImgTags will be repopulated, therefore it should be cleared first so that it doesn't have duplicated entries. Change-Id: I415f94326e156ae265bc044544f2bb0d7146ce4c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
| * Improve programmatic flicking of ListView (and Flickable).Michael Brasser2014-07-241-1/+5
| | | | | | | | | | | | | | | | | | | | Fix bug when programmatically flicking ListView after a real flick in the opposite direction. Also ensure a programmatic flick can flick past bounds when situated at the bounds and DragAndOvershootBounds is set. Task-number: QTBUG-38209 Change-Id: If4a2f65d0e7cb620b9af21f8a25a8a8797976125 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| * V4: work around a bug in libc++'s std::vector<bool>Erik Verbruggen2014-07-241-8/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ++operator of std::vector<bool>::iterator in libc++ has a bug when using it on an iterator pointing to the last element. It will not be set to ::end(), but beyond that. (It will be set to the first multiple of the native word size that is bigger than size().) See http://llvm.org/bugs/show_bug.cgi?id=19663 Task-number: QTBUG-39911 Change-Id: Ic244d9c90ee6b596261a6e322301c411a14820a8 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * QQmlComponent::create(): visual items must have a visual parent.Mitch Curtis2014-07-241-0/+5
| | | | | | | | | | | | | | There seems to be a bit of confusion about this on public forums. Change-Id: Id193de541e7d7e353dc5d75b64a15f481e2cf8b6 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| * Clean up the textures when deleting the contentAndy Shaw2014-07-241-0/+2
| | | | | | | | | | | | | | | | | | | | Whenever the content is deleted then the textures will be recreated so the existing list of textures should be deleted and cleared to reclaim the memory. Change-Id: I4fdf77817a5f4b2330414e9d113c669d18de9af8 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| * Schedule layout changes to avoid refill() recursion.Mitch Curtis2014-07-242-0/+11
| | | | | | | | | | | | | | | | Otherwise we add duplicate item delegates. Task-number: QTBUG-40298 Change-Id: I8a2221d72f458c892720a71d87513808a5d725a6 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| * Do not crash AtlasTexture if image is nullDavid Edmundson2014-07-231-0/+3
| | | | | | | | | | | | Change-Id: I77ae68f523641a2e6b75623200f65407b64e1b40 Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| * Fix Node object leak in QQuickTextEditPrivateLiang Jian2014-07-232-1/+10
| | | | | | | | | | | | | | Delete Node objects stored in textNodeMap at two places to prevent leak. Change-Id: I8eb0d1af900c94e1fab2f55b689de393e674f0aa Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
| * shift and unshift fail for QQmlSequence typesMartin Jones2014-07-221-2/+2
| | | | | | | | | | | | | | | | | | QQmlSequence is a Custom array type, so must use the generic shift/unshift implementation. Task-number: QTBUG-40244 Change-Id: I491d9dc87a3a204daad4cf7460ffac81165056a5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Check for window != 0 in QuickTestResult::grabImage().Friedemann Kleint2014-07-211-1/+1
| | | | | | | | | | | | Task-number: QTBUG-38945 Change-Id: I081434a94899f8a1e2fd7275b67f62d06b56b0c2 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
| * Fix typo in documentationKai Koehne2014-07-181-1/+1
| | | | | | | | | | Change-Id: Ie250c41943be661b19b5f09731508d6613f4cf82 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| * Binding Text width to implicitWidth can result in incorrect layoutMartin Jones2014-07-111-2/+3
| | | | | | | | | | | | | | | | | | If the text is not left aligned and the width changes during layout due to implictWidth changing, the text needs to be laid out again. Task-number: QTBUG-40161 Change-Id: I1ad679ccdc5595dd749600abe08ed46ac179d7bf Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
* | qmlRegisterCustomExtendedType, qmlRegisterExtendedUncreatableTypePaul Lemire2014-07-252-0/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are cases in Qt3D where we'd like to be able to register uncreatable extended types. The main use case is having an abstract class that has an extension class so as to have a clean separation between the C++ and QML API. Implementations of the abstract can then be easily registered to QML and rely on the extension class for QML specific properties. The other feature we'll need in the near future is the ability to create extended QML types that use a custom parser. Two new type registration method were added to qqml.h to fulfill those needs. Unit tests for those are present in qqmlecmascript and qqmllanguage. Change-Id: I15b2cd791ffd36b537305af1873491c079d4094e Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | V4 JIT: enable the JIT when compiling with clang on ARM.Erik Verbruggen2014-07-243-1/+5
| | | | | | | | | | | | | | | | The macros that were used to detect Thumb2 support on the cores were gcc specific. Change-Id: I76959899b41f440d4b7ad7a5436059a3dc102111 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | QQmlError::toString: improve handling of empty urls.David Faure2014-07-242-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | "file::2:23: ..." is strange to read. Show "<Unknown File>:2:23: ..." instead, by treating empty urls (including "file:") as unknown, and by still showing line and column numbers in such a case. This change makes it possible for QUrl::fromLocalFile("") to return an empty url rather than "file:", which this module was relying upon in the tests. Change-Id: I91918090fd4e0aa9a25dbbb18893a0ce94140e21 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | V4 IR: loop detection: also record loop information separately.Erik Verbruggen2014-07-241-7/+133
| | | | | | | | | | | | | | | | Now loop-specific algorithms can easily query which blocks are loop headers, which blocks make up a loop body, and whether loops are nested. Change-Id: I442af34d3cca816b61ee761335ff3571b72a6d3e Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | V4 IR: change dominator tree to hold on to less memory.Erik Verbruggen2014-07-241-59/+72
| | | | | | | | | | | | | | | | Move all data needed to calculate the immediate dominators into a struct that is freed immediately after finishing this calculation. Change-Id: Id0cefa4088643539d59c4c593cba1848422c1726 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | V4 IR: add IR verification functions.Erik Verbruggen2014-07-241-1/+183
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - CFG verification: check if all edges are correctly registered on both the outgoing basic-block and the incoming one, and that jumps/cjumps targets correspond to outgoing edges. - immediate dominator verification: check if the current immediate dominators are the same as they would be if being recalculated from scratch. - no shared expressions/statements: check if not more than one IR node points to a statement/expression. Also add a function that writes out the CFG as a .dot file for graphviz. Will be used in upcoming patches. Change-Id: I784561f581f9f8ec22f3ab449afd87a9e7a8bdaf Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Doc: Merged two pages titled "Qt Quick QML Types".Jerome Pasion2014-07-243-290/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | -kept the \qmlmodule page. -there are two pages with the same titles and it is difficult to discern between the two. -the grouping is lost, but those can be restored in either the use case or concept topic pages. -modified landing page and other pages which link to the unmerged document. Change-Id: I58468c22f0621506e477f30ae2411a382d57b982 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | V4 IR: change debug code enabling to use compile-time constantsErik Verbruggen2014-07-241-50/+68
| | | | | | | | | | | | | | | | This will make sure that debug code gets compiled/checked, even when it is disabled. An optimized build will remove the code. Change-Id: Ia32de550ea95c44afa5ed84bc17cfeeada06f2f4 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | V4 IR: fix printing with register information.Erik Verbruggen2014-07-241-4/+10
| | | | | | | | | | | | | | | | | | The register numbers for non-FP registers overlap with the FP ones. So when keying a single mapping on number, this resulted in the FP ones overwriting the non-FP ones. This patch splits the mapping in two. Change-Id: I95042b52a423eaaa96ed55d6c8ef12a2eb99f191 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | V4 RegAlloc: do not add duplicate register hintsErik Verbruggen2014-07-241-5/+17
| | | | | | | | | | Change-Id: Id4b9b9481fe5c6b9cdab077b3957a0442fcff547 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Fix incorrect acceptableInput value on construction.Aaron McCarthy2014-07-241-3/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The value for acceptableInput was being calculated every time the property value was read. This can lead to situations where the value returned from successive property reads is different even though no acceptableInputChanged() signal is emitted between the two calls. This can be seen during QML component construction where emission of the changed signal is suppressed until the component completes and the value of acceptableInput changes as the other properties are set. If the property is read during binding evaluation an intermediate value can be seen and the QML engine will not re-read the property until after the changed signal is emitted. This doesn't happen until the true value of the acceptableInput property is toggled. Fixed by changing the property getter to returned the precalculated value of acceptableInput and ensuring that this value is set when correctly. Change-Id: Id3ba3a34988ff50f590e4f8330b873f390eaa025 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
* | V4 IR: copy arguments to temps at function start.Erik Verbruggen2014-07-233-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | When arguments cannot "escape" from the current context, and when the arguments array is not used, actual arguments can be treated the same as temporaries instead of memory locations. This has the benefits that they are subject to the same optimizations, and type deduction can assume that the value/type didn't change since its assignment. Another effect is that the values can be kept in registers, and loads from the stack take only 1 indirect load instead of 2 (from the formals array). Change-Id: I209da7991ec5d903b3c5acdbcaf6b1cc67502520 Reviewed-by: Lars Knoll <lars.knoll@digia.com>