aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaszlo Agocs <lagocs83@gmail.com>2025-12-08 13:06:55 +0100
committerLaszlo Agocs <laszlo.agocs@qt.io>2025-12-11 13:10:15 +0100
commitb31350c7b656522bb383d564cf7f7e75713d1dba (patch)
tree6c03a0a52a1b53731dc7779ef17f34b19957172b
parent56fcf4f80d41a534b9104c74a436165604d704cd (diff)
Allow GraphicsInfo to be used with a Window
Allow writing Window { property int api: GraphicsInfo.api } instead of having to do Window { property alias api: dummy.api Item { id: dummy property int api: GraphicsInfo.api } } Change to member initialization to avoid duplicating many lines with the existing constructor. Pick-to: 6.11 Change-Id: Ie07247ee8a6ae1b2d3d7245d77e83ece89909729 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r--src/quick/items/qquickgraphicsinfo.cpp18
-rw-r--r--src/quick/items/qquickgraphicsinfo_p.h17
2 files changed, 18 insertions, 17 deletions
diff --git a/src/quick/items/qquickgraphicsinfo.cpp b/src/quick/items/qquickgraphicsinfo.cpp
index 7de5b6b2ea..60a504146c 100644
--- a/src/quick/items/qquickgraphicsinfo.cpp
+++ b/src/quick/items/qquickgraphicsinfo.cpp
@@ -27,15 +27,6 @@ QT_BEGIN_NAMESPACE
QQuickGraphicsInfo::QQuickGraphicsInfo(QQuickItem *item)
: QObject(item)
- , m_window(nullptr)
- , m_api(Unknown)
- , m_shaderType(UnknownShadingLanguage)
- , m_shaderCompilationType(ShaderCompilationType(0))
- , m_shaderSourceType(ShaderSourceType(0))
- , m_majorVersion(2)
- , m_minorVersion(0)
- , m_profile(OpenGLNoProfile)
- , m_renderableType(SurfaceFormatUnspecified)
{
if (Q_LIKELY(item)) {
connect(item, &QQuickItem::windowChanged, this, &QQuickGraphicsInfo::setWindow);
@@ -43,10 +34,19 @@ QQuickGraphicsInfo::QQuickGraphicsInfo(QQuickItem *item)
}
}
+QQuickGraphicsInfo::QQuickGraphicsInfo(QQuickWindow *window)
+ : QObject(window)
+{
+ if (Q_LIKELY(window))
+ setWindow(window);
+}
+
QQuickGraphicsInfo *QQuickGraphicsInfo::qmlAttachedProperties(QObject *object)
{
if (QQuickItem *item = qobject_cast<QQuickItem *>(object))
return new QQuickGraphicsInfo(item);
+ if (QQuickWindow *window = qobject_cast<QQuickWindow *>(object))
+ return new QQuickGraphicsInfo(window);
return nullptr;
}
diff --git a/src/quick/items/qquickgraphicsinfo_p.h b/src/quick/items/qquickgraphicsinfo_p.h
index 45502e8cb9..6fe0865253 100644
--- a/src/quick/items/qquickgraphicsinfo_p.h
+++ b/src/quick/items/qquickgraphicsinfo_p.h
@@ -102,6 +102,7 @@ public:
Q_ENUM(RenderableType)
QQuickGraphicsInfo(QQuickItem *item = nullptr);
+ QQuickGraphicsInfo(QQuickWindow *window);
static QQuickGraphicsInfo *qmlAttachedProperties(QObject *object);
@@ -132,14 +133,14 @@ private Q_SLOTS:
private:
QPointer<QQuickWindow> m_window;
- GraphicsApi m_api;
- ShaderType m_shaderType;
- ShaderCompilationType m_shaderCompilationType;
- ShaderSourceType m_shaderSourceType;
- int m_majorVersion;
- int m_minorVersion;
- OpenGLContextProfile m_profile;
- RenderableType m_renderableType;
+ GraphicsApi m_api = Unknown;
+ ShaderType m_shaderType = UnknownShadingLanguage;
+ ShaderCompilationType m_shaderCompilationType = ShaderCompilationType(0);
+ ShaderSourceType m_shaderSourceType = ShaderSourceType(0);
+ int m_majorVersion = 2;
+ int m_minorVersion = 0;
+ OpenGLContextProfile m_profile = OpenGLNoProfile;
+ RenderableType m_renderableType = SurfaceFormatUnspecified;
};
QT_END_NAMESPACE