| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
There are ways to close the window without hitting the code paths in the
render loops that delete the animation controller. Probably if no frame
was ever rendered.
Change-Id: If3e9d2051525c4ff50eda19084c967578fe4f4b0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
| |
Check for null pointer to controller.
Fixes: QTBUG-64402
Change-Id: Ic84bdc9c5cde0e65da436e1c85b40eaf6e3ed77a
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
From now on we prefer nullptr instead of 0 to clarify cases where
we are assigning or testing a pointer rather than a numeric zero.
Also, replaced cases where 0 was passed as Qt::KeyboardModifiers
with Qt::NoModifier (clang-tidy replaced them with nullptr, which
waas wrong, so it was just as well to make the tests more readable
rather than to revert those lines).
Change-Id: I4735d35e4d9f42db5216862ce091429eadc6e65d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\
| |
| |
| | |
Change-Id: Ie5d0b2d9bece98553262f8af1ce66459f03a73e1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Otherwise we may get called back when the window's scene graph is ready,
but we don't have a controller anymore then. This leads to a crash.
Change-Id: I8075619e1fd3c69ca0f7d0b1d72952b8cc5040f8
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|\|
| |
| |
| | |
Change-Id: I71275a2076c3d32ee2896571be882067320a2e9e
|
| |
| |
| |
| |
| | |
Change-Id: I84e363d735b443cb9beefffd14b8c023a37aa489
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|/
|
|
|
|
|
|
|
|
| |
The costly addition is down to that we're performing TransformJob::postSync()
which we did not do before. This is superfluous though, as we do the same
bit of code in preSync() and there is no way the pointers we're checking
for can change between pre and post. Only missing bit is to move the invalidate().
Change-Id: I96420c14e11a5a33997ed6fac6a78695a917a8f2
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous attempt to fix this (05a88ef) had to be reverted (7fe0d1a)
because Q_ASSERT(m_controller) in updateCurrentTime() failed in QQC1
auto tests. It seems that m_controller can be null when m_internalState
is still State_Starting.
Task-number: QTBUG-59034
Task-number: QTBUG-59953
Change-Id: I07ceec8fe4e66ba0571092b4385d8140035a4b33
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
Reviewed-by: Aleix Pol
Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
|
|
|
|
|
| |
Change-Id: Ie1f601c6ae4c6c5d8d23b14a6670979d9c24e209
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 05a88efb266ec3b7b16d6db0d971c21ae7f45c9d.
It caused some test failures in qtquickcontrols and qtquickcontrols2.
Task-number: QTBUG-59326
Task-number: QTBUG-59327
Change-Id: I9a26a4518bf7c106372916761aae69ba65f6df9e
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
|
|
| |
Qt Quick Controls 2 StackView auto tests exposed an issue that animator
proxy jobs keep ticking after being unassociated from a window.
Change-Id: Ib9b3a0e02ac4cc3f3e98ddf05c8b01f0bbd614d3
Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/qml/compiler/qv4ssa.cpp
src/quick/accessible/qaccessiblequickview_p.h
src/quick/items/qquickmousearea.cpp
src/quick/util/qquickanimatorjob.cpp
tools/qmlplugindump/main.cpp
Change-Id: I84474cf39895b9b757403971d2e9196e8c9d1809
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-58549
Change-Id: Iaa2a9cd8b86e8c2bb7e20b99fabad99d0bd51799
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Asserts were added to qquickanimatorjob.cpp that check for a current
opengl context and which thread they are current on. This is not
relevant for non-opengl builds.
Change-Id: I9714c99cb6a0374fbb983a037c4fc24a99c8a645
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-56572
Change-Id: Ia2dd03d4e1b372b8d9ed0fd5e17683f63bde8534
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|/
|
|
|
|
|
|
|
| |
This reverts commit ac765c4eca202e60f3e28d731f7ba3a77401fef5.
Fix for problem in next commit.
Change-Id: Ie6b0cb09e38e5063d943662be51952dc6da9a533
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
|
|
|
|
|
|
| |
Change-Id: I4e7fd5e9781dec7ee6ed8807ca1a51c937f6f9f3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rename the C++ sources and classes. The QML type name remains the same.
No changes in functionality.
The shader effect, node, material (and uniform animator and particles and
bits and pieces here and there...) are highly interconnected and do not
follow the usual design practices for Quick and the scenegraph and the
adaptation layer. Therefore while we aim for keeping full compatibility
for GL apps, other backends will likely get a different ShaderEffect item
implementation.
The C++ class QQuickShaderEffect itself is currently a dummy with an
unchanged API. It is not in use for now but forms the basis for the
implementation for other backends. This will be covered in future commits.
Change-Id: Ia39ce4b303f8f33e2f241d11e35fa62423e43127
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
|
|\
| |
| |
| | |
Change-Id: If33197b616de3476811f0161d4ecd8e7d004756c
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This change also fixes the build of two benchmarks, tst_affectors
and tst_emission.
Conflicts:
src/plugins/qmltooling/qmldbg_native/qmldbg_native.pro
src/qml/qml/ftw/qhashfield_p.h
tests/benchmarks/particles/affectors/tst_affectors.cpp
tests/benchmarks/particles/emission/tst_emission.cpp
tests/benchmarks/qml/pointers/pointers.pro
tests/benchmarks/qml/pointers/tst_pointers.cpp
tests/benchmarks/qml/qmltime/qmltime.pro
tests/benchmarks/qml/qquickwindow/qquickwindow.pro
Change-Id: I595309d1e183c18371cb9b07af6e4681059de3b2
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Handle a duration of zero in animators using the same approach as
animations.
Task-number: QTBUG-39766
Change-Id: I1628292ad259ec5ec5d3bb0770440efa5fa6dad0
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add a test for render thread Animators.
Change-Id: Iddb11f734ccec00d76ca99cd8349cbb65750e784
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently the Qt Quick module depends on either the OpenGL or OpenGLES
headers being available at build time. Since we are adding support for
adaptations that do not depend on OpenGL, it should be possible to build
Qt Quick in environments that do not have OpenGL development headers.
This does present many challenges though because in some cases GL types,
and classes that require OpenGL are part of the public APIs. However
since these classes were never available when QT_NO_OPENGL was defined,
it should be possible to redefine the function signatures under this
scenario, since it's not possible to break binary compatibility if there
never were any binaries to break compatibility with.
One of the bigger changes that was necessary to facilitate this change
is creating interfaces out of QSGContext and QSGRenderContext. Here the
default behavior was usage of OpenGL directly, even though subclasses
could override all OpenGL usage. Making them interfaces should bring
QSGContext and QSGRenderContext more in line with the other classes
present in the adaptation layer.
Change-Id: Iaa54dc0f6cfd18d2da1d059548abf509bd71f200
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/
Updated license headers to use new LGPL header instead of LGPL21 one
(in those files which will be under LGPL v3)
Change-Id: Ic36f1a0a1436fe6ac6eeca8c2375a79857e9cb12
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.h
tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
tests/auto/quick/qquicktextedit/qquicktextedit.pro
tests/auto/quick/qquicktextinput/qquicktextinput.pro
Change-Id: I95d2c20a8619e5b8fa361c941a16dd8dce3e04e7
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We're hitting crash problems in controls2 auto tests where
QQuickAnimatorController::stopProxyJobs() contains dangling pointers
in m_proxiesToStop. The window for these proxy jobs had been already
reset, so the destructor of QQuickAnimatorProxyJob was not removing
it from QQuickAnimatorController's m_proxiesToStop.
Change-Id: I89e3b174c86dfb217a555f07ee1ce4c42cbcf204
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|/
|
|
|
|
|
|
| |
Spotted while profiling an application with a large number of OpacityAnimators.
qmlobject_connect is around 1/3 the time of a regular connect.
Change-Id: Ib37d79c6478d13c1acb6b191b635d9780c22ed00
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/qml/debugger/qv4debugservice.cpp
src/qml/jsruntime/qv4value_inl_p.h
src/qml/jsruntime/qv4value_p.h
src/qml/memory/qv4mm.cpp
src/qml/memory/qv4mm_p.h
src/qml/qml/qqmlnotifier_p.h
src/qml/qml/qqmlproperty.cpp
src/quick/items/qquickflickable.cpp
src/quick/items/qquicktextedit.cpp
tests/auto/quick/qquickwindow/BLACKLIST
The extra changes in qqmlbinding.cpp are ported from changes to
qqmlproperty.cpp that occurred in parallel with writeBinding() being
moved to qqmlbinding.cpp.
Change-Id: I16d1920abf448c29a01822256f52153651a56356
|
| |
| |
| |
| |
| |
| |
| | |
Found with GCC's -Wcast-qual
Change-Id: I66a35ce5f88941f29aa6ffff13dde502fccefb1d
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
|/
|
|
|
|
| |
Change-Id: I311e66c64a79581739f80e124fd58da2aaded549
Task-number: QTBUG-45220
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
|
| |
- Output the state.
- Add output to QQuickAnimatorJob.
- Add a private export to the debug operator for use by
QQuickAnimatorProxyJob to format its contained job.
Task-number: QTBUG-45220
Change-Id: Ic64bb5d949864de1c4fb322d53acc3e253977e5d
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
|
|
|
|
|
|
|
|
|
| |
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.
Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9
Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/quick/items/qquickaccessibleattached_p.h
src/quick/items/qquickwindow.cpp
src/quick/scenegraph/qsgthreadedrenderloop.cpp
Change-Id: I8bf07487a75f9d1b0d6efa5914dd06875fc9654d
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The use of one QCoreApp::postEvent() per completed animation added up
to a very large overhead when 1000+ animators were used at the same
time. This is very relevant for sprite games and similar and deserves
to work at least as good as normal animations.
Instead, store the animations to stop and stop then on the gui thread
later as a result of frameSwapped. For the benchmark in question this
allows for roughly double the amount of animators being started and
stopped.
Change-Id: Iae3d1ec1502ee1908fdbba708fa9f976aa230064
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We originally had the groupnode to simplify adding and removing clip /
effect / opacity nodes to the item tree at a time when the renderer
was a bit more trivial and only did a single pass over the tree during
rendering. The runtime cost at the time was negligible. The
QSGBatchRenderer has a bit more logic, so the extra node now costs a
bit more. In addition to extra memory, we need to allocate shadow
nodes for it and put those into the renderer's internal shadownode
hash.
This removal increases the performance of adding / removal of simple
items by ~10% in addition to reducing the number of nodes in the
scene graph by up to 1/3.
Change-Id: I8cd64984f868d75820e25d33dfdbebd4d20651fe
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Every time initialize() was called, we would increment the ref on
an item. However, initialize is called every time the job is started,
so the ref would increase and only decrease once, leading to a leaked
helper. Change it to only increment the first time.
A different problem was that when an item was destroyed, we could run
the risk of the QQuickTransformAnimatorJob destructor being called
with the helper's item being null. This would lead to the helper not
being removed from the cache and a dangling helper would remain in the
transforms cache. Now change it so that when a target is destroyed, we
explicitly destroy the helper as well (as no animation can happen then
anyway) and reset all pointers in the job.
Change-Id: I1ce76db134bbc1871d32f1224ba5b68a4a4eeafa
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
src/qml/jsruntime/qv4arraydata.cpp
src/quick/scenegraph/util/qsgatlastexture.cpp
Change-Id: Ic4c96066d5c37dcf0d5446baed590ea005d445ce
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We had several separate issues relating to how the jobs were cleaned up.
The first was that upon getting setWindow(0), the animator did not
reset m_controller to 0, leading to the starts() coming after that to
post null jobs to the controller. This would later crash in
beforeNodeSync as the starting job was null.
The second issue was that during shutdown, QQuickAnimatorProxy
would try to delete jobs on the controller which was already
deleted. The controller is deleted on the GUI thread regardless
of render loop, so this was solved with a QPointer.
The third was that we were a bit too aggressive in trying to clean up
jobs on the GUI thread, so we introduced a new bool which gets set to
true in startJob() so that Proxy::deleteJob() knows who owns the job.
Task-number: QTBUG-37833
Change-Id: I1b6221a2c1ce2bfd0758801b950cda00ff6899d0
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- 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>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/qml/jsruntime/qv4include.cpp
src/quick/items/qquickrendercontrol.cpp
src/quick/items/qquickrendercontrol_p.h
src/quickwidgets/qquickwidget.cpp
Change-Id: Ib2dc0051a38cd283a37a7665eb4a76f6f7ec8b15
|
| |
| |
| |
| |
| | |
Change-Id: I35850e279dae596edb9a1b93143d6aa195221b41
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
|/
|
|
|
|
|
|
|
| |
1) Don't fail the assertion in the animator jobs if we don't have a context
2) Delegate the opengl context check in QQuickWindow::createTextureFromImage
to the QSGContext
Change-Id: I1b248895dcd6db406f1af8866fd0052dd7564899
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The non-threaded render loops would clean up the nodes for a window
when it was hidden, but the animators kept running and had a reference
to the deleted nodes. This was not a problem for the threaded render
loop as it would wipe the animator controller as well which would
clean the jobs.
Fix it by triggering a reset of all nodes in the animators when the
window is told to clean up. If an animator is ticked when it doesn't
have a node, it will simply do nothing. When the window is made visible
again, we call initialize on all animators to find the new node.
Task-number: QTBUG-37995
Change-Id: Ie5609d95db29f4b2b30ca5bf641dce901e528389
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
| |
Profiling shows Qt Creator spends 2% of its load time normalizing
Change-Id: I58132e11ab5fc942b04925c3bcc919165784a5d1
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the design from posting events for starting and stopping
to use the scene graph's existing 'sync' point. This gives
much higher predictability and makes both ownership and cleanup
cleaner and also reduces intermediate states while events are
waiting to be delivered.
Task-number: QTBUG-34137
Change-Id: I069ac22acbddaa47925b8172ba98ac340fe9bf8d
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
| |
When the size changes, so will most likely also the transform
origin, so we need to check for it and update accordingly.
Task-number: QTBUG-34140
Change-Id: Ic3d6c1ac599db499ab196a8cbe550308a75e837f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Backwards animations are not supported for animators as the
animation system cannot handle uncontrolled backwards animations.
Make sure we write back values only for the animators that have
run at all.
Clockwise rotation to 0 can easily end up on 360 as a result
the _q_interpolateClockwise function not being entirely correct.
Change-Id: If69b8555a1361f46600a40e80419b65438c18097
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
| |
Failure to do so will not repaint scene graphs which only
has changes from the animator.
Change-Id: Id420775d704df17379ca9b0eecd543fd3829fd00
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
| |
Change-Id: I6d9ece93a75782d524c211fc81a43f4311a38571
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|