diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 2 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgrhisupport.cpp | 26 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgrhisupport_p.h | 14 |
3 files changed, 19 insertions, 23 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index a3d8b5eacb..697e5b3410 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -3665,7 +3665,7 @@ void QQuickWindow::setGraphicsApi(QSGRendererInterface::GraphicsApi api) // Standard case: tell the QRhi-based default adaptation what graphics api // (QRhi backend) to use. if (QSGRendererInterface::isApiRhiBased(api) || api == QSGRendererInterface::Unknown) - QSGRhiSupport::configure(api); + QSGRhiSupport::instance_internal()->configure(api); } /*! diff --git a/src/quick/scenegraph/qsgrhisupport.cpp b/src/quick/scenegraph/qsgrhisupport.cpp index 88bbf77e40..1ccca23596 100644 --- a/src/quick/scenegraph/qsgrhisupport.cpp +++ b/src/quick/scenegraph/qsgrhisupport.cpp @@ -252,12 +252,6 @@ void QSGRhiSupport::adjustToPlatformQuirks() #endif } -QSGRhiSupport *QSGRhiSupport::staticInst() -{ - static QSGRhiSupport inst; - return &inst; -} - void QSGRhiSupport::checkEnvQSgInfo() { // For compatibility with 5.3 and earlier's QSG_INFO environment variables @@ -269,21 +263,25 @@ void QSGRhiSupport::configure(QSGRendererInterface::GraphicsApi api) { if (api == QSGRendererInterface::Unknown) { // behave as if nothing was explicitly requested - QSGRhiSupport *inst = staticInst(); - inst->m_requested.valid = false; - inst->applySettings(); + m_requested.valid = false; + applySettings(); } else { Q_ASSERT(QSGRendererInterface::isApiRhiBased(api)); - QSGRhiSupport *inst = staticInst(); - inst->m_requested.valid = true; - inst->m_requested.api = api; - inst->applySettings(); + m_requested.valid = true; + m_requested.api = api; + applySettings(); } } +QSGRhiSupport *QSGRhiSupport::instance_internal() +{ + static QSGRhiSupport inst; + return &inst; +} + QSGRhiSupport *QSGRhiSupport::instance() { - QSGRhiSupport *inst = staticInst(); + QSGRhiSupport *inst = instance_internal(); if (!inst->m_settingsApplied) inst->applySettings(); return inst; diff --git a/src/quick/scenegraph/qsgrhisupport_p.h b/src/quick/scenegraph/qsgrhisupport_p.h index 73fa2caad1..db710814bc 100644 --- a/src/quick/scenegraph/qsgrhisupport_p.h +++ b/src/quick/scenegraph/qsgrhisupport_p.h @@ -102,10 +102,15 @@ class QOffscreenSurface; class Q_QUICK_PRIVATE_EXPORT QSGRhiSupport { public: - static void configure(QSGRendererInterface::GraphicsApi api); + static QSGRhiSupport *instance_internal(); static QSGRhiSupport *instance(); static QVulkanInstance *defaultVulkanInstance(); static void cleanupDefaultVulkanInstance(); + static int chooseSampleCountForWindowWithRhi(QWindow *window, QRhi *rhi); + static QImage grabAndBlockInCurrentFrame(QRhi *rhi, QRhiCommandBuffer *cb, QRhiTexture *src = nullptr); + static void checkEnvQSgInfo(); + + void configure(QSGRendererInterface::GraphicsApi api); bool isRhiEnabled() const { return m_enableRhi; } QRhi::Implementation rhiBackend() const { return m_rhiBackend; } @@ -123,24 +128,17 @@ public: const QSGDefaultRenderContext *rc, const QQuickWindow *w); - int chooseSampleCountForWindowWithRhi(QWindow *window, QRhi *rhi); - QOffscreenSurface *maybeCreateOffscreenSurface(QWindow *window); QRhi *createRhi(QQuickWindow *window, QOffscreenSurface *offscreenSurface); void destroyRhi(QRhi *rhi); void prepareWindowForRhi(QQuickWindow *window); - QImage grabAndBlockInCurrentFrame(QRhi *rhi, QRhiCommandBuffer *cb, QRhiTexture *src = nullptr); - QImage grabOffscreen(QQuickWindow *window); - static void checkEnvQSgInfo(); - private: QSGRhiSupport(); void applySettings(); void adjustToPlatformQuirks(); - static QSGRhiSupport *staticInst(); struct { bool valid = false; QSGRendererInterface::GraphicsApi api; |