diff options
Diffstat (limited to 'src/plugins/platforms/eglfs/deviceintegration/eglfs_kms')
15 files changed, 169 insertions, 69 deletions
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt index 3f27a9c397..a790a01c62 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt @@ -1,6 +1,35 @@ # Generated from eglfs_kms.pro. ##################################################################### +## EglFsKmsGbmSupport Module: +##################################################################### + +qt_internal_add_module(EglFsKmsGbmSupport + INTERNAL_MODULE + SOURCES + qeglfskmsgbmcursor.cpp qeglfskmsgbmcursor_p.h + qeglfskmsgbmdevice.cpp qeglfskmsgbmdevice_p.h + qeglfskmsgbmintegration.cpp qeglfskmsgbmintegration_p.h + qeglfskmsgbmscreen.cpp qeglfskmsgbmscreen_p.h + qeglfskmsgbmwindow.cpp qeglfskmsgbmwindow_p.h + DEFINES + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + ../../api + ../eglfs_kms_support + PUBLIC_LIBRARIES + Libdrm::Libdrm + Qt::Core + Qt::CorePrivate + Qt::EglFSDeviceIntegrationPrivate + Qt::EglFsKmsSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::KmsSupportPrivate + gbm::gbm +) + +##################################################################### ## QEglFSKmsGbmIntegrationPlugin Plugin: ##################################################################### @@ -8,22 +37,15 @@ qt_internal_add_plugin(QEglFSKmsGbmIntegrationPlugin OUTPUT_NAME qeglfs-kms-integration TYPE egldeviceintegrations SOURCES - qeglfskmsgbmcursor.cpp qeglfskmsgbmcursor.h - qeglfskmsgbmdevice.cpp qeglfskmsgbmdevice.h - qeglfskmsgbmintegration.cpp qeglfskmsgbmintegration.h qeglfskmsgbmmain.cpp - qeglfskmsgbmscreen.cpp qeglfskmsgbmscreen.h - qeglfskmsgbmwindow.cpp qeglfskmsgbmwindow.h DEFINES QT_EGL_NO_X11 - INCLUDE_DIRECTORIES - ../../api - ../eglfs_kms_support PUBLIC_LIBRARIES Libdrm::Libdrm Qt::Core Qt::CorePrivate Qt::EglFSDeviceIntegrationPrivate + Qt::EglFsKmsGbmSupportPrivate Qt::EglFsKmsSupportPrivate Qt::Gui Qt::GuiPrivate @@ -31,5 +53,5 @@ qt_internal_add_plugin(QEglFSKmsGbmIntegrationPlugin gbm::gbm ) -#### Keys ignored in scope 1:.:.:eglfs_kms.pro:<TRUE>: +#### Keys ignored in scope 1:.:.:eglfs_kms-plugin.pro:<TRUE>: # OTHER_FILES = "$$PWD/eglfs_kms.json" diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms-plugin.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms-plugin.pro new file mode 100644 index 0000000000..37c0e09c74 --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms-plugin.pro @@ -0,0 +1,17 @@ +TARGET = qeglfs-kms-integration + +PLUGIN_TYPE = egldeviceintegrations +PLUGIN_CLASS_NAME = QEglFSKmsGbmIntegrationPlugin +load(qt_plugin) + +QT += core-private gui-private eglfsdeviceintegration-private eglfs_kms_support-private kms_support-private eglfs_kms_gbm_support-private + +# Avoid X11 header collision, use generic EGL native types +DEFINES += QT_EGL_NO_X11 + +QMAKE_USE += gbm drm +CONFIG += egl + +SOURCES += $$PWD/qeglfskmsgbmmain.cpp + +OTHER_FILES += $$PWD/eglfs_kms.json diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms.pro index caf723155a..23063c052e 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms.pro @@ -1,30 +1,5 @@ -TARGET = qeglfs-kms-integration +TEMPLATE = subdirs +CONFIG += ordered -PLUGIN_TYPE = egldeviceintegrations -PLUGIN_CLASS_NAME = QEglFSKmsGbmIntegrationPlugin -load(qt_plugin) - -QT += core-private gui-private eglfsdeviceintegration-private eglfs_kms_support-private kms_support-private - -INCLUDEPATH += $$PWD/../../api $$PWD/../eglfs_kms_support - -# Avoid X11 header collision, use generic EGL native types -DEFINES += QT_EGL_NO_X11 - -QMAKE_USE += gbm drm -CONFIG += egl - -SOURCES += $$PWD/qeglfskmsgbmmain.cpp \ - $$PWD/qeglfskmsgbmintegration.cpp \ - $$PWD/qeglfskmsgbmdevice.cpp \ - $$PWD/qeglfskmsgbmscreen.cpp \ - $$PWD/qeglfskmsgbmcursor.cpp \ - $$PWD/qeglfskmsgbmwindow.cpp - -HEADERS += $$PWD/qeglfskmsgbmintegration.h \ - $$PWD/qeglfskmsgbmdevice.h \ - $$PWD/qeglfskmsgbmscreen.h \ - $$PWD/qeglfskmsgbmcursor.h \ - $$PWD/qeglfskmsgbmwindow.h - -OTHER_FILES += $$PWD/eglfs_kms.json +SUBDIRS += eglfs_kms_gbm_support.pro +SUBDIRS += eglfs_kms-plugin.pro diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms_gbm_support.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms_gbm_support.pro new file mode 100644 index 0000000000..7fde6f81d7 --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms_gbm_support.pro @@ -0,0 +1,25 @@ +TARGET = QtEglFsKmsGbmSupport +CONFIG += internal_module +load(qt_module) + +QT += core-private gui-private eglfsdeviceintegration-private eglfs_kms_support-private kms_support-private + +INCLUDEPATH += $$PWD/../../api $$PWD/../eglfs_kms_support + +# Avoid X11 header collision, use generic EGL native types +DEFINES += QT_EGL_NO_X11 + +QMAKE_USE += gbm drm +CONFIG += egl + +SOURCES += $$PWD/qeglfskmsgbmintegration.cpp \ + $$PWD/qeglfskmsgbmdevice.cpp \ + $$PWD/qeglfskmsgbmscreen.cpp \ + $$PWD/qeglfskmsgbmcursor.cpp \ + $$PWD/qeglfskmsgbmwindow.cpp + +HEADERS += $$PWD/qeglfskmsgbmintegration_p.h \ + $$PWD/qeglfskmsgbmdevice_p.h \ + $$PWD/qeglfskmsgbmscreen_p.h \ + $$PWD/qeglfskmsgbmcursor_p.h \ + $$PWD/qeglfskmsgbmwindow_p.h diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp index c802b8e112..b6d2a17079 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp @@ -39,9 +39,9 @@ ** ****************************************************************************/ -#include "qeglfskmsgbmcursor.h" -#include "qeglfskmsgbmscreen.h" -#include "qeglfskmsgbmdevice.h" +#include "qeglfskmsgbmcursor_p.h" +#include "qeglfskmsgbmscreen_p.h" +#include "qeglfskmsgbmdevice_p.h" #include <QtCore/QFile> #include <QtCore/QJsonDocument> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor_p.h index 55420cef62..0d4a472d79 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor_p.h @@ -40,6 +40,17 @@ #ifndef QEGLFSKMSGBMCURSOR_H #define QEGLFSKMSGBMCURSOR_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include <qpa/qplatformcursor.h> #include <QtCore/QList> #include <QtGui/QImage> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp index d32e36b04d..c561b2072e 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include "qeglfskmsgbmdevice.h" -#include "qeglfskmsgbmscreen.h" +#include "qeglfskmsgbmdevice_p.h" +#include "qeglfskmsgbmscreen_p.h" #include "qeglfsintegration_p.h" @@ -131,14 +131,19 @@ void QEglFSKmsGbmDevice::destroyGlobalCursor() } } -QPlatformScreen *QEglFSKmsGbmDevice::createScreen(const QKmsOutput &output) +void QEglFSKmsGbmDevice::createGlobalCursor(QEglFSKmsGbmScreen *screen) { - QEglFSKmsGbmScreen *screen = new QEglFSKmsGbmScreen(this, output, false); - if (!m_globalCursor && screenConfig()->hwCursor()) { qCDebug(qLcEglfsKmsDebug, "Creating new global GBM mouse cursor"); m_globalCursor = new QEglFSKmsGbmCursor(screen); } +} + +QPlatformScreen *QEglFSKmsGbmDevice::createScreen(const QKmsOutput &output) +{ + QEglFSKmsGbmScreen *screen = new QEglFSKmsGbmScreen(this, output, false); + + createGlobalCursor(screen); return screen; } diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice_p.h index 1964b30c5e..5a9cdb1565 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice_p.h @@ -42,8 +42,19 @@ #ifndef QEGLFSKMSGBMDEVICE_H #define QEGLFSKMSGBMDEVICE_H -#include "qeglfskmsgbmcursor.h" -#include <qeglfskmsdevice.h> +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qeglfskmsgbmcursor_p.h" +#include <qeglfskmsdevice_p.h> #include <gbm.h> @@ -51,7 +62,7 @@ QT_BEGIN_NAMESPACE class QEglFSKmsScreen; -class QEglFSKmsGbmDevice: public QEglFSKmsDevice +class Q_EGLFS_EXPORT QEglFSKmsGbmDevice: public QEglFSKmsDevice { public: QEglFSKmsGbmDevice(QKmsScreenConfig *screenConfig, const QString &path); @@ -64,6 +75,7 @@ public: QPlatformCursor *globalCursor() const; void destroyGlobalCursor(); + void createGlobalCursor(QEglFSKmsGbmScreen *screen); QPlatformScreen *createScreen(const QKmsOutput &output) override; QPlatformScreen *createHeadlessScreen() override; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp index caa1187b40..791512237e 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp @@ -39,11 +39,11 @@ ** ****************************************************************************/ -#include "qeglfskmsgbmintegration.h" -#include "qeglfskmsgbmdevice.h" -#include "qeglfskmsgbmscreen.h" -#include "qeglfskmsgbmcursor.h" -#include "qeglfskmsgbmwindow.h" +#include "qeglfskmsgbmintegration_p.h" +#include "qeglfskmsgbmdevice_p.h" +#include "qeglfskmsgbmscreen_p.h" +#include "qeglfskmsgbmcursor_p.h" +#include "qeglfskmsgbmwindow_p.h" #include "private/qeglfscursor_p.h" #include <QtCore/QLoggingCategory> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration_p.h index 71f232abf9..823e5f2c09 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration_p.h @@ -42,7 +42,18 @@ #ifndef QEGLFSKMSGBMINTEGRATION_H #define QEGLFSKMSGBMINTEGRATION_H -#include "qeglfskmsintegration.h" +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <private/qeglfskmsintegration_p.h> #include <QtCore/QMap> #include <QtCore/QVariant> @@ -50,7 +61,7 @@ QT_BEGIN_NAMESPACE class QEglFSKmsDevice; -class QEglFSKmsGbmIntegration : public QEglFSKmsIntegration +class Q_EGLFS_EXPORT QEglFSKmsGbmIntegration : public QEglFSKmsIntegration { public: QEglFSKmsGbmIntegration(); diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp index 945c8b4255..65203d93c7 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp @@ -39,7 +39,7 @@ ****************************************************************************/ #include "private/qeglfsdeviceintegration_p.h" -#include "qeglfskmsgbmintegration.h" +#include "qeglfskmsgbmintegration_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp index 8330a97f94..69a8aede56 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp @@ -39,9 +39,9 @@ ** ****************************************************************************/ -#include "qeglfskmsgbmscreen.h" -#include "qeglfskmsgbmdevice.h" -#include "qeglfskmsgbmcursor.h" +#include "qeglfskmsgbmscreen_p.h" +#include "qeglfskmsgbmdevice_p.h" +#include "qeglfskmsgbmcursor_p.h" #include "qeglfsintegration_p.h" #include <QtCore/QLoggingCategory> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen_p.h index 2be1630e19..72986b45c8 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen_p.h @@ -42,7 +42,18 @@ #ifndef QEGLFSKMSGBMSCREEN_H #define QEGLFSKMSGBMSCREEN_H -#include "qeglfskmsscreen.h" +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qeglfskmsscreen_p.h" #include <QMutex> #include <QWaitCondition> @@ -52,7 +63,7 @@ QT_BEGIN_NAMESPACE class QEglFSKmsGbmCursor; -class QEglFSKmsGbmScreen : public QEglFSKmsScreen +class Q_EGLFS_EXPORT QEglFSKmsGbmScreen : public QEglFSKmsScreen { public: QEglFSKmsGbmScreen(QEglFSKmsDevice *device, const QKmsOutput &output, bool headless); @@ -68,13 +79,13 @@ public: void waitForFlip() override; - void flip(); + virtual void flip(); + virtual void updateFlipStatus(); -private: +protected: void flipFinished(); void ensureModeSet(uint32_t fb); void cloneDestFlipFinished(QEglFSKmsGbmScreen *cloneDestScreen); - void updateFlipStatus(); gbm_surface *m_gbm_surface; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp index b5f34ae200..426fb8f4e9 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp @@ -37,9 +37,9 @@ ** ****************************************************************************/ -#include "qeglfskmsgbmwindow.h" -#include "qeglfskmsgbmintegration.h" -#include "qeglfskmsgbmscreen.h" +#include "qeglfskmsgbmwindow_p.h" +#include "qeglfskmsgbmintegration_p.h" +#include "qeglfskmsgbmscreen_p.h" #include <QtGui/private/qeglconvenience_p.h> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow_p.h index ee4b7978f1..103361b60b 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow_p.h @@ -42,13 +42,24 @@ #ifndef QEGLFSKMSGBMWINDOW_H #define QEGLFSKMSGBMWINDOW_H +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + #include "private/qeglfswindow_p.h" QT_BEGIN_NAMESPACE class QEglFSKmsGbmIntegration; -class QEglFSKmsGbmWindow : public QEglFSWindow +class Q_EGLFS_EXPORT QEglFSKmsGbmWindow : public QEglFSWindow { public: QEglFSKmsGbmWindow(QWindow *w, const QEglFSKmsGbmIntegration *integration) |