Robin Burchell [Wed, 24 Jun 2015 12:44:26 +0000 (14:44 +0200)]
QJSValue: Remove no-longer-existent v8 from benchmark.
Change-Id: Ie83a4ec1d3eb20297bbb5a4a6a400091d9568a1f
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
J-P Nurmi [Wed, 24 Jun 2015 13:57:01 +0000 (15:57 +0200)]
qquicktextedit_p_p.h: cleanup unneeded include
A forward declaration of QQuickTextControl is enough. This solves
a linking error on Windows, when QQuickTextAreaPrivate inherits
QQuickTextEditPrivate.
Change-Id: I05a2fa5745e27eea51f7c0a5a0360c3fbb563544
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Robin Burchell [Sat, 6 Jun 2015 09:19:38 +0000 (11:19 +0200)]
QQuickAnchors: Use a simple sorted list rather than a QSet to remove duplicates.
This is significantly less allocation-happy than QSet (removing around 30mb of
transient allocations when creating 5000 instances of one of the creation
benchmarks).
It increases the count of delegates_tworects per frame from ~520 per frame to
~600 per frame for me.
Change-Id: If7edd56890c93e0caf7957d08e80506e87491773
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
J-P Nurmi [Thu, 18 Jun 2015 19:38:57 +0000 (21:38 +0200)]
Export QQuickTextInputPrivate and QQuickTextEditPrivate
...so that QtQuick.Controls 2 TextField and TextArea can inherit them.
Change-Id: I9383927c51a70848753a9f41f374d4161000fbb1
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Robin Burchell [Mon, 22 Jun 2015 12:25:31 +0000 (14:25 +0200)]
QQuickImageBase: Use the static form of QFile::exists().
This avoids the penalty of creating a QFile along with a private, engine, etc
when we're going to do nothing with it. This raises the delegates_image creation
benchmark from ~450 to ~500 per frame for me.)
Change-Id: I7665a55a3ee23102325f5d5f330967743b0c8538
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Robert Griebl [Wed, 17 Jun 2015 14:38:47 +0000 (16:38 +0200)]
Force completion of asynchronously loaded components.
[ChangeLog][QtQuick][QQmlComponent] Synchronously complete the loading of a
Asynchronous QQmlComponent, if a PreferSynchronous QQmlComponent is created
for the same url (given that this url does support synchronous loading).
Change-Id: I3291d0569a69bac2aeb4815f1068a426ef2707ef
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Laszlo Agocs [Fri, 19 Jun 2015 10:19:06 +0000 (12:19 +0200)]
Add a property to enable vertical mirroring in QQuickFramebufferObject
[ChangeLog] Added a mirrorVertically property to QQuickFramebufferObject.
Task-number: QTBUG-41073
Change-Id: Ib69cbfe7b2f6ae42913d857460431195ff92e53a
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Matt Vogt [Mon, 22 Jun 2015 07:40:02 +0000 (17:40 +1000)]
ListView/GridView contentHeight should include delayRemove-d items
When one or more items are in delayRemove state, the ListView's
contentHeight property should include their height. This previously
failed if the delayRemove items were at the end of the visibleItems
list. Also applies to GridView.
Change-Id: Id839e850367a3503123e8ac81dac6ebdccef1a1f
Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
Julien Brianceau [Wed, 17 Jun 2015 14:39:11 +0000 (16:39 +0200)]
V4: add mips32 disassembler.
Add a rudimentary disassembler for mips32 instruction set.
Although few instructions might be missing, the whole set from
MacroAssemblerMIPS should be covered.
Change-Id: I9b1b9b40537b99098ca65036f671651d04fe1ab6
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Ulf Hermann [Thu, 11 Jun 2015 15:57:56 +0000 (17:57 +0200)]
Don't try to load (or unload) QML plugins if QT_NO_LIBRARY
Most of the code already has those #ifdefs, so let's add the missing
ones.
Change-Id: I2a46d5ab660daa837d9ce432184d0b55818a5dc1
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Fri, 12 Jun 2015 11:07:39 +0000 (13:07 +0200)]
Smaller code cleanups
Change-Id: Id3bc6ea5615a462d7a41ceb1fa18b4fb090e0d51
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Friedemann Kleint [Wed, 13 May 2015 07:59:40 +0000 (09:59 +0200)]
Port from Q_ENUMS to new macro Q_ENUM.
Remove Q_ENUMS in favor of the new Q_ENUM macro which provides registration
as meta enum and a debug stream operator.
QQuickXmlListModel::Status is left unmodified as porting it creates
a link error in tst_qquickxmllistmodel.
Change-Id: Id5e6192c9f85e7c94332508fbd91873ddda31e1a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Erik Verbruggen [Tue, 16 Jun 2015 08:14:23 +0000 (10:14 +0200)]
V4: fix failing tests for right shifts over 0 bits on non-Intel.
Change-Id: I6a0428be2b81cb6723b591356f78712ef2cc0b8b
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Mon, 15 Jun 2015 14:41:24 +0000 (16:41 +0200)]
Cleanup retrieval of scope and context objects
Change-Id: I9c6174181f950bc4f829727dc6acdfe82fa4e894
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Mon, 15 Jun 2015 14:09:39 +0000 (16:09 +0200)]
Cleanup signature of get/setProperty in the object wrapper
Change-Id: I3612a8fe952656da2239e4baf0b460bef46e3f62
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Mon, 15 Jun 2015 13:52:51 +0000 (15:52 +0200)]
Add some typesafety
Even though the goal is to get rid of the contextwrapper, this
helps in the meantime.
Change-Id: I234ef39f74fb0eee78710884de6a1c90763bce74
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Thu, 11 Jun 2015 14:35:11 +0000 (16:35 +0200)]
Clean up ExecutionContext's for QML
Create a specialized QmlContext instead of re-using
a call context with a QQmlContextWrapper as activation
object.
This saves some memory and opens up the route to getting
rid of the context wrapper in a future commit.
Change-Id: I1591c73932a08564fddf5137ac05bbc6f31dd4d5
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Wed, 10 Jun 2015 12:49:16 +0000 (14:49 +0200)]
Get rid of QQmlIdObjectsArray
The context wrapper can do this directly, and give access to the
array by index. Simplifies code, and is one less object we need
to allocate on the JS heap.
Change-Id: I9d9d3a47920e97c42234a27aa66cd5ae3cc28085
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Wed, 10 Jun 2015 12:37:21 +0000 (14:37 +0200)]
Smaller cleanup in the context wrapper
Change-Id: If9f8139cdb67bd7a1179d8b1ab18bde04e3b2fbb
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Lars Knoll [Wed, 10 Jun 2015 12:22:08 +0000 (14:22 +0200)]
Smaller cleanup to QQmlJavaScriptExpression
Clean up some of the code to create binding expressions.
Change-Id: I1cd826685713b44166c58b114fa91135a664591d
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
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>