Lars Knoll [Mon, 1 Dec 2014 15:13:20 +0000 (16:13 +0100)]
Remove most of the places where getPointer() is used
This is no longer required, and simply uglifies the code
Change-Id: Iba91a1d7735ebe23a43437f137a488423b6eb743
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 1 Dec 2014 14:53:41 +0000 (15:53 +0100)]
Fix wrong use of Scoped.getPointer()
Change-Id: I5e86afdd3f41055f653a6aa6a144371f6cb99806
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 1 Dec 2014 13:29:21 +0000 (14:29 +0100)]
Fix RegExpCache to store Heap Objects
Change-Id: I1613c438f5b862436790f81c6a3d370cfe78b6a1
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 28 Nov 2014 13:02:06 +0000 (14:02 +0100)]
Store a Heap::EvalFunction pointer in the engine
Change-Id: I002eb8f94e168c9faf1ee3521170dfaf442af1a3
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 28 Nov 2014 12:25:56 +0000 (13:25 +0100)]
Fix the way we set the property name during iteration
This was broken due to the new inheritance scheme for Managed
Change-Id: Ia9df50e7e655c3a812a01a2c78945e648aa444dc
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Robin Burchell [Fri, 19 Dec 2014 19:35:53 +0000 (20:35 +0100)]
QQmlJS::Lexer::scanNumber: Use a QVarLengthArray to avoid heap allocations.
This shaved the time of this function in half on an (admittedly very morbid)
testcase of mine, from 161ms to 72ms total.
Change-Id: I88ad8d4ad4791dc4e7eadb9af9265ff02fe5376f
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 28 Nov 2014 09:05:24 +0000 (10:05 +0100)]
Return Heap::ExecutionContext for globalContext()
Change-Id: Ide7c81735be4662ff45bf268cfe750ff1f784453
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Thiago Macieira [Fri, 19 Dec 2014 03:58:58 +0000 (19:58 -0800)]
Fix build: include <qdatastream.h> before using QDataStream
Change-Id: I623b9089f3d42bd2fe2a4c9e9119953dc3bfa1dc
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 28 Nov 2014 08:31:10 +0000 (09:31 +0100)]
Return Heap::ExecutionContext for currentContext()
Change-Id: I155ab996e24d7f36761d2ea62a04774e16469b34
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Wed, 17 Dec 2014 20:07:05 +0000 (21:07 +0100)]
Cleanup code that modifies the JS stack
Change-Id: Ic043e256c3df984bb06c9a16b86573b0173b19a1
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simon Hausmann [Fri, 19 Dec 2014 11:39:21 +0000 (12:39 +0100)]
Fix GC crash with conditional breakpoints and JS console
We may choose to execute an expression in a specific frame within the
debugger, which is where we pop context's until we reached the frame
in question. If we are trying to execute an expression at the top of the
stack (or with a conditional breakpoint expression), then we don't have
a frame and don't need to pop contexts. But also also don't need to call
Scope::alloc(-1).
Change-Id: I1f6754a3d77d943aed9bf4468e817a5269a3c547
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 15 Dec 2014 07:47:35 +0000 (08:47 +0100)]
Mark JS freed parts of the JS stack as undefined in valgrind
Change-Id: Ibee3d95762bc0a0124b65ad8986ed643b9535529
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 12 Dec 2014 14:29:22 +0000 (15:29 +0100)]
Fix valgrind support in the memory manager
Fix compilation and ensure the memory manager
doesn't create bogus warnings.
Change-Id: I78ccfc7a11944f3275b7c03f6005874a561fa977
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Thu, 27 Nov 2014 14:18:41 +0000 (15:18 +0100)]
Make ExecutionContextSaver GC safe
Change-Id: I29f00366d24c770afe4ba4579106d81a8c9043df
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Erik Verbruggen [Tue, 16 Dec 2014 12:44:14 +0000 (13:44 +0100)]
Replace usage of stdout for debug output by qDebug
This way even paranoid Androids can be show interesting stuff.
Task-number: QTBUG-43109
Change-Id: Ib0ef9e8f6c6fc66e9ea9bfcaf2cd9e33d7469070
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Jocelyn Turcotte [Tue, 9 Dec 2014 15:32:48 +0000 (16:32 +0100)]
Allow batching ShaderEffects without atlas samplers
It is currently necessary to set supportsAtlasTextures to enable
batching of all ShaderEffect, even if they sample a
ShaderEffectSource or have no sampler uniform at all.
After
fccbe57258c10e18ccdbbec405f5522dbd97af66 it is not necessary to
set the RequiresFullMatrix flag based on supportsAtlasTextures since
this now prevents batching altogether. Limiting batching should
however also first verify that there are any sampler of the atlas
used on that ShaderEffect in QQuickShaderEffectMaterial::compare,
since that check wouldn't have any effect in
QQuickShaderEffect::updatePaintNode through RequiresFullMatrix.
Also make sure that using texture()->normalizedTextureSubRect()
as the texture coordinate attribute is synchronized with calls to
removedFromAtlas for all samplers and make sure that this only
applies when the texture count == 1. This fixes a bug where
setting supportsAtlasTextures on a ShaderEffect with more that
one sampler would incorrectly use the texture coordinates of the
first atlas texture in the geometry.
This patch also removes:
- The unneeded check for the RequiresFullMatrix in compare; the same
program can be used in batched geometries and the renderer itself
will prevent merging in that case.
- The possibly heavy string comparison of m_source;
QQuickShaderEffectMaterial::type() and QQuickShaderEffectMaterialKey
are doing that for us more efficiently.
I updated the documentation to clarify the 1-texture rule and
explain the difference with qt_SubRect uniforms and when one or
the other should be used.
Change-Id: I85a86b8e7cb76f1536d5fcd369c7889f22537846
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Laszlo Agocs [Tue, 16 Dec 2014 12:19:39 +0000 (13:19 +0100)]
rendercontrol example: calculate fbo size correctly
Change-Id: Ida1e7cb9426d31ed6406dd6db86f5834f0f1a6ac
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Jocelyn Turcotte [Fri, 12 Dec 2014 15:38:09 +0000 (16:38 +0100)]
Revert parts of "Fix the V4 valgrind integration"
Keep the MemoryManager as the pool argument of VALGRIND MEMPOOL
functions and access it through ExecutionEngine::memoryManager.
Change-Id: Iadb881ce8676088efe81870680aa75f6ba834248
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Tobias Koenig [Wed, 17 Dec 2014 12:51:55 +0000 (13:51 +0100)]
Fix handling of enum values encapsulated in QVariant
In case a QJSValue contains a QVariant which wrapps an
enum value, the valueOf() method will convert the enum
to an int32.
Change-Id: I0b92207184f343d53f73884245b90552165c34fc
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Alain Martin [Tue, 16 Dec 2014 13:55:08 +0000 (14:55 +0100)]
Add -plugins argument to qmltestrunner to specify plugins search path
Allow users to specify locations of compiled QML plugins.
Change-Id: I66059dc7b1314ca6fbef87032b16ccf3caf8bd30
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Alain Martin [Tue, 16 Dec 2014 13:01:29 +0000 (14:01 +0100)]
Add -P argument to qmlscene to specify plugins search path
Allow users to specify locations of compiled QML plugins.
Change-Id: I0ad764282a7891013ce0cfa008a1cf8164cb083b
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Lars Knoll [Thu, 27 Nov 2014 07:56:03 +0000 (08:56 +0100)]
Return a Heap::Object in Object::prototype()
Change-Id: Ice0265ae558ba14497421a5bbf25ee9db76adab5
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Laszlo Agocs [Fri, 12 Dec 2014 11:18:08 +0000 (12:18 +0100)]
Update scenegraph docs regarding threaded render loop usage
Change-Id: I4f8aa9b209096bbcdabcb689007e4166279f8a4c
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Laszlo Agocs [Tue, 16 Dec 2014 11:56:00 +0000 (12:56 +0100)]
rendercontrol example: Add missing flushes
Otherwise we will show broken output with some drivers.
QQuickWidget does this already.
Change-Id: I5193595c4606d0497dbe85f6f8c670618ca366e9
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Robin Burchell [Tue, 9 Dec 2014 08:47:46 +0000 (00:47 -0800)]
Simple cache of url for QQmlCompiledData
Removes URL parsing and allocation/deallocation overhead as a bottleneck from
cached instantiation. Takes total runtime percentage of beginCreate from 6208ms
to 4987ms out of a 15 second trace of the instantiation_cached librarymetrics
benchmark with the empty Item data.
Task-number: QTBUG-43096
Change-Id: Ie4ec8e83461b4926e502dd78a7178cc8e8131e70
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Ulf Hermann [Tue, 2 Dec 2014 10:57:41 +0000 (11:57 +0100)]
Allow batching of GL_LINES and GL_POINTS geometry
This is analogous to GL_TRIANGLES and GL_TRIANGLE_STRIP. There is no
reason why we shouldn't batch it. In the case of GL_LINES this means a
slight behavior change, though: If you provided geometry with an uneven
number of vertices, it would draw lines the way opengl specifies it and
drop the last vertex. Now, with batching, it will draw a line from the
last vertex of an "uneven" node to the first vertex of the next node.
This, however, is exactly like it already works for GL_TRIANGLES if you
specify a number of vertices not divisible by 3. We assume the user
should specify a number of vertices that matches the drawing mode.
Change-Id: I372b9c15a19f065d3aeb3727688cca408ce9608e
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Shawn Rutledge [Thu, 11 Dec 2014 12:55:02 +0000 (13:55 +0100)]
fix the build with -no-qml-debug
The "cleanup" variable doesn't exist in this case.
Change-Id: Ia7ed654d5c9ae57bc3f7cff39acbd72214ff4188
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Simon Hausmann [Fri, 14 Nov 2014 07:08:32 +0000 (08:08 +0100)]
Simplify QFont value type wrapper in preparation for gadgets
The value type wrapper for QFont tries to keep track whether pixel or point
sizes were set and warns the programmer accordingly if both were set. This is
implemented using separate boolean variables, but this can also be done using
QFont's resolve mask.
This move is motivated by the ability of the value type wrappers to operate
only on the type they wrap in the future, without requiring additional
helper variables.
Change-Id: Ia05093b5dcc950281ef89b2bb6fe96c18329cdfa
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Mitch Curtis [Mon, 1 Dec 2014 13:37:09 +0000 (14:37 +0100)]
Read and write QObject pointer properties in QML without registration.
Previously, accessing QObject pointer properties from QML would require
these types to be registered with qRegisterMetaType(), but this
shouldn't be necessary if we're able to read/write the property, because
the moc generates code that calls qRegisterMetaType in the static meta-call
implementation. So when resolving a property in the property cache and we
can't resolve, fall back to placing the static meta-call to register the
type, similar to what QMetaType::userType() does.
Change-Id: Ic8b00ed93a1e5e42cf7aaaf1c355e89557485c59
Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Simon Hausmann [Fri, 14 Nov 2014 15:12:14 +0000 (16:12 +0100)]
Simplify calling methods on value types
We don't need to go deep through the QObject wrapper, we can use QObjectMethod
directly after we've determined a Q_INVOKABLE property.
Change-Id: I2a8e3e827991a365758dd106d2ba92a1bd0d7aab
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Ulf Hermann [Fri, 12 Dec 2014 12:50:30 +0000 (13:50 +0100)]
Document behavior of JavaScript Date with negative years
Task-number: QTBUG-29491
Change-Id: Icc9620abc3bc606f1cd0ab89762f370ac259893e
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Simon Hausmann [Wed, 19 Nov 2014 15:56:40 +0000 (16:56 +0100)]
Fix QQmlPropertyCache population with gadgets
The property cache excludes the destroyed() signals as well as the deleteLater()
slot from the accessible methods. It does that by comparing the method index
against the indices of these signals/slots, which works as long as every
meta-object is through some way derived from QObject's meta object. However
that's not the case for gadgets, where these indices don't apply and
will instead accidentally hide methods.
Change-Id: I5f2b3f578192ff0df607af67832389c30bb11beb
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Ulf Hermann [Thu, 11 Dec 2014 13:05:31 +0000 (14:05 +0100)]
Revert "Properly handle negative years when printing JS Dates to strings."
This reverts commit
f06daaf3d8747c6c0a277bf055c80d8f2e7bcc81.
The only things actually specified by the ECMAScript standard on dates
are:
1. Reparsing a date output from any of the to*String() functions has to
result in the same date representation.
2. The ISO 8601 standard has to be followed for the ISO format.
Currently we clearly don't follow rule 1. Date.parse(d.toString()) will
not yield the same as d.valueOf() for negative dates.
The ISO 8601 standard clearly has a year 0 while common human language
has not. All non ISO date representations are considered
"implementation-dependent" in the ECMAScript standard. We can thus
define the relation between our representations and the ISO standard any
way we like. If we try to match up the dates so that the negative years
look equal in each representation we cannot properly interact with QDate
for dates in the year 0 as that doesn't exist in QDate. We can, however,
choose not to make the dates look equal. That means a date with a
negative year will be "one off" when represented in ISO 8601. "333 BC"
in human language is "-332" in ISO 8601. Our internal representation is
aligned to ISO 8601 and the to*String() methods may output something
else. That means we can easily set the year in ISO 8601 sense from the
Date constructor as well as from setYear() and setFullYear().
This, of course, is somewhat unintuitive and also differs from most
other JavaScript implementations (which don't have to interoperate with
QDate). However, it is still correct.
Change-Id: I5fc26b709a486cb520a075918b184a80bec56c9b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Laszlo Agocs [Tue, 25 Nov 2014 10:38:46 +0000 (11:38 +0100)]
Support threading with QQuickRenderControl
Reorganize the rendercontrol example to demonstrate both the single
and multi threaded approaches.
A small helper function is introduced to the QQuickRenderControl API:
The QSGRenderContext has to live on the render thread. Previously there
was no way for applications to move it to the desired thread. This is
now possible.
Pass --threaded to the rendercontrol example to use a separate render thread.
[ChangeLog][QtQuick] QQuickRenderControl can now be used to render the Qt Quick
scene on a dedicated render thread, similarly to how the built-in threaded render
loop operates.
Task-number: QTBUG-42813
Change-Id: I01c3b2ffca8a174d9d2c267a51f2e484ed7b34b3
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Jocelyn Turcotte [Fri, 12 Dec 2014 10:41:21 +0000 (11:41 +0100)]
Fix the V4 valgrind integration
87a055bc8eee653a18d51f94a546cd452732223a broke the build and
introduced invalid writes to chunks outside of the existing
VALGRIND_DISABLE_ERROR_REPORTING block.
Fix the build by using MemoryManager::Data* instead of MemoryManager*
as the pool argument to VALGRIND MEMPOOL calls since the Data pointer
is protected.
Change-Id: I24136e25291570ade825dcd84a9568d8169a235b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Laszlo Agocs [Sat, 22 Nov 2014 19:47:07 +0000 (20:47 +0100)]
Default to threaded when using opengl32
This appplies only when using opengl32.dll. When using ANGLE or
when using another non-opengl32 DLL, the "windows" single-threaded
loop is chosen, just like before.
One badly written autotest is fixed. We must never assume that
performing some QQuickWindow related work will leave a context
current on the main thread. The assumption worked by accident with
the single-threaded render loop.
[ChangeLog][QtQuick] Changed to use the threaded render loop by
default on Windows when running with desktop OpenGL (opengl32.dll).
Change-Id: I21798622c19ca510a97a96c19c1e70e29f086e3a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Simon Hausmann [Tue, 9 Dec 2014 11:26:59 +0000 (12:26 +0100)]
Remove QML bundle code
This feature is effectively not maintained, experimental and undocumented.
Consensus on the mailing list is to remove it:
http://lists.qt-project.org/pipermail/development/2014-December/019384.html
Change-Id: Iaa73b3e90806c338ef81bbd4307ddd2addd37964
Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
Oleg Shparber [Fri, 28 Nov 2014 08:20:29 +0000 (00:20 -0800)]
Add default parameter value for ExecutionEngine::newString()
Change-Id: I8efbfb07ea61e2c6d03eeb79671006d209e4d48e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Oleg Shparber [Fri, 28 Nov 2014 09:19:11 +0000 (01:19 -0800)]
Add default parameter value for ScopedCallData()
Change-Id: I16b6662a47c682e145d3e2201f9e90f58405a599
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Jocelyn Turcotte [Wed, 3 Dec 2014 16:25:11 +0000 (17:25 +0100)]
Release the VM of unused heap chunks
This changes the way that available items are linked together to
allow releasing chunks not containing any inUse item after being
swept. Instead of putting a freed item at the top of the stack and
make it link to the item previously at the top, relink all
items !inUse to point to the previously visited unused item during
sweeping.
This allows any chunk to be released in the process while making sure
that no previous or next item will link to an address in that chunk.
The performance penality of relinking the list has been measured
to be ~0.6% with v8-bench.js tst_QJSEngine::largeSweep. In exchange,
this helps keeping the amount of chunks to sweep lower after peaks
of heap allocation, even though that ability will be restrained by
heap fragmentation in long running applications.
Task-number: QTBUG-41099
Change-Id: I81a70f0a930b679a1bef47e630b23dab5f6d1218
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 24 Nov 2014 14:38:41 +0000 (15:38 +0100)]
Move prototype back from the vtable into Object
This is the only way we can support a GC that moves
objects around in memory.
Change-Id: I1d168fae4aa9f575b730e469e762bc5b5549b886
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 21 Nov 2014 12:18:23 +0000 (13:18 +0100)]
Better encapsulate access to the global object
Change-Id: I8a76112d821cb3fc172ba0d16ee8410d39b4422a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Fri, 21 Nov 2014 08:17:01 +0000 (09:17 +0100)]
Encapsulate accesses to the root context
Change-Id: I668cef1363a5c1a5c5b9a7e138f3bd0338712eea
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Thu, 20 Nov 2014 16:46:46 +0000 (17:46 +0100)]
Fix Object::arrayData() accessor to return a heap object
Change-Id: Iffc82c2f415251d73bb7446848399b54b16589c9
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Tue, 18 Nov 2014 16:37:26 +0000 (17:37 +0100)]
Get rid of a not required reinterpret_cast
Change-Id: I076fa02589cc91eca46dd652375585bc7ca5b559
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Tue, 18 Nov 2014 16:35:48 +0000 (17:35 +0100)]
Cleanup header inclusion order
Change-Id: I6f7973370c4468e7d1686a147efca66bfbfdd5b1
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 17 Nov 2014 19:55:41 +0000 (20:55 +0100)]
Remove arrayData() calls from qv4object.cpp
Change-Id: I92c74e87918a5f958ff17f4cbbc1888b58833fc6
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simon Hausmann [Mon, 10 Nov 2014 07:03:08 +0000 (08:03 +0100)]
Changed value type property index encoding
We used to encode property index and value type property index in one int
with 16 bits each, for example font.pixelSize with index of "font" in the
lower 16 bits and "pixelSize" in the upper 16 bits.
Detecting if a given encoded index was using value types or not was based on
whether the value type index (upper 16 bits) were non-zero. That assumption
holds given that all valid property indicies of value types are > 0 because
they are all sub-classes of QObject, which provides the first property
(objectName).
With the introduction of gadgets property index zero will become popular again,
and value types are a core use-case for gadgets. Therefore we need to change
the encoding to allow for zero to be a valid value type property index. This is
implemented by centralizing all decoding call sites to call one function that
indicates -1 as non-present value type core index return value. That way we can
encode the index with an offset of 1.
Change-Id: I266abf140211a4f7204b47b94d07c364f0a8f408
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Lars Knoll [Mon, 17 Nov 2014 18:48:15 +0000 (19:48 +0100)]
Fix arrayData accesses in qv4lookup.cpp
Change-Id: I39a2e4f14afda2c0e909584682ef24a8b030025b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 17 Nov 2014 18:43:57 +0000 (19:43 +0100)]
Remove non required arrayData() accesses from qv4arrayobject.cpp
Change-Id: Iaa012b85cad20fa3887c1308dd38d35da8c423b4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 17 Nov 2014 20:08:13 +0000 (21:08 +0100)]
Move readonly accessors into Heap::ArrayData
these methods don't modify the object, so it's safe to have them
there and this simplifies quite a bit of the code.
Change-Id: I2f591758efba9cb8d17b956bc7c02e2d7a468ea4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 24 Nov 2014 08:52:23 +0000 (09:52 +0100)]
Move function definition where it belongs
Change-Id: I93e98813d2ffaf7dc648ad81b15e907dfdc276d0
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simon Hausmann [Tue, 9 Dec 2014 14:09:20 +0000 (15:09 +0100)]
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
src/qml/jsruntime/qv4arraydata.cpp
src/qml/jsruntime/qv4context_p.h
src/qml/jsruntime/qv4globalobject.cpp
src/qml/jsruntime/qv4internalclass.cpp
src/quick/items/qquicktext_p.h
src/quick/items/qquicktextedit_p.h
src/quick/items/qquicktextinput_p.h
Change-Id: If07e483e03197cb997ef47a9c647a479cdb09f4c
Simon Hausmann [Mon, 8 Dec 2014 14:51:47 +0000 (15:51 +0100)]
Cleanup: Remove unused code
isConcurrent is not virtual and always returns true, so we can remove
it and remove the if() on the caller side.
Change-Id: Ie750fdeddaf8c339e1fcab99ebd967e3446bd975
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Simon Hausmann [Mon, 8 Dec 2014 14:48:17 +0000 (15:48 +0100)]
Cleanup: Merge QQmlDataLoader and QQmlTypeLoader
There exists only one sub-class of QQmlDataLoader and there are no virtual
functions.
This also clears up a confusion reported in Jira that suggested QQmlDataLoader
should get a virtual destructor as it is being subclassed and somebody might
have a pointer only to a QQmlDataLoader and deleting that would not do proper
polymorphic destruction.
Change-Id: I34611be5a95522bc85a87fb7df97b6d1de7a3d37
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
Erik Verbruggen [Mon, 8 Dec 2014 09:25:09 +0000 (10:25 +0100)]
QML: fix warning in tests
Remove unused function that wouldn't be emitted anyway.
Change-Id: I623d5d44bca9a1358cf9e66ff557992aba9ae451
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Erik Verbruggen [Mon, 8 Dec 2014 09:24:42 +0000 (10:24 +0100)]
QML: fix warning in tests
Remove unused constant.
Change-Id: I3fb3512f7ea54102450eeeda1a56c73fe6b26025
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simon Hausmann [Tue, 9 Dec 2014 08:53:01 +0000 (09:53 +0100)]
Merge "Merge remote-tracking branch 'origin/5.4.0' into 5.4" into refs/staging/5.4
Erik Verbruggen [Mon, 8 Dec 2014 09:24:06 +0000 (10:24 +0100)]
QML: fix warning in tests
Remove unused class field.
Change-Id: I90981546e33d4839a91c418a8746e6f2ebc3bf46
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Erik Verbruggen [Mon, 8 Dec 2014 09:22:47 +0000 (10:22 +0100)]
Quick: fix test
/Users/erik/dev/qt5-stable/qtdeclarative/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp:1561:60: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
items << qMakePair(QString("new item " + j), QString::number(j));
~~~~~~~~~~~~^~~
Change-Id: I94bd952abf82a8f174772482330b5fdd636578ad
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Robin Burchell [Mon, 8 Dec 2014 10:33:57 +0000 (02:33 -0800)]
May it rest in pieces.
Change-Id: I58a2ac56e099da44314feb1614067626b015710a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Roger Maclean [Thu, 4 Dec 2014 21:28:42 +0000 (16:28 -0500)]
Avoid inadvertent copies of the windows list
There are a couple of ways in which this code creates
temporary copies of the window list, m_windows. This is often
benign but there are also places (e.g. startOrStopAnimationTimer)
which get non-const references to items which results
in m_windows being detached from the temporary resulting in a real
copy of the list items. Again the copy is often fairly benign,
however, as the code also relies heavily on pointers to items
in the list, it can also result in crashes.
I think it might be advisable to store a list of pointers to
Window structures rather than store the structure themselves as
it appears really easy to introduce copies of the list accidentally.
The removal of the use of foreach for example is not made here for
aesthetics but because it introduces a hidden temporary copy of
the list.
Change-Id: I504951a897c4fb0cf106f5a4792b5cfcd532ba8f
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Michael Brasser [Sat, 6 Dec 2014 16:38:34 +0000 (10:38 -0600)]
Avoid string-based connect in QQuickImageBase.
String-based connect is relatively slow, and should be avoided in core
items. This improves performance of the
tst_librarymetrics_performance::instantiation_cached(043) image - empty
test case (approximately halving the time).
Task-number: QTBUG-43096
Change-Id: I02485c515435eceacc95c55f877fc8566e7406d7
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Alejandro Exojo [Fri, 5 Dec 2014 19:14:20 +0000 (20:14 +0100)]
Fix \inqmlmodule usage: only use one parameter
Since the command just links back to the corresponding module page, only the
first parameter is used, and the version causes more confusion.
Change-Id: I73ed289550c576747132f77b83c1257094059cd1
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Simon Hausmann [Mon, 1 Dec 2014 11:27:28 +0000 (12:27 +0100)]
Fix crash with when evaluating bindings with QQmlExpression that throw exceptions
We must handle a thrown exception and cannot pass the undefined value back to
QV8Engine::toVariant.
Change-Id: Ia466b175706dccd513895ef5bb166b811fbdc26b
Task-number: QTBUG-41860
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Ulf Hermann [Fri, 10 Oct 2014 11:32:38 +0000 (13:32 +0200)]
QmlDebug: Provide public method for starting a debug server
With QQmlDebuggingEnabler::startTcpDebugServer you can create a debug
server for debugging or profiling also without the qmljsdebugger
command line argument.
Change-Id: I642f73680585f9c7578762bcc0b247c736fe1338
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Ulf Hermann [Fri, 10 Oct 2014 14:14:57 +0000 (16:14 +0200)]
QmlDebug: Allow tests to ignore a number of bind errors
Like this we can effectively test the port range feature of the debug
server.
Change-Id: Id0d0b47525177f0cfbb8c35a267962a82338f047
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Ulf Hermann [Fri, 10 Oct 2014 14:15:58 +0000 (16:15 +0200)]
QmlDebug: Test the debugging enabler
Change-Id: I7c9aff4474850139fe96afc4b300fa0e2ded8874
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Ulf Hermann [Tue, 2 Dec 2014 13:37:16 +0000 (14:37 +0100)]
Mark parameter to QQmlDebuggingEnabler as unused if it isn't used.
Change-Id: I6e843dee8e25b3aacfe3de7c584effd36efdb708
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simon Hausmann [Fri, 5 Dec 2014 11:25:59 +0000 (12:25 +0100)]
Skip failing test temporarily
Skip this until commit
155306ffee1941194d44dd632a7993fce4a05606 from qtbase
has hit the dev branch through merges.
Change-Id: I3e58d288fcc45c511bc1b8b4e7dbb6c41d367eba
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Simon Hausmann [Fri, 5 Dec 2014 10:58:05 +0000 (11:58 +0100)]
Merge remote-tracking branch 'origin/5.4.0' into 5.4
Change-Id: I5978bab8a4fde4c2ee33907fd81f49cb69e4fb26
Ulf Hermann [Tue, 2 Dec 2014 17:26:46 +0000 (18:26 +0100)]
QQmlInspectorService: handle views only with supported plugins.
Task-number: QTBUG-43048
Change-Id: I5b32bd0a1e28fdf56b5346580daf21e7ec1b9f8c
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Fawzi Mohamed [Thu, 4 Dec 2014 17:00:40 +0000 (18:00 +0100)]
qttest: make findChild available only for QtTest 1.1
Change-Id: I4ceb1a969bd4296b82f899088b02b5e8cf100bcd
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Kai Koehne [Thu, 4 Dec 2014 08:50:44 +0000 (09:50 +0100)]
Update plugins.qmltypes
Change-Id: I9b6c54b572d4653d609b154000e274b9e64d591f
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Kai Koehne [Thu, 4 Dec 2014 13:19:09 +0000 (14:19 +0100)]
Add string::arg method in installTranslatorFunctions
QJSEngine::installTranslatorFunctions install the translator functions
to any given JS object. However, the custom string::arg() method is only
added in qqmlbuiltinfunctions.cpp, making the use of qsTr() in other
pure-JS programs quite hard.
Task-number: QTBUG-43113
Change-Id: Ia9ed97a4c07a4d167c792f3ea13e4f6e96c97423
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Mitch Curtis [Tue, 18 Nov 2014 09:16:52 +0000 (10:16 +0100)]
Correct QtQml.Models \qmlmodule version.
For example, the following documentation [1] says:
Import Statement: import QtQml.Models 2.0
This should be:
Import Statement: import QtQml.Models 2.1
The module documentation [2] is correct, but there's no visible link to
that page from [1].
[1] http://qt-project.org/doc/qt-5/qml-qtqml-models-objectmodel.html
[2] http://qt-project.org/doc/qt-5/qtqml-models-qmlmodule.html
Change-Id: Ib2ab7b821ad7e98c20b396b26f745ee39434b7fb
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Chris Adams [Mon, 1 Dec 2014 04:32:57 +0000 (14:32 +1000)]
Fix QtQuick2 module unload support
This commit ensures that the value type providers installed by the
QtQuick2 QML module during initialization are uninstalled when the
plugin is unloaded.
It also fixes a bug in the type compiler so that it now works with
types from plugins which get unloaded and then reloaded.
Task-number: QTBUG-43004
Change-Id: I4b3fb75aae65dfbc5de9c88701ed82514087ab7d
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
Frederik Gladhorn [Wed, 3 Dec 2014 13:42:12 +0000 (14:42 +0100)]
Error out when trying to set an item as its own parent
Task-number: QTBUG-43063
Change-Id: I92a33047ac7fa2afeff4986b6e42c07afbc59918
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Simon Hausmann [Wed, 3 Dec 2014 09:37:16 +0000 (10:37 +0100)]
Fix crashes on QNX/x86
On x86 we assume that ebx holds the address of the global offset table for
position independent code. So before placing a run-time call we restore the
register from it's position we saved it on earlier on the stack. However after
commit
d9f33ccdef985badc56fd8940373748626beffc7 the register wasn't saved on the
stack anymore in the prologue because we skipped because it's caller saved. So
when we seemingly reloaded ebx with the GOT from the stack, we loaded it from a location
we never saved it to. This patch makes sure to always save it on the stack so that
we can always restore it.
Change-Id: I8f6a8e38779151fff517f17220f29a7cb45ca89d
Task-number: QTBUG-43036
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Simon Hausmann [Mon, 1 Dec 2014 12:11:03 +0000 (13:11 +0100)]
Fix application build when combining with Mac OS X Cocoa headers
OSX's AssertMacros.h unconditionally defines macros like "check" and that
clashes with qml's type discovery templates that define a check function
and that are used by qmlRegisterType and friends.
There's a comment in the OS X headers suggesting that this will be fixed
in the "next" release, but that hasn't happened for a while and the bug
is still present in 10.10. So let's work around it and make life easier
for people using Qml and Cocoa at the same time.
Change-Id: I005d21188f92deaebd45bce2e6484cd4deeb9a34
Task-number: QTBUG-36309
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 1 Dec 2014 14:51:05 +0000 (15:51 +0100)]
Fix conditional breakpoints in QML
We need to set "inheritContext" to true for the QV4::Script that's used during
conditional break point evaluation, because that will also disable fast
property lookups, which is still required for QML lookups to work.
Change-Id: I8976df1c827b5058eae9bdce6e86e5ea856cbfe1
Task-number: QTBUG-43018
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Fri, 28 Nov 2014 08:24:35 +0000 (09:24 +0100)]
Fix expression evaluation in specific frames in the debugger
Expressions from the QML/JS console are intended to be executed in a specific
frame / context. However that wasn't implemented properly, we should pop the
current context frameNr times.
[ChangeLog][QtQml] Fix inspecting objects in QML/JS console in different frames.
Change-Id: If575d4005c52a9fe6805538a7b1a02b9e32049d6
Task-number: QTBUG-42831
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Thu, 27 Nov 2014 14:45:02 +0000 (15:45 +0100)]
Remove dead code
The eval code tracking was used last time for the old exception handling,
but that's long gone :)
Change-Id: I6fa80a5197745fde461e4da66cd65a50149c6048
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Shawn Rutledge [Fri, 7 Nov 2014 11:55:03 +0000 (12:55 +0100)]
QtQuick.Window: add missing documentation for Window methods
Several more methods/slots are inherited from QWindow but are not
documented for the QML Window type. Also some other documentation
improvements.
Task-number: QTBUG-40093
Task-number: QTBUG-42426
Change-Id: Ib753be269cbc41ee540e6556e0ef483758eefe62
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Simon Hausmann [Tue, 2 Dec 2014 18:56:43 +0000 (19:56 +0100)]
Merge "Merge remote-tracking branch 'origin/5.4.0' into 5.4" into refs/staging/5.4
Simon Hausmann [Tue, 2 Dec 2014 12:41:31 +0000 (13:41 +0100)]
Merge remote-tracking branch 'origin/5.4.0' into 5.4
Change-Id: I89bbb2977350a03c156d531f810d08a5560ffbb3
Kai Koehne [Wed, 26 Nov 2014 08:59:11 +0000 (09:59 +0100)]
Fix permissions of files
Change-Id: I22958892d846da348325ba608084f8d9a05473d4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simon Hausmann [Sat, 29 Nov 2014 08:55:50 +0000 (09:55 +0100)]
Added change log for 5.4.0
Change-Id: Ie3e238a3ccac1d95978229316977d131be3010d6
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Simon Hausmann [Mon, 1 Dec 2014 09:21:27 +0000 (10:21 +0100)]
Regression: Fix array data corruption
When inserting into a sparse JS array, we may have to re-allocate the
underlying data vector. When that happens we must reload the ArrayData
pointer, to avoid returning a wrong pointer in ArrayData::insert.
This patch also fixes the valgrind support in the memory allocator by correctly
marking the mmap'ed memory region as inaccessible.
Change-Id: I86aabc2cec74a4f3c8396463910d90c8968a741d
Task-number: QTBUG-42956
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Friedemann Kleint [Mon, 1 Dec 2014 09:45:00 +0000 (10:45 +0100)]
Skip tst_qquickwindow::headless() when using ANGLE/Windows.
The test crashes frequently.
Task-number: QTBUG-42967
Change-Id: Ic17c6187bfa657154a9b04eb9c5b9a3de291cb1e
Reviewed-by: Andrew Knight <andrew.knight@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Simon Hausmann [Mon, 24 Nov 2014 14:52:42 +0000 (15:52 +0100)]
Fix loading of .ui.qml form files with cached compilation units
Simplify the type loading logic and try the Type -> Type.qml and Type ->
Type.ui.qml mapping in a simple loop that tries off-disk and cached
compilation unit loading.
Change-Id: I537feabd0a158a71f330bede9e6988291298ae81
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Andrew Knight [Fri, 28 Nov 2014 11:43:12 +0000 (13:43 +0200)]
Don't default to HighQualitySubPixelAntialiasing on WinRT
The subpixel shader is probably not a good default here because most
devices are mobile (can change screen orientation) and have high pixel
densities. Furthermore, it breaks text rendering on the Surface RT, where
the graphics hardware is too weak to support the number of uniforms the
subpixel shader uses.
Task-number: QTBUG-41769
Change-Id: I10210af91976ab55e611025c0452a1ee1f3114a9
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Morten Johan Sørvig [Tue, 25 Nov 2014 13:22:15 +0000 (14:22 +0100)]
Make effectiveDevicePixelRatio() return a qreal.
Fractional scale factors are not as broken as previously
believed, especially for Qt Quick. Keep the door open
for finding a way to support it at some point in the
future.
Change-Id: Ifeadcc53175ac6c25ea0288d5fe1966e3de408f9
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Laszlo Agocs [Sat, 22 Nov 2014 20:17:34 +0000 (21:17 +0100)]
Add missing call to rendercontrol
Change-Id: Ic8c8e6d7a9d99216292b8b4faa2926d849333a05
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Albert Astals Cid [Tue, 25 Nov 2014 21:56:30 +0000 (22:56 +0100)]
Add since 5.4 markers
Change-Id: Ic0e594cb53016e6f68fbfb6e6064707344afefef
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Friedemann Kleint [Wed, 26 Nov 2014 09:01:15 +0000 (10:01 +0100)]
Stabilize tst_qquickflickable.
- Use one engine per test
- Use QQuickView for the margins test
- Verify QWindow cleanup.
Change-Id: Id2a10b56101832c362822963a2a7bd1d66daa143
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Mitch Curtis [Thu, 13 Nov 2014 15:30:03 +0000 (16:30 +0100)]
Document Qt.application.supportsMultipleWindows property.
The documentation was not added in
0df606e2ab8f3b60e1ad57dba245acf2e7810612.
Change-Id: I0a5802a66021e17d1280f3969981c9e8a62c8119
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Simon Hausmann [Mon, 24 Nov 2014 12:10:04 +0000 (13:10 +0100)]
Doc: Remove text that claims aliases cannot be read-only
It's very well possible to have read-only aliases :)
Task-number: QTBUG-33709
Change-Id: I2ad8854cd0b412d1d2e7afde6dfd585519b69e27
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Lars Knoll [Mon, 17 Nov 2014 13:54:52 +0000 (14:54 +0100)]
Operate directly on Heap::ArrayData where possible
Change-Id: I87dfb3e9a07673b5c405619eab8b6ee292d5c097
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Lars Knoll [Mon, 17 Nov 2014 13:33:40 +0000 (14:33 +0100)]
Reduce usage of Object::arrayData()
This will simplify porting over to returning Heap::ArrayData
from the method (as required for the new GC).
Change-Id: I5fb9ca7dfeab1aa63cc17c8948ef0966716f1bcb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>