diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-10-05 21:50:35 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-10-09 15:13:39 +0000 |
commit | 29c833d54f93bc3443e055d2f958589f03463057 (patch) | |
tree | f8fae14c6aa49686f321b4204db7069f0649373f /share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h | |
parent | 2fe99cef9fc6b43203c65d4b753366accd7b7b51 (diff) |
QmlDesigner: Implement different render path for Qt 6
When building with Qt 6 or if qmlpuppet_unifiedRenderPath is set
in the environment we switch to a different render path.
In this case we use QQuickWindow::grabWindow() and render the root item.
No composition is done in the Qt Creator process anymore.
This is a similar approach we already take for the 3D view.
Performance is acceptable and we fix rendering issues related to
effects and layers.
Change-Id: Ic963eca047e0bf16ca3a099ec94658ae2af0fb63
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h')
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h index f42e45a8ff..2c68fe7974 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h @@ -45,6 +45,7 @@ public: static Pointer create(QObject *objectToBeWrapped); static void createEffectItem(bool createEffectItem); + static void enableUnifiedRenderPath(bool createEffectItem); void initialize(const ObjectNodeInstance::Pointer &objectNodeInstance, InstanceContainer::NodeFlags flags) override; @@ -70,6 +71,8 @@ public: QImage renderImage() const override; QImage renderPreviewImage(const QSize &previewImageSize) const override; + QSharedPointer<QQuickItemGrabResult> createGrabResult() const override; + void updateAllDirtyNodesRecursive() override; @@ -98,6 +101,9 @@ public: QList<QQuickItem*> allItemsRecursive() const override; QStringList allStates() const override; + static void updateDirtyNode(QQuickItem *item); + static bool unifiedRenderPath(); + protected: explicit QuickItemNodeInstance(QQuickItem*); QQuickItem *quickItem() const; @@ -118,6 +124,7 @@ protected: double x() const; double y() const; + bool checkIfRefFromEffect(qint32 id); private: //variables QPointer<QQuickItem> m_contentItem; @@ -131,6 +138,7 @@ private: //variables double m_width; double m_height; static bool s_createEffectItem; + static bool s_unifiedRenderPath; }; } // namespace Internal |