platform/upstream/qtdeclarative.git
9 years agoMerge "Merge branch '5.3' into dev" into refs/staging/dev
Gunnar Sletta [Fri, 8 Aug 2014 09:05:12 +0000 (11:05 +0200)]
Merge "Merge branch '5.3' into dev" into refs/staging/dev

9 years agoV4 IR: extend BasicBlockSet functionality.
Erik Verbruggen [Wed, 23 Jul 2014 10:04:07 +0000 (12:04 +0200)]
V4 IR: extend BasicBlockSet functionality.

To be used in later patches.

Change-Id: I379addaea225482bcbfd7a0b03dbdbaa254dd579
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agoV4: change string flattening to be iterative and use a worklist.
Erik Verbruggen [Wed, 6 Aug 2014 09:05:43 +0000 (11:05 +0200)]
V4: change string flattening to be iterative and use a worklist.

And not recursive, because that might blow out of stack space.

Task-number: QTBUG-39520
Change-Id: Id961d4af03a543d3efa173f976626cf2dae4f483
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agoV4: add more line number information.
Erik Verbruggen [Tue, 5 Aug 2014 14:43:11 +0000 (16:43 +0200)]
V4: add more line number information.

Change-Id: Ibd3e747918dc0bc939fcbd173585fb1e4d4f08fb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agoAdd support for conditional breakpoints and evaluate.
Erik Verbruggen [Fri, 4 Jul 2014 15:01:02 +0000 (17:01 +0200)]
Add support for conditional breakpoints and evaluate.

Also centralized the context state saver and added line number saving, so that the
JS jobs for evaluation of breakpoint conditions don't change the state of the current
engine context.

Task-number: QTBUG-37119
Task-number: QTCREATORBUG-11516
Change-Id: Ia21b3d64e239e5b67f3c07e1c006d8e6748f29b6
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agoAdd declarative QQuickTextMetrics API from QQuickFontMetrics invokables
Mitch Curtis [Tue, 5 Aug 2014 15:42:54 +0000 (17:42 +0200)]
Add declarative QQuickTextMetrics API from QQuickFontMetrics invokables

This allows use of a declarative API for the functions in QFontMetricsF
which take parameters. This solves the problem of QML expressions that
use QML methods not being re-evaluated when the internal data changes,
by allowing the user to set the arguments as properties of a
TextMetrics object, that would otherwise have to be passed to QML
methods.

For example:

    FontMetrics {
        id: fontMetrics
    }

    property rect r: fontMetrics.boundingRect("Blah")

At some point, the font of the FontMetrics object is changed, but r
will still represent the original bounding rect. Instead, the user will
now write:

    TextMetrics {
        id: textMetrics
        text: "Blah"
    }

    property rect r: textMetrics.boundingRect

The QML methods remain in QQuickFontMetrics for those who need an
imperative API.

[ChangeLog][QtQuick] Added QQuickTextMetrics, which provides a
declarative API for the functions in QFontMetricsF which take
arguments.

Change-Id: I019dc4639531906fc751ba61281cc1c695742287
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
9 years agoMultiPointTouchArea: Guard _mouseTouchPoint with a QPointer.
Robin Burchell [Wed, 6 Aug 2014 11:51:19 +0000 (13:51 +0200)]
MultiPointTouchArea: Guard _mouseTouchPoint with a QPointer.

The touch point can be deleted (for instance, on ungrab()) without
_mouseTouchPoint being reset occurs.

This caused a crash on tst_qquickmultipointtoucharea::inFlickable with
MallocScribble=1 enabled on OS X (use-after-free).

Change-Id: Ife9f59d75827285b18bb1772ddbee30d79a3f0b5
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
9 years agoFix use-after-free in testcase.
Erik Verbruggen [Wed, 6 Aug 2014 13:18:08 +0000 (15:18 +0200)]
Fix use-after-free in testcase.

The call to setActive does a deleteLater on the window. Then the QTRY_*
macros run the event loop, thereby deleting the window. So, after
wrapping the window in a QPointer, that pointer must either be null, or
the window shouldn't be visible.

Change-Id: Ib3fc5c5284bd5dae378a0f6a17117b262b9a3687
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
9 years agoHandle scene graph invalidation
Gunnar Sletta [Tue, 5 Aug 2014 10:07:42 +0000 (10:07 +0000)]
Handle scene graph invalidation

Change-Id: Icff592a4ae48444a36406a65c1c04a3a6da77616
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoMake sure texture factories are delete before libraries are unloaded.
Gunnar Sletta [Thu, 7 Aug 2014 09:13:03 +0000 (11:13 +0200)]
Make sure texture factories are delete before libraries are unloaded.

Because scene graph adaptations and custom implementations can
instantiate QQuickTextureFactories, we need to make sure that
their destructors are called before their libraries are unloaded
to avoid crashes on shutdown.

Change-Id: I17d38e2909aabcb4ea7bf4eecc29df86c8479fdb
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
9 years agoQQuickText::itemChange must call QQuickItem::itemChange
Shawn Rutledge [Thu, 7 Aug 2014 14:06:38 +0000 (16:06 +0200)]
QQuickText::itemChange must call QQuickItem::itemChange

The need for this was documented, but not done in this case.
d5e612fb3e9753c762b741d135fabd2b1f8ae1a6
So it was not possible to use the windowChanged signal inside a Text.

Change-Id: I4e3a49ca898cbd09b5731bd133cf93c212062fa2
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
9 years agoTextInput::displayText: include partial input from an input method
J-P Nurmi [Fri, 25 Jul 2014 13:49:36 +0000 (15:49 +0200)]
TextInput::displayText: include partial input from an input method

[ChangeLog][QtQuick][Important Behavior Changes] TextInput::displayText
now includes also partial input from an input method and thus matches with
the actual displayed text.

Task-number: QTBUG-40329
Change-Id: I407f464938c550d73eba1351283ec751aa293380
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
9 years agoListView: add support for "pull back" header & footer
J-P Nurmi [Mon, 3 Mar 2014 14:53:27 +0000 (15:53 +0100)]
ListView: add support for "pull back" header & footer

[ChangeLog][QtQuick][ListView] Introduced headerPositioning and
footerPositioning properties to control whether header and footer
are positioned inline, as overlays, or so that they slide away and
can be pulled back regardless of the content position.

Change-Id: Ifef1faf1ce6acf2b55cd1b6408e22ec2de841409
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
9 years agoRename QQuickRenderControl::stop() to invalidate()
Laszlo Agocs [Thu, 7 Aug 2014 08:05:04 +0000 (10:05 +0200)]
Rename QQuickRenderControl::stop() to invalidate()

To be consistent.

Change-Id: Ia78bf4a27e8ccb1a4f0a44865e810f1070c39e5d
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoAccelerate property lookups for C++-based QObject singletons.
Michael Brasser [Wed, 23 Jul 2014 17:43:38 +0000 (12:43 -0500)]
Accelerate property lookups for C++-based QObject singletons.

Change-Id: Icbdf06a077014db5dd57cba42f84591433ec4196
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agoAllow simple ShaderEffects to be batched by the renderer.
Michael Brasser [Wed, 23 Apr 2014 02:19:50 +0000 (21:19 -0500)]
Allow simple ShaderEffects to be batched by the renderer.

Identical ShaderEffects that use the standard vertex shader with a
single source texture, and that set supportsAtlasTextures, are now
candidates for batching.

Task-number: QTBUG-37914
Change-Id: Ib0ce58647a8c7c48e88bd84cf2645f1a8f28691f
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoTemporarily mark grab()/item.layer tests insignificant under ANGLE
Andrew Knight [Thu, 7 Aug 2014 12:44:50 +0000 (15:44 +0300)]
Temporarily mark grab()/item.layer tests insignificant under ANGLE

This is to pass CI while the issue is being fixed.

Task-number: QTBUG-40649
Change-Id: I9b095ce0ce0a3c51956ab81d09975b6cc6ce3592
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
9 years agoDisable tests on failing ANGLE config
Gunnar Sletta [Thu, 7 Aug 2014 17:55:42 +0000 (20:55 +0300)]
Disable tests on failing ANGLE config

Task-number: QTBUG-40658
Change-Id: I9a00083213de4d31216813351a406ec460d146fa
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
9 years agoMerge branch '5.3' into dev
Gunnar Sletta [Thu, 7 Aug 2014 09:31:23 +0000 (11:31 +0200)]
Merge branch '5.3' into dev

Conflicts:
src/quick/items/context2d/qquickcontext2d.cpp
src/quick/items/context2d/qquickcontext2dtexture.cpp

Change-Id: I1a9b911b3a92333a5dddbaf43275f71bad2006f0

9 years agoFix Flickable mouse grab issue.
Robert Griebl [Thu, 31 Jul 2014 13:43:42 +0000 (15:43 +0200)]
Fix Flickable mouse grab issue.

This issue cannot be reproduced on the desktop with a mouse (at least I
could not).  It can however reliably be reproduced on iMX6 embedded hardware
with a touch-screen.  It seems like the TS driver is reporting mouse events
with a much more coarse granularity than the USB mouse driver, which in turn
triggers this bug.
(Qt4's declarative, as well as Qt5's quick1 and 2 all have the same issue)

Change-Id: Id151e3847bc8d77c7b405b9c4d4d5747a6e33ed0
Task-number: QTBUG-27185# Please enter the commit message for your changes. Lines starting
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
9 years agoIntroducing qmllint tool.
Sérgio Martins [Wed, 9 Jul 2014 12:28:23 +0000 (13:28 +0100)]
Introducing qmllint tool.

A command line program that returns 0 if a .qml file is syntactically
correct.

Ideal to integrate into continuous integration systems.

[ChangeLog][QtQml] Added QML linter tool.

Change-Id: Id420159298e9d2390acd870fee9cf1c3d08e2dec
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agoUse the renamed qt_gl_global_share_context
Jocelyn Turcotte [Tue, 1 Jul 2014 17:20:25 +0000 (19:20 +0200)]
Use the renamed qt_gl_global_share_context

Change-Id: I438c33a1dc83fd0cd1ec08bb4e4a1257a3216ca2
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoFix uninitialized memory read
Lars Knoll [Mon, 4 Aug 2014 10:46:50 +0000 (12:46 +0200)]
Fix uninitialized memory read

Explicitly initialize the markBit to 0. This is important
for stack based execution contexts that can have uninitialized
data in the bit.

Change-Id: I50f1286949f1b4732e3a31b83b238bc7dcf7c7a7
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agoClean up Image and ShaderEffectSource properly.
Gunnar Sletta [Thu, 31 Jul 2014 09:40:03 +0000 (11:40 +0200)]
Clean up Image and ShaderEffectSource properly.

Change-Id: I9e3eb5f65ea5f46d30fb7905d0f9c479da367bf5
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoSpeed up the test a bit..
Gunnar Sletta [Mon, 4 Aug 2014 08:10:10 +0000 (10:10 +0200)]
Speed up the test a bit..

Using hundreds of thousands of Items works, but it takes its
toll, so use a custom item to allocate QSGNodes directly which
are instantanous.

Change-Id: Iee5d8495b3d7d5abd24c14a53b2327e5efe9523b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoMake ssa compile on Android with gcc 4.6
Laszlo Agocs [Thu, 31 Jul 2014 12:32:12 +0000 (14:32 +0200)]
Make ssa compile on Android with gcc 4.6

Avoid errors like

compiler/qv4ssa.cpp:660:59: error: no matching function for call to
'sort(QVector<QV4::IR::BasicBlock*>::iterator, QVector<QV4::IR::BasicBlock*>::iterator,
(anonymous namespace)::DominatorTree::calculateDFNodeIterOrder() const::Cmp)'

Change-Id: I4189bd621f1cef5e00b06f5b6b6dd430fefe653f
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
9 years agoRun autotests for Canvas.renderTarget == FramebufferObject also.
Gunnar Sletta [Fri, 1 Aug 2014 09:25:55 +0000 (11:25 +0200)]
Run autotests for Canvas.renderTarget == FramebufferObject also.

Change-Id: Id1729966b3b2b75a3bd4ad387b3d7914266fb3a5
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoMore QQuickCanvas cleanup handling.
Gunnar Sletta [Fri, 1 Aug 2014 09:22:31 +0000 (11:22 +0200)]
More QQuickCanvas cleanup handling.

Avoid calling into QQuickContext2D from QQuickContext2DTexture
after QQuickContext2D has been deleted. We acheive this by

1. Giving the texture a direct pointer to the gl context and
   and surface, so that it doesn't need to go through m_context
   to get to them (which may have been deleted).

2. Protect access to QQuickContext2DTexture::m_context with
   a mutex and make sure it is set to 0 in a safe manner
   when the QQuickContext2D object is deleted.

Change-Id: Ie0a30f9fc46f844224838a7cdf2f28a62e8ce322
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoMake canvas cleanup work propertly...
Gunnar Sletta [Wed, 30 Jul 2014 15:11:02 +0000 (17:11 +0200)]
Make canvas cleanup work propertly...

Depending on which mode we are in, we need to run cleanup
on the right thread and in the right way.

Image canvas doesn't contain any GL resources and can be nuked
right away. The actual QSGTexture is managed by the node, so we
don't need to worry about it.

For FBO it is a bit more complicated.
 - Threaded: We create a cleanup handler that runs makeCurrent
   deleteTexture and doneCurrent and then release the surface
   on the GUI thread.
 - Immediate: Same as threaded, just right away
 - Cooperative: Schedule the texture to be deleted on the
   next sync. The Context doesn't have its own GL context
   in this case, so don't worry about it.

Change-Id: I2d0ae7acfa05561faa52f3cacd767eb18cabaf02
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoUse the current context to resolve extensions.
Gunnar Sletta [Wed, 30 Jul 2014 14:31:36 +0000 (16:31 +0200)]
Use the current context to resolve extensions.

When updating the code to not use direct gl calls, this
code was changed to use the context's gl context. The
context doesn't have a context when the rendering happens
on the same thread as the scene graph rendering and
we get a crash.

Change-Id: I8adf62c0ed12bb055982a71ba59af76afeefcca1
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoqmlplugindumper: do not pop up a window if an assert is triggered
Fawzi Mohamed [Wed, 30 Jul 2014 12:49:26 +0000 (14:49 +0200)]
qmlplugindumper: do not pop up a window if an assert is triggered

On windows the debug version of qmlplugindumper used to show a panel on
assert failure. Failure should be silent.

Done-with: Thomas Hartmann <thomas.hartmann@digia.com>
Task-number: QTCREATORBUG-12644
Change-Id: Ib5036754b37cdd5e3820e0cfd60b3ef7df3f1fb6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
9 years agoSupport Canvas.antialiasing without multisample support.
Gunnar Sletta [Fri, 1 Aug 2014 10:41:59 +0000 (12:41 +0200)]
Support Canvas.antialiasing without multisample support.

FBO based rendering relies on framebuffer multisampling to do
antialiasing, which is often not available on OpenGL ES and even on
some desktop chips. As a high-level API, it is quite bad that Canvas
users (on embedded in particular) have to choose between quality
(Image) or performance (FBO).

This change implements super sampling, rendering the content
at twice the size and then scaling it down.

[ChangeLog][QtQuick][Canvas] Implement antialiasing on
FramebufferObject based render targets through super-sampling (SSAA)
when framebuffer multisampling is not available.

Change-Id: I373f3a645342dac157506b746c1e39b0f3f3f9f2
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoExpose the scene graph publically through a QSGEngine class
Jocelyn Turcotte [Tue, 1 Jul 2014 17:19:56 +0000 (19:19 +0200)]
Expose the scene graph publically through a QSGEngine class

This change wraps QSGRenderContext and QSGContext in a new QSGEngine
class, and expose a public interface of QSGRenderer through a
QSGAbstractRenderer to make it usable on a standalone window or FBO.

Change-Id: I2d41187472424f5ea64650a006bcd61f2711f6b9
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoMerge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev
Frederik Gladhorn [Fri, 1 Aug 2014 08:49:04 +0000 (10:49 +0200)]
Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev

9 years agoFix touch/mouse propagation bugs
Martin Jones [Tue, 22 Jul 2014 01:31:04 +0000 (11:31 +1000)]
Fix touch/mouse propagation bugs

Filtered mouse release was not delivered if another touch started after a
touchMouseId was activated.  This meant that any filters expecting a
release event would not receive it if another touch was made before release
of the touchMouseId.

We prevented a touch becoming the touchMouseId in the child mouse filters
if there were any existing touches. The normal event delivery, however,
does not require a single touch.

Further to the previous, a touch could become the touchMouseId, even if
the initial press happened when there was an existing touchMouseId. This
meant that a touch could turn into a mouse when the existing mouse event
was released, resulting in a new touchMouseId which hadn't been through
child mouse filters.

Flickable delayed press should be sent via normal event processing, as other
touch/mouse events are now delivered in this way.

We often called childMouseEventFilter() multiple times for each event. This
is bad because the gesture handling relies on claiming a gesture in one event,
then stealing it in the next.

Instead of sending touch to mouse candidate points already determined to be
within the item bounds and already transformed, we sent all of the points
to the mouse recipient.

PinchArea did not store the starting position at the original touch points,
so other items could pass the dragThreshold before PinchArea and steal a gesture
meant for PinchArea.

Task-number: QTBUG-40330
Change-Id: Ic0009c176d3d1cb7cff0b5eda076a2c3ca864136
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
9 years agoFix assertion: ASSERT: "hasException" in file jsruntime/qv4engine.cpp, line 933
Robin Burchell [Thu, 31 Jul 2014 10:21:16 +0000 (12:21 +0200)]
Fix assertion: ASSERT: "hasException" in file jsruntime/qv4engine.cpp, line 933

This was seemingly tripped by trying to catch the exception twice: once with
catchException and once with catchExceptionAsQmlError.

Change-Id: I7176d56fe6e6f748e80d0894e314ed2b8f6e751d
Done-by: Mikko Harju <mikko.harju@jollamobile.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoMake canvas cleanup work propertly...
Gunnar Sletta [Wed, 30 Jul 2014 15:11:02 +0000 (17:11 +0200)]
Make canvas cleanup work propertly...

Depending on which mode we are in, we need to run cleanup
on the right thread and in the right way.

Image canvas doesn't contain any GL resources and can be nuked
right away. The actual QSGTexture is managed by the node, so we
don't need to worry about it.

For FBO it is a bit more complicated.
 - Threaded: We create a cleanup handler that runs makeCurrent
   deleteTexture and doneCurrent and then release the surface
   on the GUI thread.
 - Immediate: Same as threaded, just right away
 - Cooperative: Schedule the texture to be deleted on the
   next sync. The Context doesn't have its own GL context
   in this case, so don't worry about it.

Change-Id: I2d0ae7acfa05561faa52f3cacd767eb18cabaf02
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoDocument how to clean up graphics resources properly
Gunnar Sletta [Thu, 31 Jul 2014 13:28:11 +0000 (15:28 +0200)]
Document how to clean up graphics resources properly

Change-Id: I9a1477dcc608372120d8d8c9b57d8e15f8e64312
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoQQuickWindow: fix resetOpenGLState handling of vertex arrays
Giuseppe D'Angelo [Mon, 28 Jul 2014 19:13:13 +0000 (21:13 +0200)]
QQuickWindow: fix resetOpenGLState handling of vertex arrays

In the core profile it's forbidden to set vertex attributes
(via glVertexAttribPointer and similar) when there's no VAO bound.
Similarly, if there's a VAO bound when calling resetOpenGLState,
then we need to unbind it or those operations will affect its status.

Change-Id: Id7db028ddde9f9429f5a210b8b3d1468888dbce4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoStabilize tst_qquickimage
Gunnar Sletta [Thu, 31 Jul 2014 09:53:59 +0000 (11:53 +0200)]
Stabilize tst_qquickimage

Change-Id: Ib2b3d18c583991959d342e8ca36eb10c299b68bf
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
9 years agoFix crash when throwing an exception from within a constructor
Simon Hausmann [Wed, 23 Jul 2014 13:10:58 +0000 (15:10 +0200)]
Fix crash when throwing an exception from within a constructor

We need to check for the exception before doing anything with the returned
value.

Change-Id: I0086be96b2df2434b95187489d7430ae67f561a1
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
9 years agoAvoid eventloop recursion in touch event handling.
Gunnar Sletta [Wed, 30 Jul 2014 06:22:15 +0000 (08:22 +0200)]
Avoid eventloop recursion in touch event handling.

The eventloop recursion in the threaded render loop
was there to preempt any pending event to make sure
we worked with as recent as possible input events. The
benefit of this was never verified.

The recursion after the actual flush was to fix animations
which were constantly started during touch events, such
as a behavior tracking the mouse point. This is fixed
differently.

Event loop recursion is always dangerous, so we're
doing what we can to avoid it.

Change-Id: I120b2e98350e3b9068153415a671408773fbc769
Reviewed-by: Michael Brasser <michael.brasser@live.com>
9 years agoUse the current context to resolve extensions.
Gunnar Sletta [Wed, 30 Jul 2014 14:31:36 +0000 (16:31 +0200)]
Use the current context to resolve extensions.

When updating the code to not use direct gl calls, this
code was changed to use the context's gl context. The
context doesn't have a context when the rendering happens
on the same thread as the scene graph rendering and
we get a crash.

Change-Id: I8adf62c0ed12bb055982a71ba59af76afeefcca1
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoUpdate the WERROR setting for QtQml
Thiago Macieira [Wed, 30 Jul 2014 17:57:59 +0000 (10:57 -0700)]
Update the WERROR setting for QtQml

Apple Clang 5.1 added the -Wunused-const-variable option from Clang 3.4.

Change-Id: I95abe373d875ead0565d32187720e1b9042af0ca
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
9 years agotst_qqmlapplicationengine: clear $QT_MESSAGE_PATTERN
David Faure [Thu, 24 Jul 2014 10:41:56 +0000 (12:41 +0200)]
tst_qqmlapplicationengine: clear $QT_MESSAGE_PATTERN

The test fails if it's set, because it looks at the output from testapp
and compares it with expected output.

Change-Id: Idc82e2f9024b72cb8be919c2d1bfa4efb4957e4e
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
9 years agoMerge remote-tracking branch 'origin/stable' into 5.3
J-P Nurmi [Wed, 30 Jul 2014 13:41:10 +0000 (15:41 +0200)]
Merge remote-tracking branch 'origin/stable' into 5.3

Conflicts:
tests/auto/quick/qquicklistview/tst_qquicklistview.cpp

Change-Id: I80584b4f7d62cd86d3449e19176118e3bed886c1

9 years agoFix QQmlDelegateModel getting out of sync
Dan Vrátil [Tue, 29 Jul 2014 09:11:11 +0000 (11:11 +0200)]
Fix QQmlDelegateModel getting out of sync

Fixes a regression introduced by a0aefe1, which caused that the
source data model and adaptorModel could sometimes get out of
sync.

Change-Id: Ia6b5fc380cc6cf6549ae857e6da54e088a5dadb5
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
9 years agoQQuickWindow: add some links to resetOpenGLState
Giuseppe D'Angelo [Mon, 28 Jul 2014 19:11:59 +0000 (21:11 +0200)]
QQuickWindow: add some links to resetOpenGLState

... or people might not find it. So link it from the docs of the
various signals which expect the users to leave the GL state as
they found it.

Change-Id: I1ae41958449ded110aa2398b415d593bf04d2b7f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoInvalidate the scenegraph properly in the rendercontrol's stop()
Laszlo Agocs [Tue, 29 Jul 2014 13:59:40 +0000 (15:59 +0200)]
Invalidate the scenegraph properly in the rendercontrol's stop()

Taking the persistent flags from the QQuickWindow was a bad idea. These
are not applicable to the case when an application drives the scene via
QQuickRenderControl. Once stop() is called, all resources must be
released since the context itself will typically be destroyed afterwards.

Task-number: QTBUG-40435
Change-Id: Iaa3b950e60ec36783a12074d706e1a501573f110
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoIntroducing QQuickWindow::scheduleRenderJob()
Gunnar Sletta [Fri, 4 Jul 2014 21:50:50 +0000 (23:50 +0200)]
Introducing QQuickWindow::scheduleRenderJob()

[ChangeLog][QtQuick][QQuickWindow] Added
QQuickWindow::scheduleRenderJob(), a convenience alternative to the
equivalent signals for one-shot tasks.

Change-Id: I5e4f0d67d5223f7fd77bca394e2a85810fadd335
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoMove QSGRenderer::updateStencilClip down to QSGBatchRenderer
Jocelyn Turcotte [Wed, 2 Jul 2014 14:56:26 +0000 (16:56 +0200)]
Move QSGRenderer::updateStencilClip down to QSGBatchRenderer

This convenience method is currently only used by the batch renderer.
Moving it allows removing the QOpenGLFunction inheritance of
QSGRenderer and unbinding it slightly from the rendering implementation.

Change-Id: I4322952f843de8d950ced32885feee8d6c4a2730
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoRemove dead code in QSGRenderer
Jocelyn Turcotte [Wed, 2 Jul 2014 15:09:12 +0000 (17:09 +0200)]
Remove dead code in QSGRenderer

QSGRenderer::draw, QSGRenderer::setProjectionMatrixToDeviceRect
and the QSGBindableFbo class aren't used anywhere anymore.

Change-Id: Ia00c60c288e1b89beaada6b2bbe7022ef9367391
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoIntroducing QQuickItem::sceneGraphInvalidated/sceneGraphInitialized
Gunnar Sletta [Fri, 4 Jul 2014 13:43:55 +0000 (15:43 +0200)]
Introducing QQuickItem::sceneGraphInvalidated/sceneGraphInitialized

[ChangeLog][QtQuick][QQuickItem] Added signals sceneGraphInitialized and sceneGraphInvalidated

Change-Id: Idaea88bc743f0637d093cf1ba7ac4f78acd7e6ad
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoLeave the depth mask on after rendering.
Gunnar Sletta [Mon, 28 Jul 2014 14:58:16 +0000 (16:58 +0200)]
Leave the depth mask on after rendering.

Try to be compatible with raw GL when possible.

Change-Id: Id6e17da2d8c134362a5428de970cd5e562f57143
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
9 years agoMerge remote-tracking branch 'origin/5.3' into dev
Frederik Gladhorn [Tue, 29 Jul 2014 10:49:37 +0000 (12:49 +0200)]
Merge remote-tracking branch 'origin/5.3' into dev

Change-Id: Id95f7b01de36bccecbb7b73acc041654a1fe2ebe

9 years agoRemove metaobject revisioning for QQuickScreenAttached
Alan Alpert [Fri, 11 Jul 2014 01:50:02 +0000 (18:50 -0700)]
Remove metaobject revisioning for QQuickScreenAttached

Attached property versioning is not currently fully supported. Initial
approach was to add the version tags and not enforce them until you
could version attached properties. However the QML engine is currently
erroring on this. Specific error example:
""Screen.onNameChanged" is not available due to component versioning "

Workaround recommended in the JIRA task is to just not version them,
until attached property versioning is fully implemented.

Task-number: QTBUG-35569
Change-Id: I5ded7eb223ec00f70d847b3fac09ec240d5d7901
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
10 years agoDon't dereference null pointer.
Sérgio Martins [Sat, 26 Jul 2014 17:31:22 +0000 (18:31 +0100)]
Don't dereference null pointer.

Task-number: QTBUG-40448
Change-Id: I75eb886ae765191101d6b01ebd038211e5fe8fba
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoFlickable: Cancel interaction on interactive changes
Albert Astals Cid [Wed, 23 Jul 2014 13:40:42 +0000 (15:40 +0200)]
Flickable: Cancel interaction on interactive changes

Otherwise if you have a listview with a flickable inside with a mouseare inside
the pressed is never set to false if you make the interactive property of the
outer list depend on the moving of the inner flickable. This makes that when
later you change currentIndex of the list and you have
StrictlyEnforceRange set, the list won't move because it still thinks it is pressed

Change-Id: I2c2021f486fc0a31840c3f2199bc7cb76dc01e3e
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoFix include to proper <>
Frederik Gladhorn [Thu, 17 Jul 2014 13:58:50 +0000 (15:58 +0200)]
Fix include to proper <>

Change-Id: I54b17480c1cca81c91c823f1f4ab9fe82e44f083
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
10 years ago Don't try to draw shader effect sources with dims < 0.
Gunnar Sletta [Mon, 28 Jul 2014 08:11:05 +0000 (10:11 +0200)]
 Don't try to draw shader effect sources with dims < 0.

Task-number: QTBUG-40099
Change-Id: I0eb0d877963a9394765ec8e0f10569a98a263743
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoQQuickMouseArea: Mark override functions with Q_DECL_OVERRIDE
Albert Astals Cid [Thu, 24 Jul 2014 09:37:49 +0000 (11:37 +0200)]
QQuickMouseArea: Mark override functions with Q_DECL_OVERRIDE

Change-Id: I6fb5fd48a24affc463c5eb7ea0e80c81fab33f66
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
10 years agoMerge remote-tracking branch 'origin/5.3' into dev
Simon Hausmann [Sat, 26 Jul 2014 07:14:44 +0000 (09:14 +0200)]
Merge remote-tracking branch 'origin/5.3' into dev

Conflicts:
src/qml/compiler/qv4ssa.cpp
src/qml/jsruntime/qv4arrayobject.cpp
src/qml/jsruntime/qv4engine.cpp

Change-Id: Ie3ef6202b6a3a8521971e1be10c40c6a2db6989c

10 years agoFix interaction of garbage collector with JS objects during QML type instantiation
Simon Hausmann [Wed, 14 May 2014 14:04:33 +0000 (16:04 +0200)]
Fix interaction of garbage collector with JS objects during QML type instantiation

It may happen that during the lengthy process of instantiating a tree of
objects for QML, the garbage collector runs.

For objects created by QML we support different ownership models, for example
in QtQuick visual parents keep their visual children alive, despite perhaps a
lack of QObject parentship. That ownership becomes active once the QML
autoparent function has assigned the correct visual parent, which happens after
object instantiation (after QQmlObjectCreator).

Similarly when a composite type is created, its QObject parent is only set
after all properties have been set. The root QObject is kept alive through a
special boolean, but if the sub-objects aren't children yet, their JS wrapper
might get deleted. For composite types with var properties, that also means
their var properties get deleted, such as the model property of TableView.qml
in the bug report.

In the future we want to support creating QWidget hierarchies with QML, which
also for layouts may rely on a delayed parent assignment for layouts.

To accommodate all this, this patch introduces an array on the JS stack that
keeps track of all JS wrappers for all QObjects created. This array is alive
during object tree creation. Afterwards, the different ownership models take
over, for example the auto parent function assigning a visual parent.

This patch also fixes an off-by-one in the total object count calculation
for composite types, where when instantiating a composite type as a sub-object
we counted the sub composite's object count but forgot the object itself.

Task-number: QTBUG-38835
Task-number: QTBUG-39966
Change-Id: I6104b2434510642081e0c54793ed296adeca7481
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoqmlRegisterCustomExtendedType, qmlRegisterExtendedUncreatableType
Paul Lemire [Tue, 15 Jul 2014 08:35:24 +0000 (10:35 +0200)]
qmlRegisterCustomExtendedType, qmlRegisterExtendedUncreatableType

There are cases in Qt3D where we'd like to be able to register uncreatable
extended types. The main use case is having an abstract class that has an
extension class so as to have a clean separation between the C++
and QML API. Implementations of the abstract can then be easily registered
to QML and rely on the extension class for QML specific properties.

The other feature we'll need in the near future is the ability to create
extended QML types that use a custom parser.

Two new type registration method were added to qqml.h to fulfill those
needs. Unit tests for those are present in qqmlecmascript and qqmllanguage.

Change-Id: I15b2cd791ffd36b537305af1873491c079d4094e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoDo not use mark() when marking ExecutionContexts
Lars Knoll [Fri, 25 Jul 2014 08:13:50 +0000 (10:13 +0200)]
Do not use mark() when marking ExecutionContexts

Some execution contexts in the parent chain can be allocated
on the C stack instead of the GC heap. Calling mark() on those would
push them onto the GC stack (which is identical to the JS stack).
In rare cases the reference can survive to live into the next call to
gc(), causing invalid accesses to already deleted contexts.

Change-Id: I709f58de27be9386cf70707c84e4c86c7c303fa7
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoAdd Sha1.js
Albert Astals Cid [Wed, 23 Apr 2014 13:56:32 +0000 (15:56 +0200)]
Add Sha1.js

Contains a self test that does some interesting JS that was causing an assert
when run on i386 (QTBUG-38451) so it seems interesting to keep
around for the future

Change-Id: I98d0892d281360425ad2c0b28f34feb6c0945dd2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoDon't recreate header and footer unnecessarily
Martin Jones [Wed, 23 Jul 2014 07:51:37 +0000 (17:51 +1000)]
Don't recreate header and footer unnecessarily

The only time that they need to be recreated is if the orientation
changes (even then, a good implementation could handle it, but no
point requiring that now).

Task-number: QTBUG-40375
Change-Id: Id0215fb812724827bb139cda8f8dc6208c703852
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
10 years agoV4 JIT: enable the JIT when compiling with clang on ARM.
Erik Verbruggen [Thu, 24 Jul 2014 13:57:29 +0000 (15:57 +0200)]
V4 JIT: enable the JIT when compiling with clang on ARM.

The macros that were used to detect Thumb2 support on the cores were gcc
specific.

Change-Id: I76959899b41f440d4b7ad7a5436059a3dc102111
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoClear the visibleImgTags list when setting up the text layout
Andy Shaw [Tue, 24 Jun 2014 12:05:43 +0000 (14:05 +0200)]
Clear the visibleImgTags list when setting up the text layout

Since the text layout is being redone then the visibleImgTags will be
repopulated, therefore it should be cleared first so that it doesn't have
duplicated entries.

Change-Id: I415f94326e156ae265bc044544f2bb0d7146ce4c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
10 years agoImprove programmatic flicking of ListView (and Flickable).
Michael Brasser [Thu, 24 Jul 2014 00:39:26 +0000 (19:39 -0500)]
Improve programmatic flicking of ListView (and Flickable).

Fix bug when programmatically flicking ListView after a real flick in the
opposite direction. Also ensure a programmatic flick can flick past
bounds when situated at the bounds and DragAndOvershootBounds is set.

Task-number: QTBUG-38209
Change-Id: If4a2f65d0e7cb620b9af21f8a25a8a8797976125
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoQQmlError::toString: improve handling of empty urls.
David Faure [Fri, 11 Jul 2014 14:15:01 +0000 (16:15 +0200)]
QQmlError::toString: improve handling of empty urls.

"file::2:23: ..." is strange to read. Show "<Unknown File>:2:23: ..." instead,
by treating empty urls (including "file:") as unknown, and by still showing
line and column numbers in such a case.

This change makes it possible for QUrl::fromLocalFile("") to return an
empty url rather than "file:", which this module was relying upon in the tests.

Change-Id: I91918090fd4e0aa9a25dbbb18893a0ce94140e21
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoV4 IR: loop detection: also record loop information separately.
Erik Verbruggen [Thu, 10 Jul 2014 09:44:02 +0000 (11:44 +0200)]
V4 IR: loop detection: also record loop information separately.

Now loop-specific algorithms can easily query which blocks are loop
headers, which blocks make up a loop body, and whether loops are nested.

Change-Id: I442af34d3cca816b61ee761335ff3571b72a6d3e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoV4 IR: change dominator tree to hold on to less memory.
Erik Verbruggen [Thu, 10 Jul 2014 09:40:26 +0000 (11:40 +0200)]
V4 IR: change dominator tree to hold on to less memory.

Move all data needed to calculate the immediate dominators into a struct
that is freed immediately after finishing this calculation.

Change-Id: Id0cefa4088643539d59c4c593cba1848422c1726
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoV4 IR: add IR verification functions.
Erik Verbruggen [Thu, 10 Jul 2014 09:29:31 +0000 (11:29 +0200)]
V4 IR: add IR verification functions.

- CFG verification: check if all edges are correctly registered on both
  the outgoing basic-block and the incoming one, and that jumps/cjumps
  targets correspond to outgoing edges.
- immediate dominator verification: check if the current immediate
  dominators are the same as they would be if being recalculated from
  scratch.
- no shared expressions/statements: check if not more than one IR node
  points to a statement/expression.

Also add a function that writes out the CFG as a .dot file for graphviz.

Will be used in upcoming patches.

Change-Id: I784561f581f9f8ec22f3ab449afd87a9e7a8bdaf
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoDoc: Merged two pages titled "Qt Quick QML Types".
Jerome Pasion [Tue, 15 Jul 2014 13:40:04 +0000 (15:40 +0200)]
Doc: Merged two pages titled "Qt Quick QML Types".

-kept the \qmlmodule page.
-there are two pages with the same titles and it is difficult
 to discern between the two.
-the grouping is lost, but those can be restored in either the use case
 or concept topic pages.
-modified landing page and other pages which link to the unmerged
 document.

Change-Id: I58468c22f0621506e477f30ae2411a382d57b982
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoV4: work around a bug in libc++'s std::vector<bool>
Erik Verbruggen [Tue, 1 Jul 2014 11:34:31 +0000 (13:34 +0200)]
V4: work around a bug in libc++'s std::vector<bool>

The ++operator of std::vector<bool>::iterator in libc++ has a bug when
using it on an iterator pointing to the last element. It will not be set
to ::end(), but beyond that. (It will be set to the first multiple of
the native word size that is bigger than size().)

See http://llvm.org/bugs/show_bug.cgi?id=19663

Task-number: QTBUG-39911
Change-Id: Ic244d9c90ee6b596261a6e322301c411a14820a8
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoQQmlComponent::create(): visual items must have a visual parent.
Mitch Curtis [Thu, 24 Jul 2014 08:13:42 +0000 (10:13 +0200)]
QQmlComponent::create(): visual items must have a visual parent.

There seems to be a bit of confusion about this on public forums.

Change-Id: Id193de541e7d7e353dc5d75b64a15f481e2cf8b6
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoClean up the textures when deleting the content
Andy Shaw [Tue, 24 Jun 2014 12:01:35 +0000 (14:01 +0200)]
Clean up the textures when deleting the content

Whenever the content is deleted then the textures will be recreated so the
existing list of textures should be deleted and cleared to reclaim the
memory.

Change-Id: I4fdf77817a5f4b2330414e9d113c669d18de9af8
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoV4 IR: change debug code enabling to use compile-time constants
Erik Verbruggen [Thu, 10 Jul 2014 09:21:10 +0000 (11:21 +0200)]
V4 IR: change debug code enabling to use compile-time constants

This will make sure that debug code gets compiled/checked, even when
it is disabled. An optimized build will remove the code.

Change-Id: Ia32de550ea95c44afa5ed84bc17cfeeada06f2f4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoV4 IR: fix printing with register information.
Erik Verbruggen [Fri, 27 Jun 2014 13:10:39 +0000 (15:10 +0200)]
V4 IR: fix printing with register information.

The register numbers for non-FP registers overlap with the FP ones. So
when keying a single mapping on number, this resulted in the FP ones
overwriting the non-FP ones. This patch splits the mapping in two.

Change-Id: I95042b52a423eaaa96ed55d6c8ef12a2eb99f191
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoV4 RegAlloc: do not add duplicate register hints
Erik Verbruggen [Wed, 2 Jul 2014 09:16:47 +0000 (11:16 +0200)]
V4 RegAlloc: do not add duplicate register hints

Change-Id: Id4b9b9481fe5c6b9cdab077b3957a0442fcff547
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoSchedule layout changes to avoid refill() recursion.
Mitch Curtis [Mon, 21 Jul 2014 12:55:30 +0000 (14:55 +0200)]
Schedule layout changes to avoid refill() recursion.

Otherwise we add duplicate item delegates.

Task-number: QTBUG-40298
Change-Id: I8a2221d72f458c892720a71d87513808a5d725a6
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoFix incorrect acceptableInput value on construction.
Aaron McCarthy [Tue, 22 Jul 2014 07:39:53 +0000 (17:39 +1000)]
Fix incorrect acceptableInput value on construction.

The value for acceptableInput was being calculated every time the
property value was read. This can lead to situations where the value
returned from successive property reads is different even though no
acceptableInputChanged() signal is emitted between the two calls.

This can be seen during QML component construction where emission of
the changed signal is suppressed until the component completes and the
value of acceptableInput changes as the other properties are set. If
the property is read during binding evaluation an intermediate value
can be seen and the QML engine will not re-read the property until
after the changed signal is emitted. This doesn't happen until the true
value of the acceptableInput property is toggled.

Fixed by changing the property getter to returned the precalculated
value of acceptableInput and ensuring that this value is set when
correctly.

Change-Id: Id3ba3a34988ff50f590e4f8330b873f390eaa025
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoAdd autotest for incorrect steal of flick.
Michael Brasser [Wed, 26 Mar 2014 19:32:29 +0000 (14:32 -0500)]
Add autotest for incorrect steal of flick.

Task-number: QTBUG-37859
Change-Id: I86aa231ba264569a21d0b6cd109096eb5dd7a2fe
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoRename main.cpp to qmljs.cpp.
Erik Verbruggen [Fri, 27 Jun 2014 11:34:42 +0000 (13:34 +0200)]
Rename main.cpp to qmljs.cpp.

Finding the one "right" main.cpp (when there are 90 of them) is hard. So
give at least this important one a good name.

Change-Id: I121f8cbd67bfa9e8ba9ccac384eed45eb46f0b75
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoDo not crash AtlasTexture if image is null
David Edmundson [Tue, 15 Jul 2014 13:27:30 +0000 (15:27 +0200)]
Do not crash AtlasTexture if image is null

Change-Id: I77ae68f523641a2e6b75623200f65407b64e1b40
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoV4 IR: copy arguments to temps at function start.
Erik Verbruggen [Fri, 27 Jun 2014 11:40:24 +0000 (13:40 +0200)]
V4 IR: copy arguments to temps at function start.

When arguments cannot "escape" from the current context, and when the
arguments array is not used, actual arguments can be treated the same
as temporaries instead of memory locations. This has the benefits that
they are subject to the same optimizations, and type deduction can
assume that the value/type didn't change since its assignment. Another
effect is that the values can be kept in registers, and loads from the
stack take only 1 indirect load instead of 2 (from the formals array).

Change-Id: I209da7991ec5d903b3c5acdbcaf6b1cc67502520
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoFix Node object leak in QQuickTextEditPrivate
Liang Jian [Thu, 17 Jul 2014 07:40:18 +0000 (15:40 +0800)]
Fix Node object leak in QQuickTextEditPrivate

Delete Node objects stored in textNodeMap at two places to prevent leak.

Change-Id: I8eb0d1af900c94e1fab2f55b689de393e674f0aa
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
10 years agoMinGW build fix
Simon Hausmann [Thu, 17 Jul 2014 14:22:44 +0000 (16:22 +0200)]
MinGW build fix

It is necessary to export String::Data for simplifyString() when called
from qquickcontext2d.cpp and not inlined.

Similarly we need to export BuiltinFunction::Data for tst_qv4debugger

Change-Id: Ic6c0b5ac49c291bd548b46e585e0a2bcc4ba3664
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoCleanup: Get rid of __data members
Simon Hausmann [Thu, 17 Jul 2014 13:56:30 +0000 (15:56 +0200)]
Cleanup: Get rid of __data members

These are not needed anymore

Change-Id: Ib834aa294e84ca9fbdd5b6850d5bc172e8b54ba1
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoFix build on Windows
Simon Hausmann [Thu, 17 Jul 2014 11:43:07 +0000 (13:43 +0200)]
Fix build on Windows

* Add missing exports
* Define otherwise unused ArrayData vtbl - somehow the linker wants to see
the symbols despite them being unused.

Change-Id: I83a7ad4dea89bffc16018093a3cd4f4feecbfa3c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoFix Scoped(Value) assignment/construction on 32-bit
Simon Hausmann [Thu, 17 Jul 2014 09:03:08 +0000 (11:03 +0200)]
Fix Scoped(Value) assignment/construction on 32-bit

Make sure to also set the tag value correctly.

Change-Id: I3c6589d25b3a20f255581fb4c9248abfe6af3594
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoDisable T::Data compile time size assertion for some compilers
Simon Hausmann [Thu, 17 Jul 2014 08:35:15 +0000 (10:35 +0200)]
Disable T::Data compile time size assertion for some compilers

The fallback implementation of Q_STATIC_ASSERT does not support the use
of "this" in the condition for all compilers, so let's use this macro only
with proper compilers and skip it otherwise.

Change-Id: Ia78ef9cc641dc403be66576033e35e61e28963e5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoPorted array data to the new object structure
Simon Hausmann [Fri, 13 Jun 2014 14:19:25 +0000 (16:19 +0200)]
Ported array data to the new object structure

Change-Id: Ice53925f42924c889d265bcd1e4af7b9bd356fa8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoFix Managed::as<>() method
Lars Knoll [Fri, 13 Jun 2014 14:04:39 +0000 (16:04 +0200)]
Fix Managed::as<>() method

The as<> casting method was not doing the right thing
in 100% of the cases. It only checked if the object in
question was exactly of the type being asked for. It
however didn't check if the object was derived from the
type.

This commit fixes this by adding a parent chain to the
vtables, that is then being used to check this safely
at runtime.

Change-Id: I9e0b13adbda668aee8c7451e2bb71cd6d4e316d9
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoChange the object allocation scheme
Simon Hausmann [Fri, 13 Jun 2014 12:30:03 +0000 (14:30 +0200)]
Change the object allocation scheme

Instead of allocating the data directly, centralize the object and its ::Data
allocation in one place in the memory manager. This is in preparation for
additional pointer indirection later.

Change-Id: I7880e1e7354b3258b6a8965be378cd09c9467d25
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoConvert Execution contexts to new constructor syntax
Lars Knoll [Fri, 9 May 2014 14:50:17 +0000 (16:50 +0200)]
Convert Execution contexts to new constructor syntax

Change-Id: I4bc6a61b7a96139353e20871ff7ff007822c64c3
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoConvert the last Managed types to the new constructor syntax
Lars Knoll [Fri, 9 May 2014 13:23:18 +0000 (15:23 +0200)]
Convert the last Managed types to the new constructor syntax

Change-Id: I11701c586d4715c08feba4650e12904c3fa7ca27
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoConvert String to new constructor syntax
Lars Knoll [Fri, 9 May 2014 13:06:29 +0000 (15:06 +0200)]
Convert String to new constructor syntax

Change-Id: I07f7667d3d72a7d72e6717d194de8d7b15435777
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoConvert more objects to the new constructor scheme
Lars Knoll [Fri, 9 May 2014 12:32:59 +0000 (14:32 +0200)]
Convert more objects to the new constructor scheme

Change-Id: I31b2a1ba4a93f0d4bde68eeb94f13e7224c0cd7b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>