diff --git a/src/opengl/qplatformbackingstoreopenglsupport.cpp b/src/opengl/qplatformbackingstoreopenglsupport.cpp index 6f893671c0..46e36c23d4 100644 --- a/src/opengl/qplatformbackingstoreopenglsupport.cpp +++ b/src/opengl/qplatformbackingstoreopenglsupport.cpp @@ -450,18 +450,15 @@ GLuint QPlatformBackingStoreOpenGLSupport::toTexture(const QRegion &dirtyRegion, return textureId; } -static QPlatformBackingStoreOpenGLSupportBase *createOpenGLSupport() +void qt_registerDefaultPlatformBackingStoreOpenGLSupport() { - return new QPlatformBackingStoreOpenGLSupport; + if (!QPlatformBackingStoreOpenGLSupportBase::factoryFunction()) { + QPlatformBackingStoreOpenGLSupportBase::setFactoryFunction([]() -> QPlatformBackingStoreOpenGLSupportBase* { + return new QPlatformBackingStoreOpenGLSupport; + }); + } } -static void setDefaultOpenGLSupportFactoryFunction() -{ - if (!QPlatformBackingStoreOpenGLSupportBase::factoryFunction()) - QPlatformBackingStoreOpenGLSupportBase::setFactoryFunction(createOpenGLSupport); -} -Q_CONSTRUCTOR_FUNCTION(setDefaultOpenGLSupportFactoryFunction); - #endif // QT_NO_OPENGL QT_END_NAMESPACE diff --git a/src/opengl/qplatformbackingstoreopenglsupport.h b/src/opengl/qplatformbackingstoreopenglsupport.h index 4821f7300f..ae9d972c6a 100644 --- a/src/opengl/qplatformbackingstoreopenglsupport.h +++ b/src/opengl/qplatformbackingstoreopenglsupport.h @@ -78,6 +78,8 @@ private: QOpenGLTextureBlitter *blitter = nullptr; }; +Q_OPENGL_EXPORT void qt_registerDefaultPlatformBackingStoreOpenGLSupport(); + QT_END_NAMESPACE #endif // QT_NO_OPENGL diff --git a/src/openglwidgets/qopenglwidget.cpp b/src/openglwidgets/qopenglwidget.cpp index b7abc89c0b..cb60de1fd1 100644 --- a/src/openglwidgets/qopenglwidget.cpp +++ b/src/openglwidgets/qopenglwidget.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include @@ -1411,6 +1412,8 @@ bool QOpenGLWidget::event(QEvent *e) return QWidget::event(e); } +Q_CONSTRUCTOR_FUNCTION(qt_registerDefaultPlatformBackingStoreOpenGLSupport); + QT_END_NAMESPACE #include "moc_qopenglwidget.cpp" diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index db4dd81b2e..074a8ee56d 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -43,6 +43,8 @@ #include #include +#include + #include QT_BEGIN_NAMESPACE @@ -88,4 +90,6 @@ void QIOSBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoin composeAndFlush(window, region, offset, &emptyTextureList, false); } +Q_CONSTRUCTOR_FUNCTION(qt_registerDefaultPlatformBackingStoreOpenGLSupport); + QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 962456965a..725c280129 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -66,10 +66,6 @@ #import -#if QT_CONFIG(opengl) -#include -#endif - #include QT_BEGIN_NAMESPACE