| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
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>
|
|\ |
|
| |\
| | |
| | |
| | | |
Change-Id: Id95f7b01de36bccecbb7b73acc041654a1fe2ebe
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-40448
Change-Id: I75eb886ae765191101d6b01ebd038211e5fe8fba
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-40099
Change-Id: I0eb0d877963a9394765ec8e0f10569a98a263743
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: I6fb5fd48a24affc463c5eb7ea0e80c81fab33f66
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I9a1477dcc608372120d8d8c9b57d8e15f8e64312
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
[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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QSGRenderer::draw, QSGRenderer::setProjectionMatrixToDeviceRect
and the QSGBindableFbo class aren't used anywhere anymore.
Change-Id: Ia00c60c288e1b89beaada6b2bbe7022ef9367391
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
[ChangeLog][QtQuick][QQuickItem] Added signals sceneGraphInitialized and sceneGraphInvalidated
Change-Id: Idaea88bc743f0637d093cf1ba7ac4f78acd7e6ad
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|/ /
| |
| |
| |
| |
| |
| | |
Try to be compatible with raw GL when possible.
Change-Id: Id6e17da2d8c134362a5428de970cd5e562f57143
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/qml/compiler/qv4ssa.cpp
src/qml/jsruntime/qv4arrayobject.cpp
src/qml/jsruntime/qv4engine.cpp
Change-Id: Ie3ef6202b6a3a8521971e1be10c40c6a2db6989c
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| | |
There seems to be a bit of confusion about this on public forums.
Change-Id: Id193de541e7d7e353dc5d75b64a15f481e2cf8b6
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Otherwise we add duplicate item delegates.
Task-number: QTBUG-40298
Change-Id: I8a2221d72f458c892720a71d87513808a5d725a6
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I77ae68f523641a2e6b75623200f65407b64e1b40
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-38945
Change-Id: I081434a94899f8a1e2fd7275b67f62d06b56b0c2
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ie250c41943be661b19b5f09731508d6613f4cf82
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
"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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- 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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
-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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| | |
Change-Id: Id4b9b9481fe5c6b9cdab077b3957a0442fcff547
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|