| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Might have QNodes "between" parents and child entities.
Change-Id: Ie041508ec96c39b779bc75a6ad4d38c604e322e2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
| |
Change-Id: If981333f7a3d78028d4f08c59867453d4192b955
Task-number: QTBUG-81058
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
prints to the console, also dump the list of paths in the frame graph
to help understand render views.
Change-Id: Ic4756e09545971b224a239fafc6667b0ca3d4572
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
| |
Deprecates the message classes and the public APIs to send/receive them.
(deprecates the constructors as deprecating classes breaks syncqt)
Change-Id: I4908f15c3c5f1d63969a0f2e11f6ecb22e2e3748
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|
|
|
|
| |
Change-Id: Ic20d37a8bf875247c1af31fa4ded757564f953fc
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
src/core/nodes/qnode_p.h
src/render/renderers/opengl/renderer/renderview.cpp
Change-Id: I24483612f9f395e9ffc0bd6163bbfa092b13b7cb
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It is totally valid to have actually the same node used for 2 distinct
connections (e.g setting 2 different node properties to the same node).
With the hash, the second setter call would overwrite the first connection
resulting in leaving a dangling connection around potentially resulting in
crashes.
Instead use a QVector<pair<node, connection>> and adjust code accordingly.
Change-Id: I49870c409c3f7b629c8f1bdfcb8757a904db2490
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 906f8a62f89a7ce2343a155e6db62616e66dc14b)
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Add (basic) documentation for Qt3DAnimation::QAnimationCallback.
- Add missing namespace qualifiers for \class, \fn, \instantiates,
\sa, and \property commands.
- Remove linking to example file pages, as QDoc no longe treats them
as linkable targets.
- Fix function/QML method parameter documentation
- Fix missing \qmlproperty types
- Fix linking to QKeyEvent in QtGui.
- Move Qt3DRender::Quick namespace documentation to where QDoc can
see it.
- Add enum documentation for
Qt3DRender::QBlitFramebuffer::InterpolationMethod and
Qt3DRender::QMesh::Status.
- Other minor fixes
This brings the current warning count to zero.
Fixes: QTBUG-79822
Change-Id: I1154a7f9c34917a3f240e99da0e7a300be7d65a0
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: Iac18b5fddec79295dd9e4249fd16eb2f121fe771
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It is totally valid to have actually the same node used for 2 distinct
connections (e.g setting 2 different node properties to the same node).
With the hash, the second setter call would overwrite the first connection
resulting in leaving a dangling connection around potentially resulting in
crashes.
Instead use a QVector<pair<node, connection>> and adjust code accordingly.
Change-Id: I49870c409c3f7b629c8f1bdfcb8757a904db2490
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a QNode subclass is created doing Subclass(parent) with parent != nullptr
QNodePrivate::_q_postContrustorInit is called through a queued invocation
due to the fact that the QNode ctor is called before the subclass ctor is
(and we need the class to be fully constructed to do proper initialization).
When adding a QNode subclass created as described above, and immediately
referencing it as a property of another QNode, we can end up in cases where
the backend gets aware of the node being referenced in the relationship and
tries to create its backend. Unfortunately due to the queued invocation of
_q_postConstructorInit, the frontend node has yet to be fully initialized,
resulting in the creation of the backend node to assert/crash.
Therefore, when updateNode is called (whenever a subnode is referenced in a
relationship) we now ensure that postConstructorInit gets (or has already been)
called.
Change-Id: Iea6e0b5a59c676f5db2946bec2f8c345accc32b0
Task-number: QTBUG-79350
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Introduce mechanism to notify backend nodes of changes in relationship
between nodes. If a component is added or removed from an entity,
or if a node is added or removed from a property of another node, then
just rely on the node being marked as dirty when syncing takes place.
For nodes that do not support syncing, messages are delivered as before
but allocated on the stack rather than the heap.
Change-Id: I06affac77e42a9998d9c7f44e231c7724c52b320
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Remove include statements for classes that are no longer used. Makes
it easier to find remaining use cases that need addressed before
complete removal in Qt 6.
Change-Id: I60529ba1929ad64b162d3847d5df47cde2a60dad
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: I5b1af685c640c218d3720d5339b14dfc913e01c5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| | |
QChannelMapping, QSkeletonMapping and QCallbackMapping updated.
Change-Id: I10b78d86856f6ad01fbb313fdcbe9f87f6d926ac
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
NodePostConstructorInit::processNodes and QAspectManager::processFrame
are both triggered by the event loop which means the frame can happen
before the processNodes call. We want to ensure processNodes is called
first so those pending nodes can be created during the processFrame call
otherwise they will get deferred until the next frame.
Created a test to show this and removed the now unnecessary double calls
to processEvents in several other tests.
Change-Id: I7a3f7b34be2858b4acdb9275804b458f9366ec67
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: I9fa6e67607baa66250789b8bf618f30bd45aad98
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Stop using messages
- Remove QSceneObserverInterface
- Ensure backend node creation/destruction is done at the right time
Change-Id: I470825af344ab65bf05e93fc149b61d1b9eefc96
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I4e73060c1941773efcc568f010f5b073ebb10d4a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Triggered by gcc version 4.8.5 (SUSE Linux):
src/core/nodes/qentity.h: In member function ‘QVector<T*> Qt3DCore::QEntity::componentsOfType() const’:
src/core/nodes/qentity.h:69:32: error: declaration of ‘components’ shadows a member of 'this' [-Werror=shadow]
const QComponentVector components = this->components();
^
Change-Id: I02507b3ff75b0f21d958955f3ce9a8b01f471d05
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If the node type supports syncing, use that rather than the creation
message. The message is still needed since that is passed to the
instantiation functor (none of qt3d's classes appear to use anything
but the node id, but can't be sure no other classes do, and can't add
other virtual method without breaking BC).
Change-Id: Id99f448070b8722a7809b968798772c9eb3c8397
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since aspect manager is now on main thread, we can directly update
backend nodes safely. Track nodes which have changed properties and
notify the backend nodes as part of the frame loop.
This avoid allocating and delivering many change messages.
To follow:
- implement on all nodes
- look at backend to frontend syncing
- figure out what to do with non property messages (components
added/removed, commands, ...)
Change-Id: Ia0c442b0528e728c4324d168200bae021bc29266
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\
| |
| |
| | |
Change-Id: I903f92a7b910eee165a2dd708a2d5fb25192ab14
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Automatic removal of components when they are destroyed is based on
connecting to the destroyed() signal. This however means that by the
time removeComponent() is called, the pointer is no longer a valid
QComponent (just a QNode). While accessing member data of derived
classes such as nodeId is fine, emitting signals from derived class
does nothing, and in some cases asserts.
Fix this by:
- doing the QComponent clean up from it's destructor
- implementing a separate method on QEntity to simply clear the now
partly invalid pointer from the list.
Change-Id: Id7632ee2ceaff6548c44c7a43ae40a0372febde9
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: I42affdd02bddb5205b9f2455f0c5e5efbd414dd8
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Backend nodes should always be created from the top-most parent down
ensuring that every parent is created before its children. The original
way of creating backend nodes by calling _q_postConstructorInit
in a deferred manner from the QNode constructor breaks this because
backend node creation happens in the order that the nodes on the
front-end were created. This was often incorrect when reparenting
newly created nodes.
Fix by creating a queue of nodes needing a _q_postConstructorInit call
and only adding nodes to the queue if one of their ancestors is not
already in the queue. This ensures that _q_postConstructorInit is only
called for the top-most node in any subtree. This behavior exactly
matches the creation behavior when building a subtree and reparenting
it to a node with a backend.
Doing silly things like creating a node with a parent that has a backend
then immediately reparenting is now safe. After this patch, it should
be safe to assume that backend nodes can always find their backend
parent.
Adding only the top-most nodes to the queue and processing the entire
queue at one time also ensures that all creation events get sent in
the same batch. This fixes the problem of having backend nodes referring
to other backend nodes that haven't been created yet.
Task-number: QTBUG-74106
Task-number: QTBUG-73905
Change-Id: Idcf38d6c3164f6be4394a3b25554547414061059
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the initial Entity backend node hierarchy is created it skips over
any non-entity nodes to ensure that Entities are only parented to
other Entities. Calling QNode::setParent breaks this when reparenting
Entities to non-entity nodes.
Fix by sending a new "parentEntityUpdated" property update that backend
Entity nodes listen for. They keep the id of their new parent and flag
the need to rebuild the entity hierarchy. This triggers a new job to
clear the children and parents of every backend Entity, then rebuilds
the hierarchy using the stored parent ID in each Entity. This is much
more forgiving of creation/parenting ordering issues and shouldn't be
less performant because any Entity reparent was previously marking
everything dirty anyway.
Add a new test from QTBUG-73905 that creates 4 cylinders and manipulates
the parents in different ways.
Add a new test to tst_nodes to reparent a QEntity to a QNode and ensure
the entity finds it's correct QEntity parent.
Add a new test to tst_entity to ensure backend nodes correctly handle
the new parenting events.
Task-number: QTBUG-73905
Change-Id: Iab0203947d89bbed2868b3629fbde879675fe568
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Qt expects the export macros to have Q_ prefixes, otherwise the symbol
versioning script won't find them and mark them.
Also remove non-exising QT3DLOGIC_PRIVATE_EXPORT macro from
src/doc/qt3d.qdocconf
Task-number: QTBUG-74752
Change-Id: I71b9e85ff09c002fb283824aa51a5a8f50e937f4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| | |
Change-Id: If17511da64dd666a536408aa3cb3178ef6db0403
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In addition, the parent of the component and all further ancestors need
to be registered on the backend. We do this by calling
QNodePrivate::_q_postConstructorInit on all these nodes.
Also add autotest that triggers the case referenced in QTBUG-72236 to
avoid regressions.
Change-Id: Ibf8f43654d145ea8b8082b2f30123ea65e42ff55
Fixes: QTBUG-72236
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: James Turner <james.turner@kdab.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Otherwise, child nodes may be constructed before their parents and their
node creation changes will arrive at the backend out-of-order.
This could result in a child node referencing a parent that we have not
yet received a creation change for.
Also add a unit test to take this case into account.
Change-Id: I26b29e63863d1686e7b9239c63297c7e6c341f4e
Task-number: QTBUG-73986
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
src/render/renderers/opengl/textures/gltexture.cpp
Change-Id: I57e9a296dc15f0b5dc3af3664f698bdc799c4bb5
|
| |
| |
| |
| |
| | |
Change-Id: I3eecd06bba9438b5aa472f3ba7ecaecdeda985e2
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I95431b48ee9828be602c088cdd798fabbd1723ef
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- qcomponent.cpp
- qbackendnode.cpp
- qjoint.cpp
- qskeletonloader.cpp
- qframeaction.cpp
- qscene2d.h
- qrenderaspect.cpp
Change-Id: I25881dee19d2d01f948bfaf4a156a97f6caaea73
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Adds doc for undocumented methods in qnode.h and qnodecommand.h
Task-number: QTBUG-36985
Change-Id: I1eb28916ba8862a414dccd58a3c56b84a89f99d0
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This opens up for reduced bookeeping on the backend,
and is used by the experimental Dragon render aspect,
which is currently being implemented in qt3d-runtime.
Change-Id: I4cc2e98e4e0e7e8d456ed11c4fbc48db5c93f2a2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 77e418fde850c86e39d9dd8528876599fbe9dc34)
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
|
| |
| |
| |
| |
| | |
Change-Id: I188fab5019d3e05354a4c1582fb12097a569fbb8
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|/
|
|
|
|
|
|
|
| |
This opens up for reduced bookeeping on the backend,
and is used by the experimental Dragon render aspect,
which is currently being implemented in qt3d-runtime.
Change-Id: I4cc2e98e4e0e7e8d456ed11c4fbc48db5c93f2a2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
_q_postConstrutorInit is called in a deferred invocation when constructing a
Node with a parent. If several nodes are created that way, the
_q_postConstructorInit call from the node which parents the other will
actually build the node creation changes for the whole subtree and incidently
prevent the _q_postConstructorInit invocation for the children to do anything
(including setting the scene). Therefore _q_postConstructorInit should set the
scene on all the Node it will be creating creation changes for.
Change-Id: I07d4e80675758b9701cc941881f1faaa1c89af4b
Task-number: QTBUG-69352
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
| |
Change-Id: Ibbaae84a616afbe8be35904e9185be668e32f1c7
Task-number: QTBUG-69284
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Task-number: QTBUG-68933
Change-Id: I4226b8b9d70548b6921948c5ea47520f40f5df98
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since Qt 5.11, QDoc uses Clang to parse C++ documentation. Clang
requires a module header, as well as proper include paths, to
build a precompiled header and process the sources.
To do this, add a custom module header that pulls in all Qt 3D modules
- this way, we can continue using a single documentation project to
covers all of Qt 3D.
Fix all documentation warnings are caused by missing namespaces, QML
module/type names and typos, as well as a number of linking problems
and other minor issues.
After this change, the remaining documentation issues consist of
'No documentation for ...' warnings.
Task-number: QTBUG-67790
Change-Id: I38b91163c475a00cc1893e793240470c5409eb57
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
nodes\qnode.cpp(391,34): warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
backend\gltfimporter.cpp(345,19): warning: unused variable 's' [-Wunused-variable]
backend\gltfimporter.cpp(353,19): warning: unused variable 't' [-Wunused-variable]
text\qdistancefieldglyphcache.cpp(79,13): warning: private field 'm_glyph' is not used [-Wunused-private-field]
Change-Id: Id546607d95561efa7547fb5d7df0b03184bc5ed7
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
|
|
|
|
| |
Change-Id: I0a7334907e4b34df6955fb24832958b674d7b62b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change fixes multiple QDoc warnings for Qt 3D Core that are
related to how Clang parses the source code and the \fn QDoc
commands.
We still have a number of 'No documentation for ...' warnings left -
those are not addressed in this change.
Change-Id: Ia6394f453d7bd959bc4d4cc9347ac0039b80f661
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/animation/doc/src/qt3danimation-module.qdoc
src/render/backend/abstractrenderer_p.h
src/render/backend/buffervisitor_p.h
src/render/backend/renderer.cpp
src/render/backend/renderer_p.h
src/render/backend/triangleboundingvolume_p.h
src/render/backend/trianglesextractor_p.h
src/render/frontend/sphere_p.h
src/render/jobs/calcboundingvolumejob.cpp
src/render/jobs/job_common_p.h
src/render/jobs/pickboundingvolumejob.cpp
src/render/jobs/pickboundingvolumejob_p.h
src/render/jobs/pickboundingvolumeutils.cpp
src/render/jobs/renderviewjobutils_p.h
tests/auto/render/boundingsphere/tst_boundingsphere.cpp
tests/auto/render/commons/testrenderer.h
tests/auto/render/raycasting/tst_raycasting.cpp
tests/auto/render/render.pro
tests/auto/render/renderer/tst_renderer.cpp
Change-Id: I76633bc5a5a065e5f9ea62cc16563377e5c693a3
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
.qmake.conf
src/render/backend/trianglesvisitor.cpp
src/render/backend/uniform.cpp
src/render/jobs/calcboundingvolumejob.cpp
src/render/jobs/pickboundingvolumejob.cpp
src/render/jobs/pickboundingvolumeutils.cpp
Change-Id: Ib8305011c51710a3538c0b29f7022388f5244a38
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-61759
Change-Id: I2c61f9cf41124816d10da90783c7fb9ff6088fc4
Reviewed-by: Mike Krus <mike.krus@kdab.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This completes the fix for out of order event delivery related to
creation changes. We now ensure that QNodes used as values in singular
and list properties are fully constructed on the backend before they
are referenced in properties of other nodes.
Also added a check to not recurse into sending too many changes
when adding a child node.
Written with Svenn-Arne Dragly.
Task-number: Task-number: QTBUG-65956
Change-Id: I1470e0f685c81d1277ac04ad985ec1b76f1c27c0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
|