Lars Knoll [Wed, 10 Jun 2015 11:32:20 +0000 (13:32 +0200)]
Simplify property capturing code
No need to inherit from a base class defined in QQmlEnginePrivate.
The capture handling can be a simple value based class without
virtual methods that is allocated on the stack.
Change-Id: Ib0ddf4afcaf154b3f953d8c9322f5bec196d7abf
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 15:51:47 +0000 (17:51 +0200)]
Fix some function signatures and remove an unused function
The returned value of these methods is never used, so save
some cycles and return void.
Change-Id: I7e2430130853af12de9685c4383197c80c151175
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 21:53:20 +0000 (23:53 +0200)]
QQmlBoundSignal doesn't need a vtable
Change-Id: I229740b6cff12a7b43a9ec5ab5b1c5a216843547
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 18:02:05 +0000 (20:02 +0200)]
Move setting the callback type for the endpoint to the constructor
Change-Id: I1881fc3e79f93e3cfe01a201d60956c460c0d196
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 17:55:42 +0000 (19:55 +0200)]
Save another pointer in QQmlBoundSignal
isEvaluating is not really needed as it's tightly coupled
to the isNotifying flag in the parent class. Use that instead,
to get rid of it.
Change-Id: Ic7274ac54e4d380567522c8a549b98d5ed1a1798
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 17:28:53 +0000 (19:28 +0200)]
No need to store the same data twice
Remove the index member from QQmlBoundSignal, as the
NotifierEndpoint already stores the index.
Change-Id: Idd8848ae1ca97b964ca1be0bab1c8aba540ace43
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 17:11:53 +0000 (19:11 +0200)]
Don't store the qmlscope object in a persistent
This doesn't make sense, as the persistent is never being
used. So either the scope object is being used from somewhere
else in which case it'll be referenced and marked from there,
or it's not being used in which case, we might as well collect it.
Change-Id: I56cb45282cbc795d4c59314c10491dedb9b7d478
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 16:38:29 +0000 (18:38 +0200)]
Get rid of QQmlBoundSignalExpression::ExtraData
The extra data was only used to delay initialization of the
required FunctionObject to the first time evaluate got called.
In addition, the constructor using ExtraData was only ever called
from the debugger. In that case performance can't be critical, so
we can just as well do function object creation at construction time.
This saves one pointer in the object.
Change-Id: I46ce9aa325f0fa95b5b0e374e9c07d673e454dd4
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 3 May 2015 15:02:55 +0000 (17:02 +0200)]
Get rid of QQmlAbstractBoundSignal
QQmlBoundSignal is the only class inheriting from it, so we might
as well get rid of the abstract base class.
Change-Id: I1b59a5d30d9a6ff1111e54f47530687b47f39d70
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Simon Hausmann [Tue, 12 May 2015 12:01:47 +0000 (14:01 +0200)]
Minor cleanup
Narrow the scope of the match offsets counter, as suggested by the clang static
code analyzer. In the second case we just wrote to the variable but never read
it.
Change-Id: I9e5e22bd27f892e76eccfea8b02f25795b689c36
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Tuomas Heimonen [Wed, 22 Apr 2015 08:21:06 +0000 (11:21 +0300)]
Fix to debug flag DATABLOB_DEBUG
Change-Id: I65ea0283c643371f3debd4a29a5fe4dbcb1c642c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 30 Apr 2015 22:08:55 +0000 (00:08 +0200)]
Store a Heap::String pointer in StringObject
Change-Id: I926c5bb2dd4f1613af6737d4200e568f0ec13d58
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 30 Apr 2015 21:50:50 +0000 (23:50 +0200)]
Get rid of the tmpProperty in StringObject
This was a bad hack. The new code is cleaner, and should
also perform faster in a couple of cases (avoiding the creation
of a temporary String that is then only thrown away).
Change-Id: Ia6f978e037506484adbc01a61606307d4645b343
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 30 Apr 2015 21:29:28 +0000 (23:29 +0200)]
Fix Object::getOwnProperty API
Don't return a Proprety pointer, this has issues with
StringObject. Instead pass in a pointer that will get filled
with the correct data.
Change-Id: I28536ca129f5be3a4a1bc9583223521458411195
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 30 Apr 2015 20:31:21 +0000 (22:31 +0200)]
Simplify QJSValueIterator code and make it GC safe
Change-Id: Ie6e4c0d9b8a0b10bedfe32aa6344a2fa8a9a3eac
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 16:54:24 +0000 (18:54 +0200)]
Fix the RegExpCache to be GC safe
Change-Id: I6c20c2c5fcdaefa0743f7c1f50cf6dd8d8edc753
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 30 Apr 2015 20:08:05 +0000 (22:08 +0200)]
Fix docs and remove an invalid ###
Change-Id: I702529114d3637e48d0159a6b540134b3117b0d1
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 17:18:40 +0000 (19:18 +0200)]
Make QV4::Script GC safe
Change-Id: I559458278cb6a0bbbc4da441034115aa4c72b058
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 17:15:25 +0000 (19:15 +0200)]
Store rootcontext in a GC safe way
Change-Id: If81d638c0ccd2b34df918ae5055e309f4eae031f
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 16:56:59 +0000 (18:56 +0200)]
Remove another wrong comment
The code below looks perfectly ok.
Change-Id: I966b54b0ea1fd71898c0305da61b046195ab86a5
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Michal Klocek [Tue, 9 Jun 2015 08:09:05 +0000 (10:09 +0200)]
Export QQuickAbstractAnimationPrivate
QtLocation requires different interpolators
in coordinate animation, this export is required
to be able to subclass QQuickPropertyAnimationPrivate
Change-Id: I23ed964d165fa5bce8487f8ac4c38ea00a3f3ba8
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Ulf Hermann [Fri, 12 Jun 2015 13:10:45 +0000 (15:10 +0200)]
Verify that debug client exists before interacting with it.
We don't want the tests to crash if the connection cannot be
established.
Change-Id: Iebd6d008f6a043b229738d607068ea822fcded9d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 16:36:32 +0000 (18:36 +0200)]
Remove two ### comments
The comments indicated that the code wasn't GC safe, but it looks
perfectly ok. So simply remove the comments.
Change-Id: Iad5ed8cd615a4c135c35639cfa734c370c73e379
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 16:31:14 +0000 (18:31 +0200)]
Fix the GC unsafe stack variable in Stringify
Change-Id: Icf90f43bedebe05a148499cd2de6726eaa993293
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 16:27:15 +0000 (18:27 +0200)]
Fix another place where we were not compatible with a moving GC
Don't store a vector of Heap::String's. Instead allocate them on the
JS stack and simply keep a pointer to them.
Change-Id: Ie12b5f4d56446234519b5e2f0b33120834e927ab
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 16:09:11 +0000 (18:09 +0200)]
Cleanup: Store a pointer to the engine not the context
The context is actually only ever used to get to the engine,
so let's rather store that one instead.
Change-Id: Id6ea8044ac3fb2c273b529f18c85af14e7104892
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 28 Apr 2015 16:02:23 +0000 (18:02 +0200)]
Fix GC problem with json conversion methods
The ObjectSet used to protect against recursion is not safe
against a GC that moves objects around. Fix this by storing
pointers to QV4::Object in there instead.
Change-Id: I88bcac330246a1c9180caed13be1f6ab5c40a6ae
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 26 Apr 2015 20:58:49 +0000 (22:58 +0200)]
Fix some function signatures
Add a const several places and pass values by pointer, not
reference. This allows us to also get rid of some Scope's.
Change-Id: I3b4c29c22511c947d024457e7b8fa2aaa6bec55d
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 26 Apr 2015 20:30:17 +0000 (22:30 +0200)]
Remove unused typedef
Change-Id: I19b077334705d00a2c8b2800f89962f04eb37212
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 26 Apr 2015 12:24:08 +0000 (14:24 +0200)]
Get rid of qv4qmlextensions
It only contained the proto for the value type wrapper. Instead
just create it lazily, but reserve space on the js stack for it.
Change-Id: I2301549b6dc4007bd5ac848e1dca25aafd583c4a
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Thu, 11 Jun 2015 15:49:00 +0000 (17:49 +0200)]
Disable pixmap cache and text input tests if QT_NO_LIBRARY
They depend on loading plugins.
Change-Id: Iee2ec4306a9ee2eae6447ee28552c010e4d31b8c
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Ulf Hermann [Fri, 12 Jun 2015 15:21:19 +0000 (17:21 +0200)]
Don't wait forever in QQmlDebugClient test
The test is intended to wait for 5 seconds but in fact it waited for
5 * 30.1 seconds.
Change-Id: Id2af7513fc7af6ab5e67d04d802a24744483f5e1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Ulf Hermann [Fri, 12 Jun 2015 12:55:49 +0000 (14:55 +0200)]
Initialize members of tst_QQmlEngineDebugService
Change-Id: Id9fe7d2bd630bcfe79634b3a4465ec7ad764d18c
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Caroline Chao [Tue, 2 Jun 2015 12:49:23 +0000 (14:49 +0200)]
QuickTest: Enable use of BLACKLIST file
So qml test functions can be blacklisted. Qml test functions have the
following format: TestCaseName::functionName.
Change-Id: Ifcaa8d77d8f0956472aa568dc6dbfcbdde4e5063
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Ulf Hermann [Fri, 12 Jun 2015 08:17:56 +0000 (10:17 +0200)]
qmlprofiler: Remove some dead code
Change-Id: If1f542bc73d5af259ea3c0a5da40786f8d6f3dbf
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Ulf Hermann [Thu, 11 Jun 2015 15:52:54 +0000 (17:52 +0200)]
Don't resolve the d-pointer when we don't use it.
Change-Id: Ia8551e28dcd237a536038ed7f658a3d1164706c6
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Gunnar Sletta [Thu, 11 Jun 2015 08:17:45 +0000 (10:17 +0200)]
Add QQuickWindow::TextureIsOpaque as option to createTextureFromImage.
Opaque textures can be a lot faster, so give this option without
forcing the user to reimplement her/his own QSGTexture class.
The old behavior was that createTextureFromImage() disregarded
TextureHasAlphaChannel and looked solely at the image's format. To
keep this behavior intact, we introduce a second opt-in flag to switch
textures from auto-detect to false, namely TextureIsOpaque.
[ChangeLog][QtQuick][QQuickWindow] Add TextureIsOpaque option to
createTextureFromImage()
Change-Id: I248db4bc5f7920864b6aa8d831ce24d23ad370ef
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Liang Qi [Tue, 9 Jun 2015 09:02:12 +0000 (11:02 +0200)]
QQuickPositioner: move paddings into extraData
Includes Column, Row, Grid and Flow.
Task-number: QTBUG-46529
Change-Id: Ib49e4fa08d95a94b3eca9fc20865acb9281aaad1
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Liang Qi [Mon, 8 Jun 2015 23:35:49 +0000 (01:35 +0200)]
QQuickTextEdit: move paddings into extraData
Task-number: QTBUG-46529
Change-Id: I67b8125d160213121b30fbb44fa834609d668099
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Liang Qi [Mon, 8 Jun 2015 11:59:09 +0000 (13:59 +0200)]
QQuickTextInput: move paddings into extraData
Task-number: QTBUG-46529
Change-Id: Ifa072dccdf2dc8c52c6865d13ccf1930c92ec51d
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Liang Qi [Mon, 8 Jun 2015 11:22:59 +0000 (13:22 +0200)]
QQuickText: move padding into extraData
Task-number: QTBUG-46529
Change-Id: Ifce670a59c367dc1b211ad2c7e797e3a7808cdb2
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Ulf Hermann [Thu, 11 Jun 2015 15:54:32 +0000 (17:54 +0200)]
Mark unused parameters as Q_UNUSED
Change-Id: I4f859916debfb39d822a9c2a9c8bdf675d70d702
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Lars Knoll [Sun, 26 Apr 2015 09:09:02 +0000 (11:09 +0200)]
Remove explicit marking of the typedarray constructors
These objects live on the JS stack and are thus marked implicitly.
Change-Id: I8295d8096d0a47861e0092c36e16b95db458de3c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 26 Apr 2015 09:02:40 +0000 (11:02 +0200)]
Get rid of TypedValue
Now that Managed inherits from Value, this class doesn't
make sense anymore.
Change-Id: I04e10f53ef305658d902bd0f1c7d7280068c0dc3
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 26 Apr 2015 08:56:38 +0000 (10:56 +0200)]
Get rid of StringValue usage in QJSValueIterator
Change-Id: I86badf9944b335041d16423be9a5434d1098cbb0
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Sun, 26 Apr 2015 07:22:17 +0000 (09:22 +0200)]
Move the StringValue members of ExecutionEngine onto the JS stack
Change-Id: Ib55c05f1730b7659e2f6fee7e1fa79c10c759167
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 23 Apr 2015 20:03:31 +0000 (22:03 +0200)]
Remove a global read-write QQmlBinding::Invalid variable
Change-Id: I3ca148ae021ffc349b943231cc749828b0b7816c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 23 Apr 2015 19:57:06 +0000 (21:57 +0200)]
Save one more pointer on each binding
Fold the isAddedToObject flag into the nextBinding pointer.
Reorder the members to avoid holes in the data.
Change-Id: I0a216940f52020a5d48a6ed05cc236c248161b08
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 23 Apr 2015 13:19:52 +0000 (15:19 +0200)]
Get rid of QQuickStateActionEvent::Reason
This doesn't do anything useful anymore afaict now that bindings are
refcounted.
Change-Id: I829facaa1bd463f90653a4190f08f8d04f31a6a4
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Friedemann Kleint [Wed, 10 Jun 2015 08:36:53 +0000 (10:36 +0200)]
Fix up tst_qquickbehaviors.
- Use QVERIFY2() instead of QVERIFY() in flaky currentValue().
- Use QScopedPointer consistently, remove delete statements.
Change-Id: I8b70d206d26219dba31b0d07216bcb18ff665632
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Tue, 21 Apr 2015 14:42:56 +0000 (16:42 +0200)]
Make bindings refcounted
Refcounting our bindings greatly simplifies our memory management
of the objects and ensures we safely clean them all up. In addition,
it allows us to remove the m_mePtr and weak reference handling from
QQmlAbstractBinding as we can safely handle this through the same
mechanism.
Change-Id: If23ebc8be276096146952b0008b62018f5d57faf
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
J-P Nurmi [Mon, 18 May 2015 15:37:19 +0000 (17:37 +0200)]
ObjectModel: add API for dynamic changes
Following the ListModel API:
- object get(index)
- append(object)
- insert(int index, object)
- move(int from, int to, int n)
- remove(int index, int n)
[ChangeLog][QtQml][ObjectModel] Added get(), append(), insert(), move()
and remove() methods.
Change-Id: I592e55b7c4c933a1100191bf5a9405944b347172
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Holger Hans Peter Freyther [Sun, 7 Jun 2015 09:37:49 +0000 (11:37 +0200)]
Add an assert and simplify the code
QV4::QObjectWrapper::wrap will unconditionally dereference
the engine. So simply assert that there is an engine.
Fixes Coverity CID 10631.
Change-Id: Ia645e32813b351abce1df06cfb63ef8ef956b9a6
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
J-P Nurmi [Wed, 3 Jun 2015 13:55:30 +0000 (15:55 +0200)]
Item views: don't assume that attached objects exist
Attached properties are only on objects created by QML. In case
a QQmlInstanceModel contains items that were created in C++, the
attached properties object doesn't exist. Adding the missing null
checks avoids a crash in such scenario.
Change-Id: I93148ac6cefa4cb83a8a7eb24a84b125aaa443d2
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Robin Burchell [Fri, 13 Feb 2015 21:36:48 +0000 (22:36 +0100)]
Remove QSGSharedDistanceFieldGlyphCache.
No known users of this interface exist, and not having it helps to make things
less complicated.
Change-Id: I3d749cfbde9e84e1c7b8dc5cbd952c5c51d347ee
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Ulf Hermann [Thu, 21 May 2015 08:35:42 +0000 (10:35 +0200)]
qmlprofiler: Allow specification of features to record
Task-number: QTBUG-43066
Change-Id: I963a5a483f961dd150f00de3d96c723c8b62edb8
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Ulf Hermann [Thu, 21 May 2015 15:48:58 +0000 (17:48 +0200)]
qmlprofiler: Record input events
Change-Id: Ib6413d97638b192377d7dbeb19ed0c2f733a06a1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Robin Burchell [Fri, 5 Jun 2015 09:12:11 +0000 (12:12 +0300)]
QQuickImageBase: Minimize the cost for devicePixelRatio setting.
* Don't convert QUrl to QString twice (that massively blows up transient
allocations and is very slow)
* Don't do anything at all if a sourceSize isn't set (checking it is super
cheap)
This fixes the performance regression (introduced in
428b92583ee2102c7ef16776a9b7785df7ff4e2c)
in the delegates_image creation benchmark (from ~520 up to ~540 items per frame).
Change-Id: I1cd350e42e763b7a771ff207d23e3e411810b268
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Sérgio Martins [Sat, 6 Jun 2015 15:57:33 +0000 (16:57 +0100)]
Add 28 QList::reserve() calls
Change-Id: Id4820ac458f48b10f2bf457144767efdef9e2c07
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Simon Hausmann [Fri, 5 Jun 2015 11:41:29 +0000 (13:41 +0200)]
Mark tests as unstable/flakey
It failed for example in http://testresults.qt.io/logs/qt/qtdeclarative/
baa4a85dbdc4de7d2b4b02b829729dfb46e51305/windows8x86_64windows8x86_64msvc2012developer-build_release_qtnamespace/
5aeb8542aafa40f84e974d7ee6346df2b97d1725/testlog.txt.gz while trying to integrate a 100% unrelated doc change.
Change-Id: I6b0b8e76d6cdc72e1343ac42a8277b22e3759c50
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Holger Hans Peter Freyther [Sun, 7 Jun 2015 10:09:07 +0000 (12:09 +0200)]
Remove dead code from the debug service
!dumpProperties is checked early and leads to an early return.
Remove the dead code.
Fixes Coverity CID 10616.
Change-Id: I61115043417f8f204e741697c9e1fd46b37258b5
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Holger Hans Peter Freyther [Sun, 7 Jun 2015 09:19:43 +0000 (11:19 +0200)]
Remove more unused code from the QQmlEnginePrivate
overloadError has always been false and the if (overloadError)
was dead code. The code has been commented out for a long time
and I started to extend the #ifdef. The QQmlError is only used
inside the commented out code so I have removed the error param.
This is fixing Coverity CID 10612.
Change-Id: I48f36ede6ba615a34b15caefb0eea5d7e898f120
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Holger Hans Peter Freyther [Sun, 7 Jun 2015 09:44:58 +0000 (11:44 +0200)]
Remove dead code QQmlComponent::createObject
There is an early check for rv and it is not being
re-assigned during the execution.
Fixes Coverity CID 10613.
Change-Id: I725404c1178dcf72c4444636ead5b0ec7109b2ad
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Martin Smith [Thu, 4 Jun 2015 13:13:08 +0000 (15:13 +0200)]
doc: Remove uses of \mainclass
This qdoc command is deprecated.
Change-Id: I4fd7ab301f1fa5b5b9b5db6a7d710ee2f147dfcb
Task-number: QTBUG-46476
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Robin Burchell [Sat, 6 Jun 2015 11:58:28 +0000 (13:58 +0200)]
QQmlData: Don't detach QObject::children list.
Use a const iterator.
Change-Id: I86177e866e3ec25c4201f9d9a36d23832b0b93db
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Robin Burchell [Fri, 5 Jun 2015 08:20:15 +0000 (11:20 +0300)]
QQuickWindow: Don't use an intermediate vector when diffing SG nodes.
Instead, turn the node build function into a generator which takes state and
returns the next node to operate on.
This removes ~10mb of transient allocations from the delegates_rect creation
benchmark.
Change-Id: I70fb46b1f134b82d781247e951785fc49576324a
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Ulf Hermann [Thu, 21 May 2015 13:37:52 +0000 (15:37 +0200)]
qmlprofiler: Output data after application quits in non-interactive mode
Change-Id: I38abed0d5af3bcc7be5fa9e21bde14be40a3ce1d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Ulf Hermann [Fri, 22 May 2015 08:59:20 +0000 (10:59 +0200)]
qmlprofiler: Redirect app stdout to qmlprofiler stderr
This seems to be a common technique for tools that wrap application
execution and potentially have their own output.
Change-Id: I4ca1bc5861d5b915b4ca07aec08ad06c8c73c8d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Ulf Hermann [Thu, 21 May 2015 15:13:03 +0000 (17:13 +0200)]
qmlprofiler: Improve options for trace output
* Remove the auto-generation of file names.
* Accept file names as parameters or from interactive commands
* Output to stdout by default for better scripting and quick preview
* Decouple output from clearing of data so that you can write the same
data multiple times.
Task-number: QTBUG-43066
Change-Id: Ia4cc3701cbac7c6f8948b11307130a5d6a2ff44c
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Ulf Hermann [Thu, 21 May 2015 13:39:28 +0000 (15:39 +0200)]
qmlprofiler: Only accept commands if we ask for them
This way we can shut down the input thread after the last command and we
cannot get commands before we can process them.
Change-Id: Ie1583a338da9c9df0e07c9e09ce185857c5ea66d
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Robin Burchell [Mon, 1 Jun 2015 16:03:04 +0000 (19:03 +0300)]
QQuickText: Don't store node engine per node.
Since these are only used during one particular phase of dealing with text, it
is extremely wasteful to heap allocate them and keep them around for the entire
lifetime of the node (~3kb of total allocation _each_ according to OS X).
Removing these cuts around 100mb of transient allocations off the qmlbench text
creation benchmark (and takes the total allocations during a test run from
~496 MB to ~389 MB). It also improves the approximate throughput for creation
of text items by ~5%.
Change-Id: I45c8a50879ed545da1fb13ab3c2c5d857b112cf7
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Robin Burchell [Tue, 2 Jun 2015 13:30:17 +0000 (16:30 +0300)]
QSGDistanceFieldGlyphNode: Use QVarLengthArray to avoid frequent allocation.
This adds a few more text items/frame on my macbook, and more or less halves the
amount of transient 608 byte allocations (42mb -> 25mb).
Change-Id: Ib1a67c8203f777a2f3b790ff3597d1af34eed2dd
Done-with: Gunnar Sletta
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Robin Burchell [Tue, 2 Jun 2015 17:27:21 +0000 (20:27 +0300)]
QQuickWindow: Move itemsToPolish from a QSet to QVector.
QQuickItem already keeps track of whether the polish flag has been set, so the
set provided no functional advantage here, and would have served to pessimize
processing of polish if anything - now adding items to polish and processing
them becomes constant-time operations.
The only operation that is pessimised is removing polish off an existing item:
but this should not be too horrid, unless the number of items to polish stacks
up tremendously.
Change-Id: I5d26dc899570a1e0186018850c21659e1f60a6b3
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Sérgio Martins [Tue, 26 May 2015 10:01:01 +0000 (11:01 +0100)]
Remove bogus dynamic and static casts.
QQuickItemPrivate::get() already returns the correct type.
Change-Id: I580d78e72f2ac20abb575dac7ffe468ab10b5c40
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Robin Burchell [Mon, 1 Jun 2015 15:39:51 +0000 (18:39 +0300)]
QQuickTextNodeEngine: Remove unused member.
Change-Id: I467d8e2c690592cdca84ef3c539afe6df908c9af
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Robin Burchell [Wed, 3 Jun 2015 11:48:31 +0000 (14:48 +0300)]
QSGBatchRenderer: Store the last known free page index.
Performing a full scan of the pages each time a new node is to be allocated is
wasteful. Instead, store the last known free page, and search from that position
forwards. When an item is freed, reset the last known free page to search
forward from that position. If no free page is found, don't fall back to a full
scan - just allocate a new page.
The creation of lots of new items is a pretty common pattern (PageStack on
mobile and similar), thus it makes sense to optimize for it and avoid scanning
where possible.
This takes the time to instantiate 142k Rectangles in a single
component from 2433ms on the render thread to 495ms on the render thread (down
slightly from 511ms when using no paging at all, and down from 638ms on 5.3.1).
Separately to this, it may make sense to increase the size of pages, but
ideally, this will wait until there is a shared pool between renderers.
Change-Id: I2b335e230bc28fffcbb38b3fb43f3d441789c256
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Marc Mutz [Sun, 31 May 2015 15:09:44 +0000 (17:09 +0200)]
Fix users of QTextLayout::additionalFormats to use the new API
QTextLayout::additionalFormats setters and getters using QList<FormatRange> have
been deprecated; port to the QVector versions.
Change-Id: I6702430c09b30aa033fe4e34f39a9aa3350e471b
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Lars Knoll [Mon, 20 Apr 2015 13:07:40 +0000 (15:07 +0200)]
Some cleanups to QQmlRefCount
Rename QQmlRefPointer::take to adopt, as it's a better fit with
the semantics. Get rid of the assignment operator from a raw pointer
and add a Adopt argument to the constructor.
Change-Id: Ia1ebe42b24570f32543e783f91eb3206602772a2
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Mon, 20 Apr 2015 07:38:07 +0000 (09:38 +0200)]
Replace bindingType() method by a virtual getter
This removes the need to save some bits in the abstract binding
object, and should make it easier to move QQmlAbstractBinding
over to be reference counted.
Change-Id: Ib46cb3217f3dc462f1dcaa6153d90ea2f7401f48
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Fri, 17 Apr 2015 12:21:25 +0000 (14:21 +0200)]
Move the writeBinding method into QQmlBinding
It's only called from there; this simplifies the code and will allow
some further optimizations.
Change-Id: I1f0befe620beaa0bbf961fc829881ef7b5c2e435
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Simon Hausmann [Fri, 5 Jun 2015 08:36:37 +0000 (10:36 +0200)]
Blacklist unstable test
Change-Id: I1631d38f8c94e8d663df057f2c417c7ef2045949
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Sérgio Martins [Wed, 3 Jun 2015 22:23:50 +0000 (23:23 +0100)]
Add missing QVector::reserve() calls
Change-Id: Iab7c9949941559b4773e5d4a0406dc58cfc70adb
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Mathias Hasselmann [Wed, 12 Mar 2014 13:05:22 +0000 (14:05 +0100)]
Document API bug for QQmlContext::nameForObject()
QQmlContext::nameForObject() doesn't need a mutable QObject, therefore
the QObject argument should be marked as const.
Change-Id: Ib3cfe197cb4a615850771ccc303796a6c205873e
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 28 May 2015 13:26:10 +0000 (15:26 +0200)]
Fix resolving of nested alias properties
When looping to resolve nested aliases, make sure we use the
correct property index to determine the vme meta object that
contains the next level of alias data.
Change-Id: Id2077b164a4591c86ccb63e8ed3bb997d719731c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 16 Apr 2015 20:26:44 +0000 (22:26 +0200)]
Move the target property index into the common base class
This unifies some more code between the different binding
classes
Change-Id: I891dc9358cf9598a0c1e21df8a62d6f8a4193985
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 16 Apr 2015 20:15:27 +0000 (22:15 +0200)]
Move the target object into the base class
Change-Id: I912d7665b49c8e9b2d38e78bfcfc4b3d39ca7459
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 16 Apr 2015 13:40:33 +0000 (15:40 +0200)]
Remove the QQmlPropertyData from the binding
Simply store the encoded property index instead.
Change-Id: I235030c3d658df3e5df6efafc9c5b2c22200e0a8
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Simon Hausmann [Thu, 4 Jun 2015 11:08:44 +0000 (13:08 +0200)]
Blacklist unstable tests for now
Change-Id: Ia29b103c33afd9aafe9ee36ee4447fab17fe00c7
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Thu, 4 Jun 2015 08:11:57 +0000 (10:11 +0200)]
Make QQuickGridView test independent of mouse speed
In order to prevent it from accidentally hitting the end of the grid
prematurely we insert another mouse click.
Change-Id: I3f1ecc65af4b60aebf383192cde9a3a6fdeb5c8a
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Wed, 3 Jun 2015 13:01:23 +0000 (15:01 +0200)]
Decouple flickable stopAtBounds test from mouse event timing
We don't really want to know if the flickable is still flicking at the
end of the flick() call, but rather if it has been flicking at some
point.
Change-Id: Ib6c89023042b2a45e66f1825a699bb47dc6e13ee
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Mon, 1 Jun 2015 09:00:55 +0000 (11:00 +0200)]
QQuickFlickable: Send synthetic release event through QCoreApplication
As we do this with the press event, we have to do the same with the
release event. The application tracks the state of mouse buttons and
will get confused if an additional press event without symmetric
release event shows up.
Change-Id: Ia27a96fa5b207ed8aaad913caf7575de112e8606
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Thu, 28 May 2015 11:02:54 +0000 (13:02 +0200)]
Fix flickable autotest
* Make sure we always wait for window activation, not only exposal.
* When clicking or releasing, first move the mouse to the right place.
* In returnToBounds() show() the window before we rely on its event
loop.
* In rebound() reduce the delays as mouse events get delivered
earlier now and the movement might stop and restart if we wait for
too long between subsequent mouse moves.
Most of these problems have been exposed by commit
66050f2ac875d451bec31e0d8ff507795b5b18d6 in qtbase.
Change-Id: I5a3bc1e4ba92362d69180c8fde33eca47b4b9375
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Wed, 27 May 2015 14:43:04 +0000 (16:43 +0200)]
Move the mouse to the right place before simulating a click
Otherwise the mouse event can be split in two and only a mouse move
will be immediately delivered. This problem was exposed by commit
66050f2ac875d451bec31e0d8ff507795b5b18d6 in qtbase.
Change-Id: I9d458bd446c754f566d1de412eb90a43f0686ab9
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Wed, 27 May 2015 13:04:48 +0000 (15:04 +0200)]
Wait for window activation, not for exposal in key press test
The previous version only worked when simulated input events were
queued and thus incidentally delivered after the window activation
that follows the exposal.
66050f2ac875d451bec31e0d8ff507795b5b18d6 in qtbase made event delivery
synchronous for simulated input events.
Change-Id: Ieea3d1360b32f3466059a2ffe570d6dc633f81dc
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Thu, 28 May 2015 17:20:48 +0000 (19:20 +0200)]
Allow for some delay on starting transitions in flickable test
Change-Id: I218ea874def6060e147cb05eafeb857a9e66eb44
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Simon Hausmann [Thu, 4 Jun 2015 08:24:46 +0000 (10:24 +0200)]
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
src/qml/jsruntime/qv4engine_p.h
src/quick/items/qquickitemsmodule.cpp
src/quick/items/qquicktext.cpp
src/quick/util/qquickpixmapcache.cpp
tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
Change-Id: I90ecaad6a4bfaa4f36149a7463f4d7141f4a516a
Friedemann Kleint [Wed, 3 Jun 2015 12:27:27 +0000 (14:27 +0200)]
tst_qquickwindow: Prospective fix for instability of cursor test.
FAIL! : tst_qquickwindow::cursor() Compared values are not the same
Loc: [tst_qquickwindow.cpp(1444)]
Check that no windows are leaked in slot cleanup and fix all
leaking tests.
Position the window and enlarge it to fix the warning:
WARNING: tst_qquickwindow::cursor() Mouse event occurs outside of target window.
Add window titles to tests.
Replace QVERIFY(a == b) by QCOMPARE(a, b).
Change-Id: Ida892e8a8d7d5f40d4f50787608940dbffc7a29d
Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com>
Joni Poikelin [Fri, 29 May 2015 05:13:58 +0000 (08:13 +0300)]
Fix flickering when QQuickWidget becomes visible
QQuickWidget used short delay before rendering. This caused
black area to flash on the widget briefly. Instead of scheduling
redraw, render scene immediately.
Task-number: QTBUG-46387
Change-Id: I342d96a1aaef3244190221807b0d816815697623
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Laszlo Agocs [Wed, 27 May 2015 13:39:18 +0000 (15:39 +0200)]
Document the render loops a bit more
Task-number: QTBUG-42699
Change-Id: Ib8a1690bfe38bd0686799fac390207c26e5a6812
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Alex Blasche [Thu, 28 May 2015 09:07:19 +0000 (11:07 +0200)]
Purge use of VisualDataModel from docs where DelegateModel is required
They are the same types except that VisualDataModel is deprecated
and uses a different import statement. Now, references to VisualDataModel
are only used where we explicitly refer to the replacement/deprecation.
Change-Id: I1e68eb5784235a00233b3882c3d91e21e32af7d1
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>