<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qt/qtdeclarative.git, branch 6.1</title>
<subtitle>Qt Declarative (Quick 2)
</subtitle>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/'/>
<entry>
<title>Revert "Fix for possible crash in QSGDefaultLayer::grab"</title>
<updated>2021-10-13T05:27:47+00:00</updated>
<author>
<name>Laszlo Agocs</name>
<email>laszlo.agocs@qt.io</email>
</author>
<published>2021-10-11T13:37:33+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=c46b330fa721e82849194472651430ce255d06e1'/>
<id>c46b330fa721e82849194472651430ce255d06e1</id>
<content type='text'>
This reverts commit 1c5de027d0c31d1d6697bd0557128d92207763d8.

The fix here is not correct. Calling a QSGRhiLayer function from the gui
thread is very wrong and can cause a set of unexpected issues. The
Address Sanitizer catches this by recognizing that the render thread is
trying to do something with an object destroyed in the meantime on the
main thread in the layer-&gt;setItem(null) call.

The issue the original fix is trying to address needs to be addressed in
some different form.

Fixes: QTBUG-94975
Change-Id: I46f904026281201fc6d233ed7d3bdc7080934afe
Reviewed-by: Christian Strømme &lt;christian.stromme@qt.io&gt;
(cherry picked from commit a5f0361622eb08eab6c3474d5fc249d1962e3d1e)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 1c5de027d0c31d1d6697bd0557128d92207763d8.

The fix here is not correct. Calling a QSGRhiLayer function from the gui
thread is very wrong and can cause a set of unexpected issues. The
Address Sanitizer catches this by recognizing that the render thread is
trying to do something with an object destroyed in the meantime on the
main thread in the layer-&gt;setItem(null) call.

The issue the original fix is trying to address needs to be addressed in
some different form.

Fixes: QTBUG-94975
Change-Id: I46f904026281201fc6d233ed7d3bdc7080934afe
Reviewed-by: Christian Strømme &lt;christian.stromme@qt.io&gt;
(cherry picked from commit a5f0361622eb08eab6c3474d5fc249d1962e3d1e)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Check for null pointer in QQuickPointerHandler::approveGrabTransition()</title>
<updated>2021-09-29T18:29:35+00:00</updated>
<author>
<name>Shawn Rutledge</name>
<email>shawn.rutledge@qt.io</email>
</author>
<published>2021-06-04T11:17:40+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=feb076d23ed832b21bf415032146570f4afb25d5'/>
<id>feb076d23ed832b21bf415032146570f4afb25d5</id>
<content type='text'>
Found by static analysis:
https://testresults.qt.io/codechecker/daily_diffs/qtdeclarative/dev/qtdeclarative-dev-20210604-1285b67a11/qquickpointerhandler.cpp_51058486.html#reportHash=9b76a76200c3a2eceb0e115776dda98b
Amends b09ce7dcd8ecf24ef23da8197a64e3fced3fc894

Change-Id: I4c35f648be9513e5e237d9b8d4e502e40e9f8a76
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
(cherry picked from commit 63b1f379b710c510f00311e03641aa65e72aaf34)
Reviewed-by: Qt CI Bot &lt;qt_ci_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Found by static analysis:
https://testresults.qt.io/codechecker/daily_diffs/qtdeclarative/dev/qtdeclarative-dev-20210604-1285b67a11/qquickpointerhandler.cpp_51058486.html#reportHash=9b76a76200c3a2eceb0e115776dda98b
Amends b09ce7dcd8ecf24ef23da8197a64e3fced3fc894

Change-Id: I4c35f648be9513e5e237d9b8d4e502e40e9f8a76
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
(cherry picked from commit 63b1f379b710c510f00311e03641aa65e72aaf34)
Reviewed-by: Qt CI Bot &lt;qt_ci_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce QGlyphRun memory usage and speed up large Text instances</title>
<updated>2021-09-29T11:39:47+00:00</updated>
<author>
<name>Shawn Rutledge</name>
<email>shawn.rutledge@qt.io</email>
</author>
<published>2021-06-30T13:50:51+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=310d59b40c565f61cdcff805674c57caaa44aafb'/>
<id>310d59b40c565f61cdcff805674c57caaa44aafb</id>
<content type='text'>
To render the plain text of _War and Peace_ took 6.4GB of memory before
(Linux 64-bit debug developer build); and now it's 1.1GB initially.
More optimization is possible: sizeof(TexturedPoint2D) = 16, and we
store a 16-bit index, so 3158176 glyphs ought to take about 60MB (but
takes 200MB in practice); but we also store QGlyphRuns, which are
actually redundant after the SG is populated. We need them in case the
text can be edited, restyled, re-wrapped etc.

QSGDistanceFieldGlyphNode::updateGeometry() enforces a limit of 65532
vertices per node (0xFFFF is not allowed as an index value, because it's
reserved to indicate primitive restart; and glyphs are quads). But it
was making copies of the remaining QPointF positions and quint32 glyph
indices and giving those recursively to the subnodes, so every subnode
was storing all of those for itself and all of _its_ subnodes, even
though it only needs max 16383 of them. Now, in the RootGlyphNode,
m_glyphs stores the glyphs that node will render (as before); but in
each subnode, we use QGlyphRun::setRawData() to populate m_glyphs with a
range from the index and position arrays from the root node.
setRawData() just sets the pointers to those arrays; so to avoid any
chance of dangling pointers, we need to keep those vectors, which live
in the GlyphInfo structs in m_glyphsInOtherTextures. That's the reason
the glyphsInOtherTextures hash, which was temporary before, is now kept
(although the dangling pointers somehow didn't cause any crash).

In the first loop over indices in updateGeometry(), each SubGlyphNode
will break out of the loop as soon as it has created enough
TexturedPoint2D and index instances for itself, because it no longer
needs to redo the rest of the loop over indices that was done in the
RootGlyphNode; this speeds up the rendering of large text.

Creation of subnodes is now iterative rather than recursive, which
saves stack space, and also looks better in the QSG_RENDERER_DEBUG=dump
output: you can see that each RootGlyphNode has one level of direct
children (161 of them for _War and Peace_). In a future change, perhaps
we could create those dynamically when the user flicks down to them,
and reclaim memory from children that are no longer shown; but that
would not be possible if they were all nested inside each other.

Amends aeb1d48c9938241b1ffcf8e42e3864595e90b168

Task-number: QTBUG-60491
Task-number: QTBUG-90734
Change-Id: Iff981b9ba86acc01775fd72e3ce79ea9e33d9061
Reviewed-by: Eskil Abrahamsen Blomfeldt &lt;eskil.abrahamsen-blomfeldt@qt.io&gt;
(cherry picked from commit 75a9b09d93b9462b77347d1992371a189037bc62)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To render the plain text of _War and Peace_ took 6.4GB of memory before
(Linux 64-bit debug developer build); and now it's 1.1GB initially.
More optimization is possible: sizeof(TexturedPoint2D) = 16, and we
store a 16-bit index, so 3158176 glyphs ought to take about 60MB (but
takes 200MB in practice); but we also store QGlyphRuns, which are
actually redundant after the SG is populated. We need them in case the
text can be edited, restyled, re-wrapped etc.

QSGDistanceFieldGlyphNode::updateGeometry() enforces a limit of 65532
vertices per node (0xFFFF is not allowed as an index value, because it's
reserved to indicate primitive restart; and glyphs are quads). But it
was making copies of the remaining QPointF positions and quint32 glyph
indices and giving those recursively to the subnodes, so every subnode
was storing all of those for itself and all of _its_ subnodes, even
though it only needs max 16383 of them. Now, in the RootGlyphNode,
m_glyphs stores the glyphs that node will render (as before); but in
each subnode, we use QGlyphRun::setRawData() to populate m_glyphs with a
range from the index and position arrays from the root node.
setRawData() just sets the pointers to those arrays; so to avoid any
chance of dangling pointers, we need to keep those vectors, which live
in the GlyphInfo structs in m_glyphsInOtherTextures. That's the reason
the glyphsInOtherTextures hash, which was temporary before, is now kept
(although the dangling pointers somehow didn't cause any crash).

In the first loop over indices in updateGeometry(), each SubGlyphNode
will break out of the loop as soon as it has created enough
TexturedPoint2D and index instances for itself, because it no longer
needs to redo the rest of the loop over indices that was done in the
RootGlyphNode; this speeds up the rendering of large text.

Creation of subnodes is now iterative rather than recursive, which
saves stack space, and also looks better in the QSG_RENDERER_DEBUG=dump
output: you can see that each RootGlyphNode has one level of direct
children (161 of them for _War and Peace_). In a future change, perhaps
we could create those dynamically when the user flicks down to them,
and reclaim memory from children that are no longer shown; but that
would not be possible if they were all nested inside each other.

Amends aeb1d48c9938241b1ffcf8e42e3864595e90b168

Task-number: QTBUG-60491
Task-number: QTBUG-90734
Change-Id: Iff981b9ba86acc01775fd72e3ce79ea9e33d9061
Reviewed-by: Eskil Abrahamsen Blomfeldt &lt;eskil.abrahamsen-blomfeldt@qt.io&gt;
(cherry picked from commit 75a9b09d93b9462b77347d1992371a189037bc62)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Flickable: don't react to any mouse button other than the left</title>
<updated>2021-09-28T17:18:23+00:00</updated>
<author>
<name>Shawn Rutledge</name>
<email>shawn.rutledge@qt.io</email>
</author>
<published>2021-09-27T15:48:55+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=0533725c60198aeced54ad53454a09a3b3691394'/>
<id>0533725c60198aeced54ad53454a09a3b3691394</id>
<content type='text'>
In case of mouse "chording", ignore all other buttons.

Fixes: QTBUG-96909
Change-Id: Ib091b271390c5b4e3aafbbe24d2dc7b6f08db175
Reviewed-by: Richard Moe Gustavsen &lt;richard.gustavsen@qt.io&gt;
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
(cherry picked from commit f91aa3b4d8ae7bfba65a8252099ded3b428f7acf)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case of mouse "chording", ignore all other buttons.

Fixes: QTBUG-96909
Change-Id: Ib091b271390c5b4e3aafbbe24d2dc7b6f08db175
Reviewed-by: Richard Moe Gustavsen &lt;richard.gustavsen@qt.io&gt;
Reviewed-by: Fabian Kosmale &lt;fabian.kosmale@qt.io&gt;
(cherry picked from commit f91aa3b4d8ae7bfba65a8252099ded3b428f7acf)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update dependencies on '6.1' in qt/qtdeclarative</title>
<updated>2021-09-28T06:21:35+00:00</updated>
<author>
<name>Qt Submodule Update Bot</name>
<email>qt_submodule_update_bot@qt-project.org</email>
</author>
<published>2021-09-28T04:56:52+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=ad78142247bc06fa318b67d3a990f19b9c911a5a'/>
<id>ad78142247bc06fa318b67d3a990f19b9c911a5a</id>
<content type='text'>
Change-Id: I50fd5844e111f9af20c70598e572750cf1ffbb4c
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I50fd5844e111f9af20c70598e572750cf1ffbb4c
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update dependencies on '6.1' in qt/qtdeclarative</title>
<updated>2021-09-23T05:40:48+00:00</updated>
<author>
<name>Qt Submodule Update Bot</name>
<email>qt_submodule_update_bot@qt-project.org</email>
</author>
<published>2021-09-22T03:45:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=7f65c0d480590ed6597f5dc47a831018153cabe5'/>
<id>7f65c0d480590ed6597f5dc47a831018153cabe5</id>
<content type='text'>
Change-Id: If3d0d24605f2a12192b895cc6ffcb11267bbdede
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: If3d0d24605f2a12192b895cc6ffcb11267bbdede
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update dependencies on '6.1' in qt/qtdeclarative</title>
<updated>2021-09-14T05:02:09+00:00</updated>
<author>
<name>Qt Submodule Update Bot</name>
<email>qt_submodule_update_bot@qt-project.org</email>
</author>
<published>2021-09-14T05:02:05+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=ccd33efca942ed702a6c7b8069a0ee95a67823f5'/>
<id>ccd33efca942ed702a6c7b8069a0ee95a67823f5</id>
<content type='text'>
Change-Id: I787dda867da00ac521624a91d438e370ab8171eb
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I787dda867da00ac521624a91d438e370ab8171eb
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>doc: Correct the type that WheelHandler's wheel signal emits</title>
<updated>2021-09-06T21:55:43+00:00</updated>
<author>
<name>Shawn Rutledge</name>
<email>shawn.rutledge@qt.io</email>
</author>
<published>2021-09-03T19:38:25+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=189c4882cd137d4545542a0d0111d762c90b4877'/>
<id>189c4882cd137d4545542a0d0111d762c90b4877</id>
<content type='text'>
It's WheelEvent not PointerScrollEvent.

Task-number: QTBUG-81302
Change-Id: Ie03fbf60492525301ee8d60a0c38c8a111251e0a
Reviewed-by: Shawn Rutledge &lt;shawn.rutledge@qt.io&gt;
(cherry picked from commit e2e7a1c5b81e4e7464134b4590aea799b0434d55)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's WheelEvent not PointerScrollEvent.

Task-number: QTBUG-81302
Change-Id: Ie03fbf60492525301ee8d60a0c38c8a111251e0a
Reviewed-by: Shawn Rutledge &lt;shawn.rutledge@qt.io&gt;
(cherry picked from commit e2e7a1c5b81e4e7464134b4590aea799b0434d55)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update the QRhiTexture size in QSGPlainTexture</title>
<updated>2021-09-05T06:06:45+00:00</updated>
<author>
<name>Laszlo Agocs</name>
<email>laszlo.agocs@qt.io</email>
</author>
<published>2021-09-03T11:26:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=fbc4b7adba4c5b2ff0cb16cff2993e18add5a9e2'/>
<id>fbc4b7adba4c5b2ff0cb16cff2993e18add5a9e2</id>
<content type='text'>
An autotest is added separately for dev only because the necessary
infrastructure for sophisticated scenegraph tests only exists there
due to some earlier commits that are in dev and not in 6.2.

Fixes: QTBUG-96190
Change-Id: Ie2adee96864b60f982a83b9b2785a93d5401bd6a
Reviewed-by: Andy Nichols &lt;andy.nichols@qt.io&gt;
(cherry picked from commit 4de27382f9b5f05b8d5821247ea7653b44264c03)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
An autotest is added separately for dev only because the necessary
infrastructure for sophisticated scenegraph tests only exists there
due to some earlier commits that are in dev and not in 6.2.

Fixes: QTBUG-96190
Change-Id: Ie2adee96864b60f982a83b9b2785a93d5401bd6a
Reviewed-by: Andy Nichols &lt;andy.nichols@qt.io&gt;
(cherry picked from commit 4de27382f9b5f05b8d5821247ea7653b44264c03)
Reviewed-by: Qt Cherry-pick Bot &lt;cherrypick_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Update dependencies on '6.1' in qt/qtdeclarative</title>
<updated>2021-09-03T14:42:08+00:00</updated>
<author>
<name>Qt Submodule Update Bot</name>
<email>qt_submodule_update_bot@qt-project.org</email>
</author>
<published>2021-09-03T14:42:02+00:00</published>
<link rel='alternate' type='text/html' href='https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=421ef81980217ff7533f3796ac7092b7156dbfe5'/>
<id>421ef81980217ff7533f3796ac7092b7156dbfe5</id>
<content type='text'>
Change-Id: Ia126d39fe1ccc3a94ed56d218b186a77e311fd1c
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Ia126d39fe1ccc3a94ed56d218b186a77e311fd1c
Reviewed-by: Qt Submodule Update Bot &lt;qt_submodule_update_bot@qt-project.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
