diff options
author | Jaroslaw Kubik <jarek@froglogic.com> | 2022-07-02 01:03:43 +0200 |
---|---|---|
committer | Jaroslaw Kubik <jarek@froglogic.com> | 2022-08-17 04:46:59 +0200 |
commit | e16f74247958329263b59fe1b9ad8bd2a25de564 (patch) | |
tree | 403061fb6f7e3d6c7f1056c0a4879b74510f6097 /src/plugins/platforms/minimal | |
parent | 64b84977eb281363bb096d602c0706b299b2d926 (diff) |
Provide a native interface instance in minimal platform plugin
The minimal platform plugin does not have any native APIs it could offer
through that interface, but needs to provide an instance anyway. A lot
of code within Qt assumes that a native interface is always available
and does not check the pointer value, which leads to segfaults when used
with the minimal plugin.
Pick-to: 6.4 6.3 6.2 5.15
Change-Id: I625bd95afd49872cff3a34b29ceb0ffbbcd39db7
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/platforms/minimal')
-rw-r--r-- | src/plugins/platforms/minimal/qminimalintegration.cpp | 8 | ||||
-rw-r--r-- | src/plugins/platforms/minimal/qminimalintegration.h | 5 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/plugins/platforms/minimal/qminimalintegration.cpp b/src/plugins/platforms/minimal/qminimalintegration.cpp index 7523a2d966..a145093872 100644 --- a/src/plugins/platforms/minimal/qminimalintegration.cpp +++ b/src/plugins/platforms/minimal/qminimalintegration.cpp @@ -6,6 +6,7 @@ #include <QtGui/private/qpixmap_raster_p.h> #include <QtGui/private/qguiapplication_p.h> +#include <qpa/qplatformnativeinterface.h> #include <qpa/qplatformwindow.h> #include <qpa/qwindowsysteminterface.h> @@ -157,6 +158,13 @@ QAbstractEventDispatcher *QMinimalIntegration::createEventDispatcher() const #endif } +QPlatformNativeInterface *QMinimalIntegration::nativeInterface() const +{ + if (!m_nativeInterface) + m_nativeInterface.reset(new QPlatformNativeInterface); + return m_nativeInterface.get(); +} + QMinimalIntegration *QMinimalIntegration::instance() { return static_cast<QMinimalIntegration *>(QGuiApplicationPrivate::platformIntegration()); diff --git a/src/plugins/platforms/minimal/qminimalintegration.h b/src/plugins/platforms/minimal/qminimalintegration.h index 914f26bf25..6070972b1b 100644 --- a/src/plugins/platforms/minimal/qminimalintegration.h +++ b/src/plugins/platforms/minimal/qminimalintegration.h @@ -7,6 +7,8 @@ #include <qpa/qplatformintegration.h> #include <qpa/qplatformscreen.h> +#include <qscopedpointer.h> + QT_BEGIN_NAMESPACE class QMinimalScreen : public QPlatformScreen @@ -46,12 +48,15 @@ public: QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const override; QAbstractEventDispatcher *createEventDispatcher() const override; + QPlatformNativeInterface *nativeInterface() const override; + unsigned options() const { return m_options; } static QMinimalIntegration *instance(); private: mutable QPlatformFontDatabase *m_fontDatabase; + mutable QScopedPointer<QPlatformNativeInterface> m_nativeInterface; QMinimalScreen *m_primaryScreen; unsigned m_options; }; |