| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Adding the statement that is currently inferred to the worklist can
happen when it's a member access where the base is discovered due to
static QML lookup.
Change-Id: I0e1b7011c4cfd691320d9b8dbcc660a65a558853
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ia09b9ed4689b850a5575c72d63ca9677baf631e1
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Expose a generic method for loading connector plugins in
QQmlDebuggingEnabler and don't insist on the two known ones when
actually loading them. This allows third-party connector plugins
to be loaded, for example to pass QML trace events to a generic
tracing library.
Change-Id: I4f66dfabdbd0c3aff3676f7e2591e0a6c42f8f7f
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Reduces the number of messages that need to be translated.
Change-Id: I986d3202ac2dcc6c8e197e19c735dd66dad37f39
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Remove whitespace and formatting from the messages where possible
to reduce the chances of them being overlooked by the translators.
Change-Id: Ie0d0b29e03b13ae4f46dce1b57dd2a85d427c8c6
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Don't add second 'on' prefix if the user passed a signal handler name.
Change-Id: I9ba3e61503ca3f9f0ac880dbbb83ca790b98eb47
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ib2dc03a2535fcbdb10be2dab39593e8dc224fd93
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In some types, e.g. MouseArea, the "pressed" symbol refers
both to a signal and to a property. When trying to connect
to the signal, we get an error since the engine will resolve
to the property instead. We circumvent that by connecting to
the signal handler instead, i.e. "onPressed" for the "pressed"
signal.
Change-Id: I4212b752be4da4ec2209a3447ac41326f1e0bb5d
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This way callers of forceLayout get a relayout if the dimension
of a delegate that affects the itemview content size has just changed
but the itemview content size has not been updated yet.
This is useful because sometimes in the QML side you want to do things when the
item view delegate size has changed but need the item view content size to be already updated.
Change-Id: I846984a841e8e14c84d7a700a7ff736196b60afb
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It comes from the source() of the QMouseEvent which triggered it.
This makes it possible to distinguish real mouse events from those
that are synthesized from touch or tablet.
And for this we need to import QtQuick 2.7
[ChangeLog][QtQuick][MouseArea] Added mouse.source property
to enable distinguishing genuine mouse events from those that
are synthesized from touch or tablet events.
Change-Id: I568964f63981703bd23e05daac5288518f09d837
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This reduces memory churn as we don't have to reallocate the various
QPacket, QBuffer, QByteArray objects and their private classes all the
time. Also, subsequent packets often have similar sizes, which makes it
beneficial to preallocate the underlying byte array to the size of the
previous packet on clear(). In order not to carry the extra reserved
space in the lists passed to the debug server, we squeeze the byte
arrays before inserting them into the lists. That detaches and copies
them, which would have been done anyway when reusing the same packet
for the next message.
The result is a reduction in the number of temporary memory allocations
from QQmlProfilerServiceImpl::sendMessages() by about 75%.
Change-Id: Ief98cd7a93a2e8e840e111dee6b346cae00e06bf
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This reduces the overhead caused by the prepending of service names to
packets. When running the planets example from qtcanvas3d through
qmlprofiler the average message length, without service name, is 26
bytes. The average full packet, with name and length, is 64 bytes long.
In fact, the time between stopping the application and the last message
arriving in the profiling client is reduced by 30-50% with this
change.
Change-Id: I0ffdd0483d45bbe8b092c59a9dcd63c6dc59119c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This enables more parallel data processing and limits the memory
usage. Benchmarks with the "planets" example from canvas3d show that
this change reduces the time between the profiling being stopped and
the last events arriving in the profiling client by about 50%.
Change-Id: Iea16f9e2ae3adf584ec4a3c7fc766eaa21740f98
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QNX only export library functions into the std namespace.
Change-Id: Id5c479bb8b4540e26edabd6f50bc0f3f32e72432
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
|\ \ \ |
|
| |\| |
| | | |
| | | |
| | | | |
Change-Id: Icfa1d61fcc286c3418d4a625de11d2191336fa60
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Cutting the text in Password mode led to the text being deleted.
Cut and copy operations should not be allowed when echoMode is
set to a mode other than Normal.
Task-number: QTBUG-51231
Change-Id: If75cdaedac7478ecc1a5126ad4a5ecbf32acd1ab
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
QQuickSprite is used in QtQuickParticles. Export unconditionally.
QQuickScaleGrid is used in auto-tests. AUTOTEST_EXPORT it.
Unbreaks UBSan build, which requires access to the classes'
type_info.
Change-Id: I65b538fe0a4255d1b5c4e2e1212001d356382cb4
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Says GCC 6:
qtdeclarative/src/qml/types/qqmllistmodelworkeragent_p.h: In member function ‘QQmlListModelWorkerAgent::VariantRef& QQmlListModelWorkerAgent::VariantRef::operator=(const QQmlListModelWorkerAgent::VariantRef&)’:
qtdeclarative/src/qml/types/qqmllistmodelworkeragent_p.h:94:34: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
if (a) a->release(); a = o.a;
^
qtdeclarative/src/qml/types/qqmllistmodelworkeragent_p.h:94:13: note: ...this ‘if’ clause, but it is not
if (a) a->release(); a = o.a;
^~
This one is correct.
Change-Id: I6315e4afa6a0cf8bb4dd3a599bd7ffe7b6a5c1e4
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This in theory happen for attached property types.
Fixes Coverity CID 154272.
Change-Id: I113797dea8949877cbeac82bae57655170878d4c
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Added explicit where it was missing. This is not a source-
incompatible change, because code that breaks by this is
a bug. Let's not have this sitting around in an LTS.
Change-Id: Ic198750717799126b4e37817845a8ee4684d631f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It’s a bad idea to store a scene graph paint node as a member variable.
First of all, it should not access the node outside updatePaintNode(),
that is, outside the render thread. Secondly, the node is owned by the
scene graph and may be nuked whenever the scene graph feels so. Some
creative re-parenting easily triggers a case where AnimatedSprite ends
up accessing a node that was already deleted by the scene graph.
Change-Id: I89205ac36333a2fcb094121afa61b6409fda5883
Task-number: QTBUG-51162
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
... or equivalent.
QtBase 5.6 headers already compile that way, so let the other
modules follow suit.
Task-number: QTBUG-45291
Change-Id: Ied526fb2d7adc3a68946d6843a6bd6f475ebf864
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: Iea662214988c35473a8526c546f01ac5629308dc
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We use 64bit value encoding there, so gcc complained that memcpy would
write 8 bytes to a 4 byte pointer value.
Change-Id: Ib44372fb0e4bbacf0279930f7f5fcf4bbb5d48bf
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Given a simple ShaderEffect with supportsAtlasTexture:
ShaderEffect {
property variant source: myImage
supportsAtlasTextures: true
}
ensure the atlas subrect used by the ShaderEffect is updated if
myImage.source changes.
Change-Id: I4560b80ba38c3487b16f53411451fb9891920738
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
invalidate() releases resources, but doesn't clean up the materialCache,
resulting in a memory leak
Change-Id: I3cf7b7a3b977bb9aa295ef1824c384bcdf9494f2
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When a particle emitter is not yet complete, calling emittersChanged
through both groupChanged and systemChanged is unnecessary. Only connect
to those signals once after the component is complete, and then call
emittersChanged.
Also do not call emittersChanged when the particle system component is
not complete yet.
Change-Id: I67543ce80c9235bd5f72d95352ec96e97a1cf66b
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
According to IEEE754 a * t * t is not the same as a * (t * t), hence the
compiler won't lift t^2 out as common expression when in another place
'a' is replaced with 'b'. Now for the particles this doesn't matter as
it doesn't need super high precision, nor should any of the calculations
come in overflow territory. So by manually introducing t_sq(uare), the
compiler can remove duplicate t^2 calculations after inlining.
Change-Id: Ibfdb054e34945d7e78eb993fdcedfae886472e83
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This removes float<->double conversions, which makes the auto-vectorized
code even smaller.
Change-Id: Ic4319b11a3248e3034b65e7be047d99cba84716b
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Calls to these functions often occur in sets of two (x, y) or even more
(x, y, vx, vy, etc). By allowing the compiler to inline, it allows for
many CSE opportunities. Also, if your compiler is reasonably good, it
will also auto-vectorize the operations.
Change-Id: I4bffe4826671dd60683b941a569fc6a7b4b34da7
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The reusableIndexes represented a "free-list". Now the allocation
behavior in QQuickParticleGroupData::setSize was to grow by (large)
chunks. That means that as soon setSize was called, a (big) number of
hash entries was created, which are drained over time. This memory would
stay around (and probably unused) as long as the group was alive.
By using a bit vector, the amount of memory is much more compressed,
and finding an entry takes less time. The FreeList "caches" the next
free entry, because allocation and de-allocation behavior is that they
occur bunches: allocate a number of particles, use them, allocate the
same number.
Test case: samegame, 1 player, click 1 set of 3 stones, quit.
QQuickParticleSystem::emittersChanged(), before patch:
- 21 instr. inclusive, 15M in QQuickParticleGroupData::setSize
- 23,000 calls to QHashData::allocateNode
after:
- 13M instr. inclusive, 7M in QQuickParticleGroupData::setSize
- 0 calls to QHashData::allocateNode
Change-Id: If35ea5ed9b29129f210638f6f59275a24eb6afdc
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Samegame creates about 23,000 particles, so this reduces the memory by
~180kb on 32bit, so ~360kb on 64bit.
Change-Id: I0581524ab232b474c5d43abeabd7ebf6174e740f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
|/ / /
| | |
| | |
| | |
| | | |
Change-Id: I994ff9277fbbcebf2e45b3146859eb75264b83f4
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-35972
Change-Id: I51efc0a390053f1da41352e4242cc4339c15a372
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Phi nodes can only occur at the start of a basic block. If there are
any, they need to be subsequent to eachother, and the first phi node
should be the first statement in the basic-block. A number of loops rely
on this behavior, so they don't need to walk through the whole list of
instructions in a basic-block (e.g. the calls to destroyData in
BasicBlock::~BasicBlock).
Change-Id: I57763bc6abae271337b0b169cccd26e10ecd9b2d
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Every time one of the paramets was accessed, the chain of loads was:
phi->d->incoming->heapdata[i]
Now it is:
phi[i + offsetof(incoming)]
This also removes at least one malloc (for the Data), and usually two
(when the number of parameters is <= 4, which is most of the cases).
Change-Id: I953e784647148266ae5a49a93a203d0d22cdcb63
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Function::basicBlocks() returns a const reference to a QVector, so it
can safely be iterated over without qAsConst.
Change-Id: Ie9a17edfff7c1fbdc3601121935aef4b41338a35
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
BasicBlock::statements() returns a const reference to a QVector, so it
can safely be iterated over without qAsConst.
Change-Id: If4e47e0e113adbc87253bb3478208a3a38fed9e2
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QVarLengthArray is not shared, so it will not detach and make a copy of
the data when begin() is called.
Change-Id: I9114d99fc0cabb17d68993408bea01695754437a
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
By caching the group id in the particle emitter, and groups in the
painter.
Test case: samegame, 1 player, click 1 set of 3 stones, quit.
QQuickParticleSystem::emittersChanged(), before patch:
- 64M instr. inclusive
- 145,880 calls to findNode (29M instr.)
after:
- 21M instr. inclusive
- 0 calls to findNode
- 25 calls to QQuickParticlePainter::recalculateGroupIds (9800 instr.
inclusive).
Change-Id: I4aba9d50100513c6b7cdd230e30b3aecaf84485a
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
And when in the area, remove 3 unused functions.
Benchmark: start samegame, click '1 player', quit.
Valgrind result: removes/inlines ~90,000 calls.
Change-Id: If911b19b46bf163f7fe678623c068f960296f17e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Replace QHash<int, QQuickParticleGroupData*> groupData with a
QVarLengthArray, and make sure that those integers (== indices) are
continuous, re-used, and start at zero. That way a whole bunch of qhash
calls, hash node creatrion/deletion, and other overhead is removed.
Change-Id: Ie74fab8a3e3c7b6efa15b7b9ceff1d1a3e9820e9
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ie08653c2c89e48349cbc41e8bec5714574302963
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Also replaced some QVectors with std::vectors so calls to clear() will
re-use the storage instead of re-allocating it.
Change-Id: Ibe7d8509af8d264ea93376288cec15fec7c38f70
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-41216
Change-Id: I4456709ec5c4e61183fb4056a5f6d6bd9bd863d5
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is what 5.6 does. It's debatable if this is actually correct,
as logically we should report the same global profiling data multiple
times, when data for different engines is reported. However, there
is no practical benefit for such a "feature". It just wastes CPU time
and memory and it makes the client implementation more complicated.
Change-Id: I6d2a253d906d3d74c9d9b1f8fc952673c9da3e2a
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The test was assuming that pixel snapping did not change the minimum
size hint of the layout. An upcoming patch to qtbase will change that.
Change-Id: I53bed57d086aa9ba9972188b014140c95d7669b9
Task-number: QTBUG-41216
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: Ia1c2d53c77da29337b4453046ddb3d526c7015e4
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When read only, controls may not be edited or altered, and indeed, a read-only
control cannot acquire a selection (as it cannot be interacted with).
Leaving an existing selection breaks that implication, so clear it when becoming
read-only.
[ChangeLog][QtQuick][TextEdit/TextInput] If a control has a selection, it is now
cleared when becoming read-only.
Task-number: QTBUG-51115
Change-Id: Ife43b97ee3d6b780f09a938868c3ccb2f1b6e6e7
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|