Commit Graph

103 Commits

Author SHA1 Message Date
Laszlo Agocs 9e15fb156a Handle QSG_NO_DEPTH_BUFFER correctly
Just not requesting a depth buffer is insufficient since there's nothing
guaranteeing that the EGL or other implementation will return depthless
configs. When the depth buffer is always there, setting the environment
variable is futile. To do what the user has requested, the value has to
be checked in the renderer too.

Change-Id: I1f572bc6f2f5b5aa94070a239d6e871e3421a51f
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-10-14 07:44:04 +00:00
Ulf Hermann eb30e3d7ee Merge remote-tracking branch 'origin/5.5' into 5.6
Conflicts:
	src/qml/debugger/qv4debugservice.cpp
	src/qml/jsruntime/qv4value_inl_p.h
	src/qml/jsruntime/qv4value_p.h
	src/qml/memory/qv4mm.cpp
	src/qml/memory/qv4mm_p.h
	src/qml/qml/qqmlnotifier_p.h
	src/qml/qml/qqmlproperty.cpp
	src/quick/items/qquickflickable.cpp
	src/quick/items/qquicktextedit.cpp
	tests/auto/quick/qquickwindow/BLACKLIST

The extra changes in qqmlbinding.cpp are ported from changes to
qqmlproperty.cpp that occurred in parallel with writeBinding() being
moved to qqmlbinding.cpp.

Change-Id: I16d1920abf448c29a01822256f52153651a56356
2015-08-18 10:29:47 +02:00
Gunnar Sletta 4336566e48 Support QSGGeometry::lineWidth also in the batched code path.
Change-Id: Ifc664b9c718744b9549953e42ac3450a88403dea
Task-number: QTBUG-47090
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-17 09:54:22 +00:00
Jocelyn Turcotte 26a230ee0e Avoid rebuiding batches during a material animation
Animating a complete batch of geometries bound by property
bindings will cause an unnecessary rebuild of the batch on
each animation step even though it will end up with the
same batch as in the previous frame.

Since the invalidation happens in nodeChanged, any node
change in an updatePaintNode might trigger an invalitation
if it is compared with a material that hasn't been updated yet.

Delay the verification of the DirtyMaterial flag until all
materials have been updated, later on in visitNode, to
make sure that we call compare only on up-to-date materials.

Change-Id: I03c095efc20817813508d959c74b41eae57beedc
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-13 11:42:35 +00:00
Sérgio Martins 138f24d2b3 Fix inefficient usages of qDeleteAll()
No reason to iterate through all items to create a temporary
QList we don't need.

Change-Id: I3c5388f026ded0290afb9dd35fc7934011c4998d
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-06-26 16:50:38 +00:00
Simon Hausmann 9556f6d075 Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
	src/qml/jsruntime/qv4engine_p.h
	src/quick/items/qquickitemsmodule.cpp
	src/quick/items/qquicktext.cpp
	src/quick/util/qquickpixmapcache.cpp
	tests/auto/quick/qquickwindow/tst_qquickwindow.cpp

Change-Id: I90ecaad6a4bfaa4f36149a7463f4d7141f4a516a
2015-06-04 10:28:48 +02:00
Thiago Macieira 30aa0a1cc9 QtQuick: Fix const correctness in old style casts
Found with GCC's -Wcast-qual.

Change-Id: Ia0aac2f09e9245339951ffff13c9589afabc7ade
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-05-13 20:30:26 +00:00
Gunnar Sletta 11f67b80c4 Add some timing breakdown to QSG_RENDERER_DEBUG=render
Change-Id: Ic7ffb48c1a148036bdb14a912d3407e9a1b3b4fd
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-28 05:16:15 +00:00
Mikko Harju f565159fa5 Restore depth buffer usage when last render node is removed
Adding a QSGRenderNode to the scene permanently disabled opaque batches
by disabling depth buffer usage. Reset the depth buffer usage to the
default value once last QSGRenderNode has been removed from the scene.

Change-Id: I760afde83ae9eaaf1b5571c37fd0081eb23b1f20
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-03-18 06:47:53 +00:00
Frederik Gladhorn d8c559c4e2 Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	src/qml/jsruntime/qv4numberobject.cpp

Change-Id: I4e66a03ef4d99cec192c9da30c028fd8c1f4ac0d
2015-03-03 18:21:56 +01:00
Daiwei Li d43a963e49 Fix crash in overdraw and change visualizers
It appears to be possible for node->element()->batch to be NULL

Task-number: QTBUG-43129
Change-Id: If6e4e265a02ee305bf3aa9cad387b7a73648367a
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-25 07:28:48 +00:00
Allan Sandfeld Jensen 373ce88783 Cleanup math function includes and usage
Use std::math on floats and doubles, and qMath on qreals, and only
include the math headers actually needed.

Change-Id: I1d511d7b1bac0050eaa947c7baee760b736858bf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-02-19 10:49:03 +00:00
Jani Heikkinen c5796292ad Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9
Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
2015-02-12 10:28:11 +00:00
Laszlo Agocs b8a3b410cf Remove unnecessary calls to initializeOpenGLFunctions
We now have a change in QtGui that guarantees that the returned versionfunctions
object is initialized as long as the context is current.

Change-Id: I2e76e91bb4265a95fae657f6cacd92a789d56782
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-02-11 16:27:31 +00:00
Berthold Krevert 7d4bf1868d Use correct QOpenGLFunctions object
If core profile is used, QOpenGLContext::versionFunctions returns 0
if a legacy or a non-core profile version is requested.

That means, when using core profile we have to request a
QOpenGLFunctions_3_2_Core object (which is the lowest OpenGL
version that comes with profiles). Otherwise the application would
run into a segfault.

Change-Id: I8119e5fbeafccf14d59680617172c71e60e188ce
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-04 15:24:08 +00:00
Berthold Krevert ec699494f5 Move VAO binding to Renderer::render()
Amongst other things, QSGRenderer::preprocess() triggers the rendering of
QQuickShaderEffectSource items into framebuffer objects. The renderers
responsible for these QQuickShaderEffectSource items bind and unbind
their own VAOs, which messes up the VAO state set in QSGRenderer::preprocess().

Scenegraph nodes must not depend on the vao state set by the renderer anyway as
the binding has to be considered as an implementation detail.

Change-Id: Idec34c65397394e12e7f8419a1c9633d5f70a22e
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-04 15:23:55 +00:00
Ulf Hermann 392329b44a Drop trailing vertices in GL_LINES and GL_TRIANGLES drawing modes.
This results in more correct behavior if you create nodes with a
number of vertices that doesn't match the drawing mode.

Change-Id: Ic0f59a4019a6b4087b527b7c9b38c35a9e02ece8
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-16 16:12:54 +01:00
Simon Hausmann 291aea1463 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	.qmake.conf
	src/qml/jsruntime/qv4context_p.h
	src/qml/jsruntime/qv4debugging.cpp
	src/qml/jsruntime/qv4engine.cpp
	src/qml/jsruntime/qv4functionobject_p.h
	src/qml/jsruntime/qv4qobjectwrapper.cpp
	src/quick/scenegraph/shaders/visualization.frag
	tests/auto/qml/qjsengine/tst_qjsengine.cpp

Change-Id: I492e8546c278f80a300a2129e9a29d861e144a30
2015-01-16 12:46:52 +01:00
Gunnar Sletta a33879b811 Clean up renderer visualization a bit.
viewport was currently unused and adreno 305 was confused by
the tweak.w > 0.0 when the input was 0.0f, so write it
in a slightly more straightforward manner.

Change-Id: I101ff71dcb04ca531e91cc5522876d71f368cdc8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-12 19:07:09 +01:00
Jocelyn Turcotte a832461468 Fix the vertex ordering of merged triangle strips
Culling and gl_FrontFacing depend on the vertex order matching the
value set through glFrontFace. To match the default counter-clockwise
order we need to preserve the parity of triangles relatively to the
start of the indices argument of glDrawElements, but we break this
parity because of the degenerate triangles between merged strips.

Fix the issue by skipping the first degenerate triangle, the parity
of following strips will be preserved since they are then separated
by two triangles.

This fixes a regression of
tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml
triggered by 38cab579a0.

Change-Id: Iefa7eaab68112d31be9d8646bd288eb000528cd5
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-06 18:26:21 +01:00
Gunnar Sletta a371bac3fb Reuse the memory we use for vertex uploads.
Every batch would have its own buffer with its own memory
and the original idea was that it would stabilize so that
the same batch would be used over and over, so the memory
allocatd for each batch's buffer would be reused. In practice
batches get discarded and recycled in somewhat arbitrary
order so we always end up reallocating.

Instead, use a single buffer for all uploads. This saves us several
reallocations per frame, and also prevents pooling of several
potentially large allocated blocks inside the renderer.

The exception is when using visualization or for drivers
which have broken index buffer support (nouveau only currently),
where we keep the existing behavior as the buffer data is
needed during rendering and visualization.

Change-Id: Id29095e00128ec1ee6d4ac3caa8f2c17cc7bbd27
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-01-06 17:18:27 +01:00
Ulf Hermann 7f325ecbc2 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>
2014-12-16 17:42:27 +01:00
Jocelyn Turcotte 7955c63bd1 Fix the visualization of unmerged batch geometries without index
indexData() is null for most QSGGeometryNodes subclasses in QtQuick,
make sure that we draw using vertex array data in that case.

The patch also increases the contrast of the line pattern, since it
is almost invisible with brighter hue values, to make it easier to
see which batches aren't merged.

Change-Id: Ife7b26692ee318feb0810ee0e787289eb151ea8a
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-12-09 14:36:38 +01:00
Simon Hausmann 4876c2aa95 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/qml/jsruntime/qv4errorobject_p.h

Change-Id: I7fc1211295738a9fae32b783a9f001f1613785e4
2014-11-04 22:04:19 -08:00
Eskil Abrahamsen Blomfeldt 326c4d80f2 Fix disappearing nodes when adding in two levels of batch root
When having e.g. a clip node inside another clip node and adding
children to the innermost, we would get into the situation where
we did a partial rebuild for the outermost root, but its available
render order count would not be updated to reflect the change
deeper down in the tree. Since the z range would be based on the
outermost batch root's knowledge of the maximum render order in
the tree, what would happen is that the z of the rendered nodes
would increase steadily until they went outside of the viewing
volume and disappeared.

When decreasing the available order count of a batch root, we need
to also decrease the available order count of its parents. If any
of them drop below zero, we need to rebuild the render lists.

[ChangeLog][QtQuick] Fixed nodes sometimes disappearing when
adding many new nodes to the tree.

Change-Id: I39c34acf0e1e0e87601f0fcd983f8da38cee029f
Task-number: QTBUG-42096
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-11-04 09:12:16 +01:00
Gunnar Sletta d252ba67da Use an allocator for QSGBatchRenderer::Node and Element instances.
Cuts down quite a bit on the time spent on the render thread during
the sync phase.

Change-Id: Ide8c4348141c84ed8abd9a869607a022652c2828
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2014-11-02 11:27:55 +01:00
Frederik Gladhorn 4e33b069c4 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/quick/items/qquickaccessibleattached_p.h
	src/quick/items/qquickwindow.cpp
	src/quick/scenegraph/qsgthreadedrenderloop.cpp

Change-Id: I8bf07487a75f9d1b0d6efa5914dd06875fc9654d
2014-10-29 10:48:54 +01:00
Samuel Gaist 0f65f30cf4 Fix build with QT_NO_DEBUG_OUTPUT defined
The use of the qDebug() macro to construct a QDebug object fails when
QT_NO_DEBUG_OUTPUT is defined when building Qt.
This patch aims to fix this.

[ChangeLog][General][Build] Can now build with QT_NO_DEBUG_OUTPUT
defined

Change-Id: If807ee3439db2a98b4d146f75860a98f40c247ec
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-10-24 01:21:59 +02:00
Frederik Gladhorn e1dfb78667 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/quick/items/context2d/qquickcanvasitem.cpp
	src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
	src/quick/scenegraph/coreapi/qsgrenderer.cpp
	src/quick/scenegraph/qsgadaptationlayer.cpp
	src/quick/scenegraph/qsgrenderloop.cpp
	src/quick/scenegraph/qsgthreadedrenderloop.cpp
	src/quick/scenegraph/qsgwindowsrenderloop.cpp
	src/quick/scenegraph/util/qsgatlastexture.cpp
	src/quick/scenegraph/util/qsgtexture.cpp
	src/quick/util/qquickprofiler_p.h

Change-Id: Ie274c3baf72a8a0711c87d67238d68e2b2887429
2014-10-09 18:14:56 +02:00
Thiago Macieira 22792559f5 Don't do qgetenv on library load
Bad for two reasons: first, it increases the load time of the
application and second, it makes it impossible to to setenv/putenv from
main(). The latter is useful if you need to work on an embedded device
that doesn't allow setting environment variables.

Change-Id: Id543f77336d7ac2e4ea820b51f55ce5a40a33b4e
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-22 19:18:20 +02:00
Ulf Hermann 7d03dfe419 Use QQuickProfiler's own timer to sample events
Like that the timings are more accurate.

Task-number: QTBUG-39876
Change-Id: Ia6bdce9c8089417e88797ec3a98c8a3e367f73f2
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-12 09:54:11 +02:00
Ulf Hermann 1de6e7b8e0 Select specific features to be recorded when profiling QML
Some features, like the memory profiler, create huge amounts of data.
Often enough, we're not actually interested in all the data available
from the profiler and collecting it all can lead to excessive memory
consumption. This change enables us to optionally turn various aspects
of QML profiling off.

Task-number: QTBUG-41118
Change-Id: I7bb223414e24eb903124ffa6e0896af6ce974e49
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-11 11:41:27 +02:00
Gunnar Sletta 85627c26af Fix debug output from renderer.
It was wrong when we ran without depth buffer or when we used the
separate ibo code path.

Change-Id: Ie6e4bfc99ee2a4a593e45be7d9af9af17896bcba
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-11 10:34:57 +02:00
Jani Heikkinen e7ceacda70 Update license headers and add new licenses
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3 & LICENSE.GPLv2
- Removed LICENSE.GPL

Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0
Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
2014-08-25 11:28:46 +02:00
Jocelyn Turcotte 9c67029ee5 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>
2014-07-29 17:54:43 +02:00
Gunnar Sletta 6457541ddc 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>
2014-07-29 17:40:51 +02:00
Gunnar Sletta 92658ebb75 Verbose fatal instead of crash when the scene graph state is invalid.
Change-Id: I9a55bcbf9e94084c0cadac561e4707d47f5f8744
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-07-04 17:39:45 +02:00
Ulf Hermann 5f24d63d89 Properly collect polish timings from all render loops
Previously the polish timings were collected incorrectly from the
windows render loop and not at all from the basic render loop. By
collecting the polish times at the right places we can get rid of
the 2-argument profile macro as well.

Task-number: QTBUG-39876
Change-Id: I0b4aaf87162c652b8dcea6cd4f54db053f8312fe
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-07-02 10:41:14 +02:00
Gunnar Sletta 7a8cc93a05 Use categorized logging for all things scenegraph.
Change-Id: I865ee838b0fd6c257b7189f24130012b98206fd1
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-07-01 14:18:41 +02:00
Simon Hausmann 9932617582 Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	src/quickwidgets/qquickwidget.cpp

Change-Id: Id4b080aea713df68608847bb82570231e37ce536
2014-06-13 23:10:03 +02:00
Gunnar Sletta ec8f1ad27e Fix opacity issue in the renderer.
Given the following tree:

OpacityNode
    |
TransformNode (which is a batch root)
    |
GeometryNode

If both opacity and transform nodes were changed this frame, we would
hit the optimized "scrolling" path while traversing the tree and abort
updating that subtree. As a result the opacity change was not
propegated to the geometry node and it would be rendered incorrectly.

Fix this by skipping the optimized path when there are opacity changes
in an ancestor.

Task-number: QTBUG-39190
Change-Id: Ieaebfe3de62b961204bd3103fe9913d60e75e412
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-06-05 16:31:00 +02:00
Laszlo Agocs e950557e11 Avoid direct GL calls in Quick
Change-Id: I9b8673fb3292c9d5ad2f9e8e63f56dc661699be6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-05-23 12:23:09 +02:00
Frederik Gladhorn 66646dd8c3 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	.qmake.conf
	src/plugins/accessible/quick/quick.pro
	src/quick/items/qquickpincharea.cpp
	src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
	src/quick/scenegraph/qsgthreadedrenderloop.cpp

Manually adjusted for TestHTTPServer constructor change:
    tests/auto/quick/qquickimage/tst_qquickimage.cpp

Change-Id: I5e58a7c08ea92d6fc5e3bce98571c54f7b2ce08f
2014-05-10 11:53:47 +02:00
Gunnar Sletta ea164757cd Use correct matrix for render nodes.
Change-Id: I8c137383fa32a64ba64ffb4ed48aa123d0ebf000
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-05-07 13:53:57 +02:00
Gunnar Sletta ef5a68dfa1 Make sure we rebuild batches properly after a Blending material change.
If a node sent DirtyGeometry and DirtyMaterial in the same round and
DirtyGeometry triggered its batch to be invalidated, we would take the
no-batch code path which did set the rebuild state to BuildBatches. This
looks ok on screen, but if the node changed from alpha to opaque, it
would not be put into an opaque batch. For things like full screen
rectangles, this can potentially hurt performance.

To prevent doing a full rebuild on any material change on batchless
items (aka all Rectangle nodes), we store the blend state of the material
in the element and do a full rebuild only when blend state changes.

Change-Id: Ifdf06fb72ef02ca47a135c821ddbcbe0d164ca29
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-05-01 14:28:05 +02:00
Laszlo Agocs 50d7c049e3 Follow QOpenGLContext API renaming
Task-number: QTBUG-38564
Change-Id: Ice1170339f7d650fcb6accfccf325471629343d6
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-04-25 18:47:33 +02:00
Gunnar Sletta 4e4228e0b1 Support shutting down the render thread without an OpenGL context.
[ChangeLog][QtQuick][SceneGraph] There might not be an OpenGL context
bound when QQuickWindow::sceneGraphInvalidated() is emitted if an
error occurs while cleaning up the scene graph (such as
EGL_CONTEXT_LOST). This is according to the documentation, but has
never occurred in practice before.

Change-Id: I13dbfbb4b6d0d27fa42fcb8b54df16ea02284807
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-04-23 09:10:18 +02:00
Gunnar Sletta bd54c80e4b Don't crash when render node doesn't have a batchroot
Change-Id: Ib8f70414eb477b4ec45097c8784a5fe1375cf012
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-31 08:48:08 +02:00
Gunnar Sletta 02dbf5b558 Skip nodes with no vertices when preparing batches.
Nodes with no veritces end up overlapping with everything so they
tend to lead to poor batching. In my specific case, the empty
nodes came from the QQuickTextNode, but it is a valid usecase
so better to handle it gracefully in the renderer.

Change-Id: Ic09c202a2675f806f2124cd436027afcd2654452
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2014-03-27 19:31:50 +01:00
Gunnar Sletta 1145d76eba Invalidate all batches potentially affected by a change.
When two separate changes have occurred, we need to not
only invalidate the batches directly overlapping those, but
also any batch which has render orders between the two. So,
keep track of the range of invalidated render orders and
invalidate everything in between.

Task-number: QTBUG-37422
Change-Id: Ie5a289d5c569b84917ec9ac52671173c566e69b3
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-03-19 15:48:50 +01:00