[Development] Infinite loop in QML ShaderEffect polish()

2023-02-16 Thread Alberto Mardegan

Hi all!
   I've recently bumped into an issue on AuroraOS (a fork of 
SailfishOS), where as soon as an application window gets created, the 
output gets filled with logs similar to these, and the application gets 
stuck:


[W] unknown:230 - qrc:/Sailfish/Silica/private/TabBar.qml:230:5: QML 
OpacityRampEffect: possible QQuickItem::polish() loop
[W] unknown:230 - qrc:/Sailfish/Silica/private/TabBar.qml:230:5: QML 
OpacityRampEffect: OpacityRampEffect called polish() inside 
updatePolish() of OpacityRampEffect


OpacityRampEffect is a ShaderEffect, and, in fact, while debugging I've 
reproduced the same issue with a pure QtQuick ShaderEffect. The warnings 
appear even if the ShaderEffect is unused (that is, no source is 
connected to it): it looks like instantiating it is enough to get the 
application stuck. The "live" and "recursive" properties have no effect 
on this.


The way I've fixed it (apparently, with no ill side effects) is this:

==
--- a/src/quick/items/qquickgenericshadereffect.cpp
+++ b/src/quick/items/qquickgenericshadereffect.cpp
@@ -332,7 +332,7 @@ void QQuickGenericShaderEffect::maybeUpdateShaders()
  // scenegraph ready. Schedule the polish to try again later. 
In case #2
  // the backend probably does not have shadereffect support so 
there is

  // nothing to do for us here.
-if (!m_item->window() || 
!m_item->window()->isSceneGraphInitialized())

+if (!m_item->window())
  m_item->polish();
  }
  }
==

That is, removing the check on isSceneGraphInitialized() and only queue 
a polish if the window has not been set yet. I noticed that the same 
logic is followed on the OpenGL implementation 
(QQuickOpenGLShaderEffect), but the whole logic behind this is not clear 
to me, so that's why I'm writing here. It indeed looks unlikely that 
this is a bug, otherwise it would have broken a lot of other setups as well.


Could there be something wrong in our QPA plugin (which is for the 99% 
the same as https://github.com/mer-hybris/qt5-qpa-hwcomposer-plugin)?
We are also using a scenegraph plugin, but I verified that even with it 
being removed, the issue presents itself.


For the record, this is on Qt 5.15.

Ciao,
  Alberto

--
http://www.mardy.it - Geek in un lingua international
--
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


[Development] [Announce] Qt Creator 10 Beta released

2023-02-16 Thread List for announcements regarding Qt releases and development via Announce via Development
We are happy to announce the release of Qt Creator 10 Beta!

https://www.qt.io/blog/qt-creator-10-beta-released

-- 
Eike Ziller
Principal Software Engineer

The Qt Company GmbH
Erich-Thilo-Straße 10
D-12489 Berlin
eike.zil...@qt.io
http://qt.io
Geschäftsführer: Mika Pälsi,
Juha Varelius, Jouni Lintunen
Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 
144331 B


___
Announce mailing list
annou...@qt-project.org
https://lists.qt-project.org/listinfo/announce
-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Support for *Notes and UpstreamFiles fields in qt_attributions.json files

2023-02-16 Thread Edward Welbourne via Development
Kai Köhne (15 February 2023 08:50) replied:
>>> Well, you can also achieve this by duplicating comment fields:
>>>
>>> {
>>>   "Comment": "Upstream files are src/x.cpp, include/y.h",
>>>   "Files": [ "x.cpp", "y_p.h"]
>>>   "Comment": "Copyright info is from dist/COPYING",
>>>   "Copyright": "Copyright (C) 2023 Joe Doe"
>>> }

Edward Welbourne (Wednesday, February 15, 2023 10:45 AM) objected:
>> The problem with that is that I was given to understand that
>> duplicated keys is actually malformed JSON - perhaps I misunderstood.
>> If that's legitimate JSON, then I'm fine with just one.

and, overlapping with my follow-up correcting that,
Kai Köhne (15 February 2023 17:10) replied:

> To my understanding it's valid JSON, at least from the syntax
> side. From
> https://www.ecma-international.org/publications-and-standards/standards/ecma-404/
> :

>  The JSON syntax does not impose any restrictions on the strings used
>  as names, *does not require that name strings be unique*, and does
>  not assign any significance to the ordering of name/value
>  pairs. These are all semantic considerations that may be defined by
>  JSON processors or in specifications defining specific uses of JSON
>  for data interchange

It seems we read the same standard at about the same time, arriving at
the same conclusion ;^>

> And the JSON parsers I tested (Python, Qt) don't treat it as an error,
> either. There seems to be some online linters like
> https://jsonlint.com/ that complain about it, tough.

I think we can live with ignoring a warning from linters that aren't
part of our tool-chain ;^>

I've updated my reviews to the "Comment" version.

That just leaves us with the open question of whether to, instead,
switch to some other way of storing the data - preferably one that
supports multi-line strings - with Ulf currently championing QML and
Thiago YAML.

Eddy.
-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] QUIP 18: License specification in Qt's modules

2023-02-16 Thread Joerg Bornemann via Development

On 2/15/23 14:46, Jörg Bornemann via Development wrote:


we're proposing a new QUIP: License specification in Qt's modules

Please review https://codereview.qt-project.org/c/meta/quips/+/436096


And because QUIP 3 suggests that the initial text is also sent to the 
mailing list - here's the document attached.



Cheers,

JoergQUIP: 18
Title: License specification in Qt's modules
Author: Lucie Gerard,
Jörg Bornemann
Status: Active
Type: Informational
Created: 2022-09-26
Post-History: https://lists.qt-project.org/pipermail/development/2023-February/043648.html

Overview


This QUIP specifies the licenses that are used in different parts of a
typical Qt module repository and also provides helpful guidance about
how to express which license source code is under. Note that
repositories may deviate from this guideline. Check with the authors
and copyright holders of the repository in question.

Much of this document overlaps with the "Permitted Licenses in the Qt
Free Edition" section of the KDE Software License Agreement [4]_.
Please keep this document in sync with the KDE Software License
Agreement.

License header format
=

The license header follows the SPDX standard [0]_.

There is a Copyright line and a license expression line::

  Copyright (C) 2023 The Qt Company Ltd.
  SPDX-License-Identifier: 

The copyright line for code written by contributors outside the Qt
Company can include that person's name (or legal entity they
represent) in the Copyright header. Multiple copyright lines are
possible.

The `` must be a valid expression, according
to the SPDX standard as defined in [1]_.

The license identifiers used in a license expression are either from
the list of known licenses [2]_ or prefixed with `LicenseRef-`.

The license files are placed into a `LICENSES` directory below the Qt
module repository's root. The license files are named after the SPDX
license identifier followed by ``.txt`` [3]_.

Parts of a Qt module repository
===

This sections defines the different parts of a Qt module repository.

Module and plugin implementation


Source files that belong to the implementation of Qt modules and plugins. The
usual locations for module source code are the subdirectories
``src`` and ``plugins``.

Examples


Source files that belong to the implementation of Qt examples. The usual
locations for examples is the ``examples`` subdirectory.

Tests
-

Source files that belong to the implementation of Qt tests. The usual location
is the ``tests`` subdirectory.

Tools
-

Source files that belong to the implementation of Qt tools. The usual location
is the ``tools`` subdirectory.

Documentation
-

All ``.qdoc``, ``.qdocinc`` and ``.qdocconf`` files that are needed to generate
the documentation. The usual locations for such files are ``doc`` directories
all over the Qt module repository's directory tree.

Documentation snippets
--

Any source code that appears in the documentation. The usual locations are
``doc/snippets`` directories throughout the Qt module repository's directory
tree.

Build System Files
--

All files that contribute to Qt's build system. That includes the following file
name patterns:

- ``CMakeLists.txt``
- ``*.cmake``
- ``*.pro``
- ``*.pri``
- ``*.prf``

License identifiers per repository part
===

Different parts of a Qt module repository are licensed differently. The
following table lists the SPDX license expressions that should be used and
where.

++--+
| Qt repository part | SPDX License Expression  |
++==+
| Module and plugin  | ``LicenseRef-Qt-Commercial OR LGPL-3.0-only``|
| implementation | ``OR GPL-2.0-only OR GPL-3.0-only``  |
| (Qt Essentials)|  |
++--+
| Module and plugin  | | ``LicenseRef-Qt-Commercial OR GPL-3.0-only``   |
| implementation | ||
| (Qt Add-ons)   | | *alternatively:*   |
|| | ``LicenseRef-Qt-Commercial OR LGPL-3.0-only``  |
||   ``OR GPL-2.0-only OR GPL-3.0-only``|
++--+
| Examples   | ``LicenseRef-Qt-Commercial OR BSD-3-Clause`` |
++--+
| Documentation  | ``LicenseRef-Qt-Commercial`` |
|| ``OR GFDL-1.3-no-invariants-only``