diff options
Diffstat (limited to 'src/plugins/platforms/eglfs')
47 files changed, 264 insertions, 174 deletions
diff --git a/src/plugins/platforms/eglfs/api/api.pri b/src/plugins/platforms/eglfs/api/api.pri new file mode 100644 index 0000000000..957dee554c --- /dev/null +++ b/src/plugins/platforms/eglfs/api/api.pri @@ -0,0 +1,15 @@ + +SOURCES += $$PWD/qeglfswindow.cpp \ + $$PWD/qeglfsscreen.cpp \ + $$PWD/qeglfscursor.cpp \ + $$PWD/qeglfshooks.cpp \ + $$PWD/qeglfsdeviceintegration.cpp + +HEADERS += $$PWD/qeglfswindow_p.h \ + $$PWD/qeglfsscreen_p.h \ + $$PWD/qeglfscursor_p.h \ + $$PWD/qeglfshooks_p.h \ + $$PWD/qeglfsdeviceintegration_p.h \ + $$PWD/qeglfsglobal.h + +INCLUDEPATH += $$PWD diff --git a/src/plugins/platforms/eglfs/qeglfscursor.cpp b/src/plugins/platforms/eglfs/api/qeglfscursor.cpp index 6c8c35b1dc..7c1f11372a 100644 --- a/src/plugins/platforms/eglfs/qeglfscursor.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfscursor.cpp @@ -37,9 +37,9 @@ ** ****************************************************************************/ -#include "qeglfscursor.h" +#include "qeglfscursor_p.h" #include "qeglfsintegration.h" -#include "qeglfsscreen.h" +#include "qeglfsscreen_p.h" #include <qpa/qwindowsysteminterface.h> #include <QtGui/QOpenGLContext> @@ -72,6 +72,10 @@ QEglFSCursor::QEglFSCursor(QPlatformScreen *screen) if (!m_visible) return; + int rotation = qEnvironmentVariableIntValue("QT_QPA_EGLFS_ROTATION"); + if (rotation) + m_rotationMatrix.rotate(rotation, 0, 0, 1); + // Try to load the cursor atlas. If this fails, m_visible is set to false and // paintOnScreen() and setCurrentCursor() become no-ops. initCursorAtlas(); @@ -129,9 +133,10 @@ void QEglFSCursor::createShaderPrograms() "attribute highp vec2 vertexCoordEntry;\n" "attribute highp vec2 textureCoordEntry;\n" "varying highp vec2 textureCoord;\n" + "uniform highp mat4 mat;\n" "void main() {\n" " textureCoord = textureCoordEntry;\n" - " gl_Position = vec4(vertexCoordEntry, 1.0, 1.0);\n" + " gl_Position = mat * vec4(vertexCoordEntry, 1.0, 1.0);\n" "}\n"; static const char *textureFragmentProgram = @@ -149,6 +154,7 @@ void QEglFSCursor::createShaderPrograms() m_program->link(); m_textureEntry = m_program->uniformLocation("texture"); + m_matEntry = m_program->uniformLocation("mat"); } void QEglFSCursor::createCursorTexture(uint *texture, const QImage &image) @@ -492,6 +498,7 @@ void QEglFSCursor::draw(const QRectF &r) m_program->setAttributeArray(1, textureCoordinates, 2); m_program->setUniformValue(m_textureEntry, 0); + m_program->setUniformValue(m_matEntry, m_rotationMatrix); glDisable(GL_CULL_FACE); glFrontFace(GL_CCW); diff --git a/src/plugins/platforms/eglfs/qeglfscursor.h b/src/plugins/platforms/eglfs/api/qeglfscursor_p.h index bb30d53d6c..f72e4c0374 100644 --- a/src/plugins/platforms/eglfs/qeglfscursor.h +++ b/src/plugins/platforms/eglfs/api/qeglfscursor_p.h @@ -54,6 +54,7 @@ #include "qeglfsglobal.h" #include <qpa/qplatformcursor.h> #include <qpa/qplatformscreen.h> +#include <QtGui/QMatrix4x4> #include <QtGui/QOpenGLFunctions> #include <QtGui/private/qinputdevicemanager_p.h> @@ -138,8 +139,10 @@ private: QEglFSScreen *m_screen; QOpenGLShaderProgram *m_program; int m_textureEntry; + int m_matEntry; QEglFSCursorDeviceListener *m_deviceListener; bool m_updateRequested; + QMatrix4x4 m_rotationMatrix; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp index fc41dc5643..3848e99221 100644 --- a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp @@ -37,10 +37,12 @@ ** ****************************************************************************/ -#include "qeglfsdeviceintegration.h" +#include "qeglfsdeviceintegration_p.h" #include "qeglfsintegration.h" -#include "qeglfscursor.h" -#include "qeglfswindow.h" +#include "qeglfscursor_p.h" +#include "qeglfswindow_p.h" +#include "qeglfshooks_p.h" + #include <QtPlatformSupport/private/qeglconvenience_p.h> #include <QGuiApplication> #include <private/qguiapplication_p.h> @@ -64,14 +66,15 @@ QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(qLcEglDevDebug, "qt.qpa.egldeviceintegration") Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, - (QEGLDeviceIntegrationFactoryInterface_iid, QLatin1String("/egldeviceintegrations"), Qt::CaseInsensitive)) + (QEglFSDeviceIntegrationFactoryInterface_iid, QLatin1String("/egldeviceintegrations"), Qt::CaseInsensitive)) #ifndef QT_NO_LIBRARY Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, directLoader, - (QEGLDeviceIntegrationFactoryInterface_iid, QLatin1String(""), Qt::CaseInsensitive)) + (QEglFSDeviceIntegrationFactoryInterface_iid, QLatin1String(""), Qt::CaseInsensitive)) + #endif // QT_NO_LIBRARY -QStringList QEGLDeviceIntegrationFactory::keys(const QString &pluginPath) +QStringList QEglFSDeviceIntegrationFactory::keys(const QString &pluginPath) { QStringList list; #ifndef QT_NO_LIBRARY @@ -95,19 +98,19 @@ QStringList QEGLDeviceIntegrationFactory::keys(const QString &pluginPath) return list; } -QEGLDeviceIntegration *QEGLDeviceIntegrationFactory::create(const QString &key, const QString &pluginPath) +QEglFSDeviceIntegration *QEglFSDeviceIntegrationFactory::create(const QString &key, const QString &pluginPath) { - QEGLDeviceIntegration *integration = Q_NULLPTR; + QEglFSDeviceIntegration *integration = Q_NULLPTR; #ifndef QT_NO_LIBRARY if (!pluginPath.isEmpty()) { QCoreApplication::addLibraryPath(pluginPath); - integration = qLoadPlugin<QEGLDeviceIntegration, QEGLDeviceIntegrationPlugin>(directLoader(), key); + integration = qLoadPlugin<QEglFSDeviceIntegration, QEglFSDeviceIntegrationPlugin>(directLoader(), key); } #else Q_UNUSED(pluginPath); #endif if (!integration) - integration = qLoadPlugin<QEGLDeviceIntegration, QEGLDeviceIntegrationPlugin>(loader(), key); + integration = qLoadPlugin<QEglFSDeviceIntegration, QEglFSDeviceIntegrationPlugin>(loader(), key); if (integration) qCDebug(qLcEglDevDebug) << "Using EGL device integration" << key; else @@ -118,7 +121,7 @@ QEGLDeviceIntegration *QEGLDeviceIntegrationFactory::create(const QString &key, static int framebuffer = -1; -QByteArray QEGLDeviceIntegration::fbDeviceName() const +QByteArray QEglFSDeviceIntegration::fbDeviceName() const { #ifdef Q_OS_LINUX QByteArray fbDev = qgetenv("QT_QPA_EGLFS_FB"); @@ -131,7 +134,7 @@ QByteArray QEGLDeviceIntegration::fbDeviceName() const #endif } -int QEGLDeviceIntegration::framebufferIndex() const +int QEglFSDeviceIntegration::framebufferIndex() const { int fbIndex = 0; #ifndef QT_NO_REGULAREXPRESSION @@ -143,7 +146,7 @@ int QEGLDeviceIntegration::framebufferIndex() const return fbIndex; } -void QEGLDeviceIntegration::platformInit() +void QEglFSDeviceIntegration::platformInit() { #ifdef Q_OS_LINUX QByteArray fbDev = fbDeviceName(); @@ -161,7 +164,7 @@ void QEGLDeviceIntegration::platformInit() #endif } -void QEGLDeviceIntegration::platformDestroy() +void QEglFSDeviceIntegration::platformDestroy() { #ifdef Q_OS_LINUX if (framebuffer != -1) @@ -169,27 +172,27 @@ void QEGLDeviceIntegration::platformDestroy() #endif } -EGLNativeDisplayType QEGLDeviceIntegration::platformDisplay() const +EGLNativeDisplayType QEglFSDeviceIntegration::platformDisplay() const { return EGL_DEFAULT_DISPLAY; } -EGLDisplay QEGLDeviceIntegration::createDisplay(EGLNativeDisplayType nativeDisplay) +EGLDisplay QEglFSDeviceIntegration::createDisplay(EGLNativeDisplayType nativeDisplay) { return eglGetDisplay(nativeDisplay); } -bool QEGLDeviceIntegration::usesDefaultScreen() +bool QEglFSDeviceIntegration::usesDefaultScreen() { return true; } -void QEGLDeviceIntegration::screenInit() +void QEglFSDeviceIntegration::screenInit() { // Nothing to do here. Called only when usesDefaultScreen is false. } -void QEGLDeviceIntegration::screenDestroy() +void QEglFSDeviceIntegration::screenDestroy() { QGuiApplication *app = qGuiApp; QEglFSIntegration *platformIntegration = static_cast<QEglFSIntegration *>( @@ -198,17 +201,17 @@ void QEGLDeviceIntegration::screenDestroy() platformIntegration->removeScreen(app->screens().last()->handle()); } -QSizeF QEGLDeviceIntegration::physicalScreenSize() const +QSizeF QEglFSDeviceIntegration::physicalScreenSize() const { return q_physicalScreenSizeFromFb(framebuffer, screenSize()); } -QSize QEGLDeviceIntegration::screenSize() const +QSize QEglFSDeviceIntegration::screenSize() const { return q_screenSizeFromFb(framebuffer); } -QDpi QEGLDeviceIntegration::logicalDpi() const +QDpi QEglFSDeviceIntegration::logicalDpi() const { const QSizeF ps = physicalScreenSize(); const QSize s = screenSize(); @@ -220,42 +223,42 @@ QDpi QEGLDeviceIntegration::logicalDpi() const return QDpi(100, 100); } -qreal QEGLDeviceIntegration::pixelDensity() const +qreal QEglFSDeviceIntegration::pixelDensity() const { return qRound(logicalDpi().first / qreal(100)); } -Qt::ScreenOrientation QEGLDeviceIntegration::nativeOrientation() const +Qt::ScreenOrientation QEglFSDeviceIntegration::nativeOrientation() const { return Qt::PrimaryOrientation; } -Qt::ScreenOrientation QEGLDeviceIntegration::orientation() const +Qt::ScreenOrientation QEglFSDeviceIntegration::orientation() const { return Qt::PrimaryOrientation; } -int QEGLDeviceIntegration::screenDepth() const +int QEglFSDeviceIntegration::screenDepth() const { return q_screenDepthFromFb(framebuffer); } -QImage::Format QEGLDeviceIntegration::screenFormat() const +QImage::Format QEglFSDeviceIntegration::screenFormat() const { return screenDepth() == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32; } -qreal QEGLDeviceIntegration::refreshRate() const +qreal QEglFSDeviceIntegration::refreshRate() const { return q_refreshRateFromFb(framebuffer); } -EGLint QEGLDeviceIntegration::surfaceType() const +EGLint QEglFSDeviceIntegration::surfaceType() const { return EGL_WINDOW_BIT; } -QSurfaceFormat QEGLDeviceIntegration::surfaceFormatFor(const QSurfaceFormat &inputFormat) const +QSurfaceFormat QEglFSDeviceIntegration::surfaceFormatFor(const QSurfaceFormat &inputFormat) const { QSurfaceFormat format = inputFormat; @@ -269,17 +272,17 @@ QSurfaceFormat QEGLDeviceIntegration::surfaceFormatFor(const QSurfaceFormat &inp return format; } -bool QEGLDeviceIntegration::filterConfig(EGLDisplay, EGLConfig) const +bool QEglFSDeviceIntegration::filterConfig(EGLDisplay, EGLConfig) const { return true; } -QEglFSWindow *QEGLDeviceIntegration::createWindow(QWindow *window) const +QEglFSWindow *QEglFSDeviceIntegration::createWindow(QWindow *window) const { return new QEglFSWindow(window); } -EGLNativeWindowType QEGLDeviceIntegration::createNativeWindow(QPlatformWindow *platformWindow, +EGLNativeWindowType QEglFSDeviceIntegration::createNativeWindow(QPlatformWindow *platformWindow, const QSize &size, const QSurfaceFormat &format) { @@ -289,29 +292,29 @@ EGLNativeWindowType QEGLDeviceIntegration::createNativeWindow(QPlatformWindow *p return 0; } -EGLNativeWindowType QEGLDeviceIntegration::createNativeOffscreenWindow(const QSurfaceFormat &format) +EGLNativeWindowType QEglFSDeviceIntegration::createNativeOffscreenWindow(const QSurfaceFormat &format) { Q_UNUSED(format); return 0; } -void QEGLDeviceIntegration::destroyNativeWindow(EGLNativeWindowType window) +void QEglFSDeviceIntegration::destroyNativeWindow(EGLNativeWindowType window) { Q_UNUSED(window); } -bool QEGLDeviceIntegration::hasCapability(QPlatformIntegration::Capability cap) const +bool QEglFSDeviceIntegration::hasCapability(QPlatformIntegration::Capability cap) const { Q_UNUSED(cap); return false; } -QPlatformCursor *QEGLDeviceIntegration::createCursor(QPlatformScreen *screen) const +QPlatformCursor *QEglFSDeviceIntegration::createCursor(QPlatformScreen *screen) const { return new QEglFSCursor(screen); } -void QEGLDeviceIntegration::waitForVSync(QPlatformSurface *surface) const +void QEglFSDeviceIntegration::waitForVSync(QPlatformSurface *surface) const { Q_UNUSED(surface); @@ -325,24 +328,42 @@ void QEGLDeviceIntegration::waitForVSync(QPlatformSurface *surface) const #endif } -void QEGLDeviceIntegration::presentBuffer(QPlatformSurface *surface) +void QEglFSDeviceIntegration::presentBuffer(QPlatformSurface *surface) { Q_UNUSED(surface); } -bool QEGLDeviceIntegration::supportsPBuffers() const +bool QEglFSDeviceIntegration::supportsPBuffers() const { return true; } -bool QEGLDeviceIntegration::supportsSurfacelessContexts() const +bool QEglFSDeviceIntegration::supportsSurfacelessContexts() const { return true; } -void *QEGLDeviceIntegration::wlDisplay() const +void *QEglFSDeviceIntegration::wlDisplay() const { return Q_NULLPTR; } +EGLConfig QEglFSDeviceIntegration::chooseConfig(EGLDisplay display, const QSurfaceFormat &format) +{ + class Chooser : public QEglConfigChooser { + public: + Chooser(EGLDisplay display) + : QEglConfigChooser(display) { } + bool filterConfig(EGLConfig config) const Q_DECL_OVERRIDE { + return qt_egl_device_integration()->filterConfig(display(), config) + && QEglConfigChooser::filterConfig(config); + } + }; + + Chooser chooser(display); + chooser.setSurfaceType(qt_egl_device_integration()->surfaceType()); + chooser.setSurfaceFormat(format); + return chooser.chooseConfig(); +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.h b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h index f1a5bde331..819e4818ab 100644 --- a/src/plugins/platforms/eglfs/qeglfsdeviceintegration.h +++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration_p.h @@ -63,12 +63,12 @@ QT_BEGIN_NAMESPACE class QPlatformSurface; class QEglFSWindow; -#define QEGLDeviceIntegrationFactoryInterface_iid "org.qt-project.qt.qpa.egl.QEGLDeviceIntegrationFactoryInterface.5.5" +#define QEglFSDeviceIntegrationFactoryInterface_iid "org.qt-project.qt.qpa.egl.QEglFSDeviceIntegrationFactoryInterface.5.5" -class Q_EGLFS_EXPORT QEGLDeviceIntegration +class Q_EGLFS_EXPORT QEglFSDeviceIntegration { public: - virtual ~QEGLDeviceIntegration() { } + virtual ~QEglFSDeviceIntegration() { } virtual void platformInit(); virtual void platformDestroy(); @@ -105,25 +105,27 @@ public: virtual bool supportsSurfacelessContexts() const; virtual void *wlDisplay() const; + + static EGLConfig chooseConfig(EGLDisplay display, const QSurfaceFormat &format); }; -class Q_EGLFS_EXPORT QEGLDeviceIntegrationPlugin : public QObject +class Q_EGLFS_EXPORT QEglFSDeviceIntegrationPlugin : public QObject { Q_OBJECT public: - virtual QEGLDeviceIntegration *create() = 0; + virtual QEglFSDeviceIntegration *create() = 0; // the pattern expected by qLoadPlugin calls for a QString argument. // we don't need it, so don't bother subclasses with it: - QEGLDeviceIntegration *create(const QString &) { return create(); } + QEglFSDeviceIntegration *create(const QString &) { return create(); } }; -class Q_EGLFS_EXPORT QEGLDeviceIntegrationFactory +class Q_EGLFS_EXPORT QEglFSDeviceIntegrationFactory { public: static QStringList keys(const QString &pluginPath = QString()); - static QEGLDeviceIntegration *create(const QString &name, const QString &platformPluginPath = QString()); + static QEglFSDeviceIntegration *create(const QString &name, const QString &platformPluginPath = QString()); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsglobal.h b/src/plugins/platforms/eglfs/api/qeglfsglobal.h index d6aba565ce..2b5effc2f1 100644 --- a/src/plugins/platforms/eglfs/qeglfsglobal.h +++ b/src/plugins/platforms/eglfs/api/qeglfsglobal.h @@ -40,7 +40,11 @@ #ifndef QEGLFSGLOBAL_H #define QEGLFSGLOBAL_H -#include <qglobal.h> +#include <QtCore/qglobal.h> + +#include <EGL/egl.h> + +QT_BEGIN_NAMESPACE #ifdef QT_BUILD_EGL_DEVICE_LIB #define Q_EGLFS_EXPORT Q_DECL_EXPORT @@ -48,7 +52,6 @@ #define Q_EGLFS_EXPORT Q_DECL_IMPORT #endif -#include <EGL/egl.h> #undef Status #undef None #undef Bool @@ -61,4 +64,6 @@ #undef Expose #undef Unsorted +QT_END_NAMESPACE + #endif diff --git a/src/plugins/platforms/eglfs/qeglfshooks.cpp b/src/plugins/platforms/eglfs/api/qeglfshooks.cpp index 87285428df..b67d8fab54 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfshooks.cpp @@ -37,7 +37,7 @@ ** ****************************************************************************/ -#include "qeglfshooks.h" +#include "qeglfshooks_p.h" #include <QLoggingCategory> QT_BEGIN_NAMESPACE @@ -46,7 +46,7 @@ Q_DECLARE_LOGGING_CATEGORY(qLcEglDevDebug) #ifdef EGLFS_PLATFORM_HOOKS -QEGLDeviceIntegration *qt_egl_device_integration() +QEglFSDeviceIntegration *qt_egl_device_integration() { extern QEglFSHooks *platformHooks; return platformHooks; @@ -59,16 +59,16 @@ class DeviceIntegration public: DeviceIntegration(); ~DeviceIntegration() { delete m_integration; } - QEGLDeviceIntegration *integration() { return m_integration; } + QEglFSDeviceIntegration *integration() { return m_integration; } private: - QEGLDeviceIntegration *m_integration; + QEglFSDeviceIntegration *m_integration; }; Q_GLOBAL_STATIC(DeviceIntegration, deviceIntegration) DeviceIntegration::DeviceIntegration() : m_integration(0) { - QStringList pluginKeys = QEGLDeviceIntegrationFactory::keys(); + QStringList pluginKeys = QEglFSDeviceIntegrationFactory::keys(); if (!pluginKeys.isEmpty()) { // Some built-in logic: Prioritize either X11 or KMS/DRM. if (qEnvironmentVariableIsSet("DISPLAY")) { @@ -113,7 +113,7 @@ DeviceIntegration::DeviceIntegration() : m_integration(0) while (!m_integration && !pluginKeys.isEmpty()) { QString key = pluginKeys.takeFirst(); qCDebug(qLcEglDevDebug) << "Trying to load device EGL integration" << key; - m_integration = QEGLDeviceIntegrationFactory::create(key); + m_integration = QEglFSDeviceIntegrationFactory::create(key); } } } @@ -122,11 +122,11 @@ DeviceIntegration::DeviceIntegration() : m_integration(0) // Use a default, non-specialized device integration when no plugin is available. // For some systems this is sufficient. qCDebug(qLcEglDevDebug) << "Using base device integration"; - m_integration = new QEGLDeviceIntegration; + m_integration = new QEglFSDeviceIntegration; } } -QEGLDeviceIntegration *qt_egl_device_integration() +QEglFSDeviceIntegration *qt_egl_device_integration() { return deviceIntegration()->integration(); } diff --git a/src/plugins/platforms/eglfs/qeglfshooks.h b/src/plugins/platforms/eglfs/api/qeglfshooks_p.h index cc6c325b58..e379f7a76d 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks.h +++ b/src/plugins/platforms/eglfs/api/qeglfshooks_p.h @@ -40,16 +40,27 @@ #ifndef QEGLFSHOOKS_H #define QEGLFSHOOKS_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 "qeglfsglobal.h" -#include "qeglfsdeviceintegration.h" +#include "qeglfsdeviceintegration_p.h" QT_BEGIN_NAMESPACE -class QEglFSHooks : public QEGLDeviceIntegration +class QEglFSHooks : public QEglFSDeviceIntegration { }; -Q_EGLFS_EXPORT QEGLDeviceIntegration *qt_egl_device_integration(); +Q_EGLFS_EXPORT QEglFSDeviceIntegration *qt_egl_device_integration(); QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/api/qeglfsscreen.cpp index a1ab854db1..47ef2f64e7 100644 --- a/src/plugins/platforms/eglfs/qeglfsscreen.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfsscreen.cpp @@ -43,9 +43,9 @@ #include <qpa/qplatformcursor.h> #include <QtPlatformSupport/private/qopenglcompositor_p.h> -#include "qeglfsscreen.h" -#include "qeglfswindow.h" -#include "qeglfshooks.h" +#include "qeglfsscreen_p.h" +#include "qeglfswindow_p.h" +#include "qeglfshooks_p.h" QT_BEGIN_NAMESPACE @@ -65,6 +65,31 @@ QEglFSScreen::~QEglFSScreen() QRect QEglFSScreen::geometry() const { + QRect r = geometryForSurface(); + + static int rotation = qEnvironmentVariableIntValue("QT_QPA_EGLFS_ROTATION"); + switch (rotation) { + case 0: + case 180: + case -180: + break; + case 90: + case -90: { + int h = r.height(); + r.setHeight(r.width()); + r.setWidth(h); + break; + } + default: + qWarning("Invalid rotation %d specified in QT_QPA_EGLFS_ROTATION", rotation); + break; + } + + return r; +} + +QRect QEglFSScreen::geometryForSurface() const +{ return QRect(QPoint(0, 0), qt_egl_device_integration()->screenSize()); } diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.h b/src/plugins/platforms/eglfs/api/qeglfsscreen_p.h index 57d68ca572..232525fae3 100644 --- a/src/plugins/platforms/eglfs/qeglfsscreen.h +++ b/src/plugins/platforms/eglfs/api/qeglfsscreen_p.h @@ -40,9 +40,22 @@ #ifndef QEGLFSSCREEN_H #define QEGLFSSCREEN_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 "qeglfsglobal.h" #include <QtCore/QPointer> +#include <qpa/qplatformscreen.h> + QT_BEGIN_NAMESPACE class QEglFSWindow; @@ -55,6 +68,7 @@ public: ~QEglFSScreen(); QRect geometry() const Q_DECL_OVERRIDE; + QRect geometryForSurface() const; int depth() const Q_DECL_OVERRIDE; QImage::Format format() const Q_DECL_OVERRIDE; diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/api/qeglfswindow.cpp index 556d3942cd..74723955c6 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.cpp +++ b/src/plugins/platforms/eglfs/api/qeglfswindow.cpp @@ -46,9 +46,10 @@ #include <QtPlatformSupport/private/qeglconvenience_p.h> #include <QtPlatformSupport/private/qopenglcompositorbackingstore_p.h> -#include "qeglfswindow.h" -#include "qeglfscursor.h" -#include "qeglfshooks.h" +#include "qeglfswindow_p.h" +#include "qeglfscursor_p.h" +#include "qeglfshooks_p.h" +#include "qeglfsdeviceintegration_p.h" QT_BEGIN_NAMESPACE @@ -141,7 +142,8 @@ void QEglFSWindow::create() context->setScreen(window()->screen()); if (Q_UNLIKELY(!context->create())) qFatal("EGLFS: Failed to create compositing context"); - compositor->setTarget(context, window()); + compositor->setTarget(context, window(), screen->geometryForSurface()); + compositor->setRotation(qEnvironmentVariableIntValue("QT_QPA_EGLFS_ROTATION")); // If there is a "root" window into which raster and QOpenGLWidget content is // composited, all other contexts must share with its context. if (!qt_gl_global_share_context()) { @@ -186,9 +188,10 @@ void QEglFSWindow::resetSurface() EGLDisplay display = screen()->display(); QSurfaceFormat platformFormat = qt_egl_device_integration()->surfaceFormatFor(window()->requestedFormat()); - m_config = QEglFSIntegration::chooseConfig(display, platformFormat); + m_config = QEglFSDeviceIntegration::chooseConfig(display, platformFormat); m_format = q_glFormatFromConfig(display, m_config, platformFormat); - m_window = qt_egl_device_integration()->createNativeWindow(this, screen()->geometry().size(), m_format); + const QSize surfaceSize = screen()->geometryForSurface().size(); + m_window = qt_egl_device_integration()->createNativeWindow(this, surfaceSize, m_format); m_surface = eglCreateWindowSurface(display, m_config, m_window, NULL); } diff --git a/src/plugins/platforms/eglfs/qeglfswindow.h b/src/plugins/platforms/eglfs/api/qeglfswindow_p.h index d607c8bd62..aea4ed4806 100644 --- a/src/plugins/platforms/eglfs/qeglfswindow.h +++ b/src/plugins/platforms/eglfs/api/qeglfswindow_p.h @@ -40,9 +40,20 @@ #ifndef QEGLFSWINDOW_H #define QEGLFSWINDOW_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 "qeglfsglobal.h" #include "qeglfsintegration.h" -#include "qeglfsscreen.h" +#include "qeglfsscreen_p.h" #include <qpa/qplatformwindow.h> #include <QtPlatformSupport/private/qopenglcompositor_p.h> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/eglfs_brcm.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/eglfs_brcm.pro index e2ebf9f7ee..cd97c2c5a3 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/eglfs_brcm.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/eglfs_brcm.pro @@ -1,6 +1,6 @@ TARGET = qeglfs-brcm-integration -QT += core-private gui-private platformsupport-private eglfs_device_lib-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private INCLUDEPATH += $$PWD/../.. CONFIG += egl diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.h index 8f78b51190..5af628dedd 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmintegration.h @@ -40,11 +40,11 @@ #ifndef QEGLFSBRCMINTEGRATION_H #define QEGLFSBRCMINTEGRATION_H -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" QT_BEGIN_NAMESPACE -class QEglFSBrcmIntegration : public QEGLDeviceIntegration +class QEglFSBrcmIntegration : public QEglFSDeviceIntegration { public: void platformInit() Q_DECL_OVERRIDE; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmmain.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmmain.cpp index 0bd54ba239..80d7631931 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmmain.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_brcm/qeglfsbrcmmain.cpp @@ -37,18 +37,18 @@ ** ****************************************************************************/ -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include "qeglfsbrcmintegration.h" QT_BEGIN_NAMESPACE -class QEglFSBrcmIntegrationPlugin : public QEGLDeviceIntegrationPlugin +class QEglFSBrcmIntegrationPlugin : public QEglFSDeviceIntegrationPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID QEGLDeviceIntegrationFactoryInterface_iid FILE "eglfs_brcm.json") + Q_PLUGIN_METADATA(IID QEglFSDeviceIntegrationFactoryInterface_iid FILE "eglfs_brcm.json") public: - QEGLDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSBrcmIntegration; } + QEglFSDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSBrcmIntegration; } }; QT_END_NAMESPACE 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 979bfe3ea9..b0d631a9d1 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/eglfs_kms.pro @@ -4,7 +4,7 @@ PLUGIN_TYPE = egldeviceintegrations PLUGIN_CLASS_NAME = QEglFSKmsGbmIntegrationPlugin load(qt_plugin) -QT += core-private gui-private platformsupport-private eglfs_device_lib-private eglfs_kms_support-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private eglfs_kms_support-private INCLUDEPATH += $$PWD/../.. $$PWD/../eglfs_kms_support diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp index 1c0a8e1b5f..a5ab73cca4 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp @@ -43,7 +43,7 @@ #include "qeglfskmsgbmdevice.h" #include "qeglfskmsgbmscreen.h" #include "qeglfskmsgbmcursor.h" -#include "qeglfscursor.h" +#include "private/qeglfscursor_p.h" #include <QtPlatformSupport/private/qdevicediscovery_p.h> #include <QtCore/QLoggingCategory> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp index 8e8779ca10..f34e4859c6 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmmain.cpp @@ -38,18 +38,18 @@ ** ****************************************************************************/ -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include "qeglfskmsgbmintegration.h" QT_BEGIN_NAMESPACE -class QEglFSKmsGbmIntegrationPlugin : public QEGLDeviceIntegrationPlugin +class QEglFSKmsGbmIntegrationPlugin : public QEglFSDeviceIntegrationPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID QEGLDeviceIntegrationFactoryInterface_iid FILE "eglfs_kms.json") + Q_PLUGIN_METADATA(IID QEglFSDeviceIntegrationFactoryInterface_iid FILE "eglfs_kms.json") public: - QEGLDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSKmsGbmIntegration; } + QEglFSDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSKmsGbmIntegration; } }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/eglfs_kms_egldevice.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/eglfs_kms_egldevice.pro index 3a380b7525..8eabd2d4b7 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/eglfs_kms_egldevice.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/eglfs_kms_egldevice.pro @@ -1,6 +1,6 @@ TARGET = qeglfs-kms-egldevice-integration -QT += core-private gui-private platformsupport-private eglfs_device_lib-private eglfs_kms_support-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private eglfs_kms_support-private INCLUDEPATH += $$PWD/../.. $$PWD/../eglfs_kms_support diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp index 838569d5c6..28967d71ff 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.cpp @@ -40,7 +40,7 @@ #include "qeglfskmsegldeviceintegration.h" #include <QtPlatformSupport/private/qeglconvenience_p.h> -#include "qeglfswindow.h" +#include "private/qeglfswindow_p.h" #include "qeglfskmsegldevice.h" #include "qeglfskmsscreen.h" #include <QLoggingCategory> @@ -189,7 +189,7 @@ void QEglJetsonTK1Window::resetSurface() if (!m_integration->m_funcs->stream_consumer_output(display, m_egl_stream, layer)) qWarning("resetSurface: Unable to connect stream"); - m_config = QEglFSIntegration::chooseConfig(display, m_integration->surfaceFormatFor(window()->requestedFormat())); + m_config = QEglFSDeviceIntegration::chooseConfig(display, m_integration->surfaceFormatFor(window()->requestedFormat())); m_format = q_glFormatFromConfig(display, m_config); qCDebug(qLcEglfsKmsDebug) << "Stream producer format is" << m_format; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicemain.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicemain.cpp index 63571f796f..42fec073f1 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicemain.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicemain.cpp @@ -41,13 +41,13 @@ QT_BEGIN_NAMESPACE -class QEglFSKmsEglDeviceIntegrationPlugin : public QEGLDeviceIntegrationPlugin +class QEglFSKmsEglDeviceIntegrationPlugin : public QEglFSDeviceIntegrationPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID QEGLDeviceIntegrationFactoryInterface_iid FILE "eglfs_kms_egldevice.json") + Q_PLUGIN_METADATA(IID QEglFSDeviceIntegrationFactoryInterface_iid FILE "eglfs_kms_egldevice.json") public: - QEGLDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSKmsEglDeviceIntegration; } + QEglFSDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSKmsEglDeviceIntegration; } }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro index 6355fe6abd..6dd857a4e4 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro @@ -2,7 +2,7 @@ TARGET = QtEglFsKmsSupport CONFIG += no_module_headers internal_module load(qt_module) -QT += core-private gui-private platformsupport-private eglfs_device_lib-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private INCLUDEPATH += $$PWD/../.. diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp index 07ea7d4439..7389050efc 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp @@ -42,8 +42,8 @@ #include "qeglfskmsintegration.h" #include "qeglfskmsdevice.h" #include "qeglfskmsscreen.h" -#include "qeglfswindow.h" -#include "qeglfscursor.h" +#include "private/qeglfswindow_p.h" +#include "private/qeglfscursor_p.h" #include <QtPlatformSupport/private/qeglconvenience_p.h> #include <QtCore/QJsonDocument> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h index 34ac5385a5..81386881ff 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.h @@ -42,7 +42,7 @@ #ifndef QEGLFSKMSINTEGRATION_H #define QEGLFSKMSINTEGRATION_H -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include <QtCore/QMap> #include <QtCore/QVariant> #include <QtCore/QLoggingCategory> @@ -53,7 +53,7 @@ class QEglFSKmsDevice; Q_EGLFS_EXPORT Q_DECLARE_LOGGING_CATEGORY(qLcEglfsKmsDebug) -class Q_EGLFS_EXPORT QEglFSKmsIntegration : public QEGLDeviceIntegration +class Q_EGLFS_EXPORT QEglFSKmsIntegration : public QEglFSDeviceIntegration { public: QEglFSKmsIntegration(); diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h index aa698e1b5d..9679f70260 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h @@ -43,7 +43,7 @@ #define QEGLFSKMSSCREEN_H #include "qeglfskmsintegration.h" -#include "qeglfsscreen.h" +#include "private/qeglfsscreen_p.h" #include <QtCore/QList> #include <QtCore/QMutex> diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/eglfs_mali.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/eglfs_mali.pro index 7fc4568ae3..1e58b5fdcd 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/eglfs_mali.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/eglfs_mali.pro @@ -1,6 +1,6 @@ TARGET = qeglfs-mali-integration -QT += core-private gui-private platformsupport-private eglfs_device_lib-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private # Avoid X11 header collision DEFINES += MESA_EGL_NO_X11_HEADERS diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp index ffdb7a686b..cd468c989f 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp @@ -56,7 +56,7 @@ struct fbdev_window { void QEglFSMaliIntegration::platformInit() { // Keep the non-overridden base class functions based on fb0 working. - QEGLDeviceIntegration::platformInit(); + QEglFSDeviceIntegration::platformInit(); int fd = qt_safe_open("/dev/fb0", O_RDWR, 0); if (fd == -1) diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.h index 35a2c64951..56883a3676 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.h @@ -40,11 +40,11 @@ #ifndef QEGLFSMALIINTEGRATION_H #define QEGLFSMALIINTEGRATION_H -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" QT_BEGIN_NAMESPACE -class QEglFSMaliIntegration : public QEGLDeviceIntegration +class QEglFSMaliIntegration : public QEglFSDeviceIntegration { public: void platformInit() Q_DECL_OVERRIDE; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmalimain.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmalimain.cpp index 0754e1af5b..a3c804f54d 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmalimain.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmalimain.cpp @@ -37,18 +37,18 @@ ** ****************************************************************************/ -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include "qeglfsmaliintegration.h" QT_BEGIN_NAMESPACE -class QEglFSMaliIntegrationPlugin : public QEGLDeviceIntegrationPlugin +class QEglFSMaliIntegrationPlugin : public QEglFSDeviceIntegrationPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID QEGLDeviceIntegrationFactoryInterface_iid FILE "eglfs_mali.json") + Q_PLUGIN_METADATA(IID QEglFSDeviceIntegrationFactoryInterface_iid FILE "eglfs_mali.json") public: - QEGLDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSMaliIntegration; } + QEglFSDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSMaliIntegration; } }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/eglfs_viv.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/eglfs_viv.pro index 6fac2f529a..a53aac2041 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/eglfs_viv.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/eglfs_viv.pro @@ -1,6 +1,6 @@ TARGET = qeglfs-viv-integration -QT += core-private gui-private platformsupport-private eglfs_device_lib-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private INCLUDEPATH += $$PWD/../.. CONFIG += egl diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp index ca97f6c8f9..f2fcc0d3ff 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE void QEglFSVivIntegration::platformInit() { - QEGLDeviceIntegration::platformInit(); + QEglFSDeviceIntegration::platformInit(); int width, height; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h index 4a8cd5c385..2e98c2b4b1 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivintegration.h @@ -40,11 +40,11 @@ #ifndef QEGLFSVIVINTEGRATION_H #define QEGLFSVIVINTEGRATION_H -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" QT_BEGIN_NAMESPACE -class QEglFSVivIntegration : public QEGLDeviceIntegration +class QEglFSVivIntegration : public QEglFSDeviceIntegration { public: void platformInit() Q_DECL_OVERRIDE; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivmain.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivmain.cpp index d1c9fb4086..ebe2091b1e 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivmain.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/qeglfsvivmain.cpp @@ -37,18 +37,18 @@ ** ****************************************************************************/ -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include "qeglfsvivintegration.h" QT_BEGIN_NAMESPACE -class QEglFSVivIntegrationPlugin : public QEGLDeviceIntegrationPlugin +class QEglFSVivIntegrationPlugin : public QEglFSDeviceIntegrationPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID QEGLDeviceIntegrationFactoryInterface_iid FILE "eglfs_viv.json") + Q_PLUGIN_METADATA(IID QEglFSDeviceIntegrationFactoryInterface_iid FILE "eglfs_viv.json") public: - QEGLDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSVivIntegration; } + QEglFSDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSVivIntegration; } }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/eglfs_viv_wl.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/eglfs_viv_wl.pro index 44f75c40e0..38259f4a5d 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/eglfs_viv_wl.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/eglfs_viv_wl.pro @@ -1,6 +1,6 @@ TARGET = qeglfs-viv-wl-integration -QT += core-private gui-private platformsupport-private eglfs_device_lib-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private INCLUDEPATH += $$PWD/../.. CONFIG += egl diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.cpp index 5c113456e4..61e2f17766 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE void QEglFSVivWaylandIntegration::platformInit() { - QEGLDeviceIntegration::platformInit(); + QEglFSDeviceIntegration::platformInit(); int width, height; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.h index 40eacc8f2f..9abbe817a6 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlintegration.h @@ -40,12 +40,12 @@ #ifndef QEGLFSVIVINTEGRATION_H #define QEGLFSVIVINTEGRATION_H -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" struct wl_display; QT_BEGIN_NAMESPACE -class QEglFSVivWaylandIntegration : public QEGLDeviceIntegration +class QEglFSVivWaylandIntegration : public QEglFSDeviceIntegration { public: void platformInit() Q_DECL_OVERRIDE; diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlmain.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlmain.cpp index 02ef9c566c..3b26feda07 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlmain.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/qeglfsvivwlmain.cpp @@ -37,18 +37,18 @@ ** ****************************************************************************/ -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include "qeglfsvivwlintegration.h" QT_BEGIN_NAMESPACE -class QEglFSVivWaylandIntegrationPlugin : public QEGLDeviceIntegrationPlugin +class QEglFSVivWaylandIntegrationPlugin : public QEglFSDeviceIntegrationPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID QEGLDeviceIntegrationFactoryInterface_iid FILE "eglfs_viv_wl.json") + Q_PLUGIN_METADATA(IID QEglFSDeviceIntegrationFactoryInterface_iid FILE "eglfs_viv_wl.json") public: - QEGLDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSVivWaylandIntegration; } + QEglFSDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSVivWaylandIntegration; } }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro index 83f0c74910..21af6eb736 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro @@ -1,6 +1,6 @@ TARGET = qeglfs-x11-integration -QT += core-private gui-private platformsupport-private eglfs_device_lib-private +QT += core-private gui-private platformsupport-private eglfsdeviceintegration-private # Avoid X11 header collision DEFINES += MESA_EGL_NO_X11_HEADERS diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h index a3d0b01baf..c0f0ee5f22 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h @@ -40,7 +40,7 @@ #ifndef QEGLFSX11INTEGRATION_H #define QEGLFSX11INTEGRATION_H -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include <qpa/qwindowsysteminterface.h> #include <qpa/qplatformwindow.h> @@ -64,7 +64,7 @@ namespace Atoms { class EventReader; -class QEglFSX11Integration : public QEGLDeviceIntegration +class QEglFSX11Integration : public QEglFSDeviceIntegration { public: QEglFSX11Integration() : m_connection(0), m_window(0), m_eventReader(0) {} diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11main.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11main.cpp index 314a85694b..c15e05b657 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11main.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11main.cpp @@ -37,18 +37,18 @@ ** ****************************************************************************/ -#include "qeglfsdeviceintegration.h" +#include "private/qeglfsdeviceintegration_p.h" #include "qeglfsx11integration.h" QT_BEGIN_NAMESPACE -class QEglFSX11IntegrationPlugin : public QEGLDeviceIntegrationPlugin +class QEglFSX11IntegrationPlugin : public QEglFSDeviceIntegrationPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID QEGLDeviceIntegrationFactoryInterface_iid FILE "eglfs_x11.json") + Q_PLUGIN_METADATA(IID QEglFSDeviceIntegrationFactoryInterface_iid FILE "eglfs_x11.json") public: - QEGLDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSX11Integration; } + QEglFSDeviceIntegration *create() Q_DECL_OVERRIDE { return new QEglFSX11Integration; } }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/eglfs-plugin.pro b/src/plugins/platforms/eglfs/eglfs-plugin.pro index a628cdccd9..90b8a9fb32 100644 --- a/src/plugins/platforms/eglfs/eglfs-plugin.pro +++ b/src/plugins/platforms/eglfs/eglfs-plugin.pro @@ -1,6 +1,6 @@ TARGET = qeglfs -QT += platformsupport-private eglfs_device_lib-private +QT += platformsupport-private eglfsdeviceintegration-private SOURCES += $$PWD/qeglfsmain.cpp diff --git a/src/plugins/platforms/eglfs/eglfs.pro b/src/plugins/platforms/eglfs/eglfs.pro index 03c96ca1d9..d91ffd60a1 100644 --- a/src/plugins/platforms/eglfs/eglfs.pro +++ b/src/plugins/platforms/eglfs/eglfs.pro @@ -1,6 +1,6 @@ TEMPLATE = subdirs CONFIG += ordered -SUBDIRS += eglfs_device_lib.pro +SUBDIRS += eglfsdeviceintegration.pro SUBDIRS += eglfs-plugin.pro SUBDIRS += deviceintegration diff --git a/src/plugins/platforms/eglfs/eglfs_device_lib.pro b/src/plugins/platforms/eglfs/eglfsdeviceintegration.pro index f784020fb6..05f4196728 100644 --- a/src/plugins/platforms/eglfs/eglfs_device_lib.pro +++ b/src/plugins/platforms/eglfs/eglfsdeviceintegration.pro @@ -3,8 +3,9 @@ # have to keep the QObject magic like qobject_cast working. # Hence this header-less, private-only module. -TARGET = QtEglDeviceIntegration -CONFIG += no_module_headers internal_module +TARGET = QtEglFSDeviceIntegration +CONFIG += internal_module +MODULE = eglfsdeviceintegration QT += core-private gui-private platformsupport-private LIBS += $$QMAKE_LIBS_DYNLOAD @@ -15,22 +16,14 @@ DEFINES += MESA_EGL_NO_X11_HEADERS DEFINES += QT_BUILD_EGL_DEVICE_LIB SOURCES += $$PWD/qeglfsintegration.cpp \ - $$PWD/qeglfswindow.cpp \ - $$PWD/qeglfsscreen.cpp \ - $$PWD/qeglfscursor.cpp \ - $$PWD/qeglfshooks.cpp \ $$PWD/qeglfscontext.cpp \ $$PWD/qeglfsoffscreenwindow.cpp \ - $$PWD/qeglfsdeviceintegration.cpp HEADERS += $$PWD/qeglfsintegration.h \ - $$PWD/qeglfswindow.h \ - $$PWD/qeglfsscreen.h \ - $$PWD/qeglfscursor.h \ - $$PWD/qeglfshooks.h \ $$PWD/qeglfscontext.h \ $$PWD/qeglfsoffscreenwindow.h \ - $$PWD/qeglfsdeviceintegration.h + +include($$PWD/api/api.pri) QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF diff --git a/src/plugins/platforms/eglfs/qeglfscontext.cpp b/src/plugins/platforms/eglfs/qeglfscontext.cpp index 6acb362bf0..8d479873cf 100644 --- a/src/plugins/platforms/eglfs/qeglfscontext.cpp +++ b/src/plugins/platforms/eglfs/qeglfscontext.cpp @@ -43,9 +43,9 @@ #include <QtPlatformSupport/private/qeglpbuffer_p.h> #include "qeglfscontext.h" -#include "qeglfswindow.h" -#include "qeglfshooks.h" -#include "qeglfscursor.h" +#include "qeglfswindow_p.h" +#include "qeglfshooks_p.h" +#include "qeglfscursor_p.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp index 6f38a96f45..8c8ef99bc2 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp +++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp @@ -52,11 +52,11 @@ #include <private/qgenericunixthemes_p.h> #include "qeglfsintegration.h" -#include "qeglfswindow.h" -#include "qeglfshooks.h" +#include "qeglfswindow_p.h" +#include "qeglfshooks_p.h" #include "qeglfscontext.h" #include "qeglfsoffscreenwindow.h" -#include "qeglfscursor.h" +#include "qeglfscursor_p.h" #include <QtPlatformSupport/private/qeglconvenience_p.h> #include <QtPlatformSupport/private/qeglplatformcontext_p.h> @@ -205,7 +205,7 @@ QPlatformOpenGLContext *QEglFSIntegration::createPlatformOpenGLContext(QOpenGLCo QEglFSContext *ctx; QSurfaceFormat adjustedFormat = qt_egl_device_integration()->surfaceFormatFor(context->format()); if (nativeHandle.isNull()) { - EGLConfig config = QEglFSIntegration::chooseConfig(dpy, adjustedFormat); + EGLConfig config = QEglFSDeviceIntegration::chooseConfig(dpy, adjustedFormat); ctx = new QEglFSContext(adjustedFormat, share, dpy, &config, QVariant()); } else { ctx = new QEglFSContext(adjustedFormat, share, dpy, 0, nativeHandle); @@ -436,22 +436,4 @@ EGLNativeDisplayType QEglFSIntegration::nativeDisplay() const return qt_egl_device_integration()->platformDisplay(); } -EGLConfig QEglFSIntegration::chooseConfig(EGLDisplay display, const QSurfaceFormat &format) -{ - class Chooser : public QEglConfigChooser { - public: - Chooser(EGLDisplay display) - : QEglConfigChooser(display) { } - bool filterConfig(EGLConfig config) const Q_DECL_OVERRIDE { - return qt_egl_device_integration()->filterConfig(display(), config) - && QEglConfigChooser::filterConfig(config); - } - }; - - Chooser chooser(display); - chooser.setSurfaceType(qt_egl_device_integration()->surfaceType()); - chooser.setSurfaceFormat(format); - return chooser.chooseConfig(); -} - QT_END_NAMESPACE diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h index 678452a8db..9c5439a22f 100644 --- a/src/plugins/platforms/eglfs/qeglfsintegration.h +++ b/src/plugins/platforms/eglfs/qeglfsintegration.h @@ -92,8 +92,6 @@ public: void addScreen(QPlatformScreen *screen); void removeScreen(QPlatformScreen *screen); - static EGLConfig chooseConfig(EGLDisplay display, const QSurfaceFormat &format); - private: EGLNativeDisplayType nativeDisplay() const; void createInputHandlers(); diff --git a/src/plugins/platforms/eglfs/qeglfsoffscreenwindow.cpp b/src/plugins/platforms/eglfs/qeglfsoffscreenwindow.cpp index 11b101970b..0334ac9785 100644 --- a/src/plugins/platforms/eglfs/qeglfsoffscreenwindow.cpp +++ b/src/plugins/platforms/eglfs/qeglfsoffscreenwindow.cpp @@ -38,7 +38,7 @@ ****************************************************************************/ #include "qeglfsoffscreenwindow.h" -#include "qeglfshooks.h" +#include "qeglfshooks_p.h" #include <QtGui/QOffscreenSurface> #include <QtPlatformSupport/private/qeglconvenience_p.h> |