diff options
Diffstat (limited to 'src/plugins/platforms')
68 files changed, 2821 insertions, 106 deletions
diff --git a/src/plugins/platforms/.prev_CMakeLists.txt b/src/plugins/platforms/.prev_CMakeLists.txt new file mode 100644 index 0000000000..5797b07233 --- /dev/null +++ b/src/plugins/platforms/.prev_CMakeLists.txt @@ -0,0 +1,57 @@ +# Generated from platforms.pro. + +if(ANDROID AND NOT ANDROID_EMBEDDED) + add_subdirectory(android) +endif() +if(NOT ANDROID) + add_subdirectory(minimal) +endif() +if(QT_FEATURE_freetype AND NOT ANDROID) + add_subdirectory(offscreen) +endif() +if(QT_FEATURE_xcb) + add_subdirectory(xcb) +endif() +if(APPLE_UIKIT AND NOT APPLE_WATCHOS) + add_subdirectory(ios) +endif() +if(APPLE_OSX) + add_subdirectory(cocoa) +endif() +if(QT_FEATURE_direct3d9 AND WIN32 AND NOT WINRT) + add_subdirectory(windows) +endif() +if(QT_FEATURE_direct3d11 AND WINRT) + add_subdirectory(winrt) +endif() +if(QT_FEATURE_direct2d1_1 AND QT_FEATURE_direct3d11_1 AND QT_FEATURE_directwrite1) + add_subdirectory(direct2d) +endif() +if(QNX) + add_subdirectory(qnx) +endif() +if(QT_FEATURE_eglfs) + add_subdirectory(eglfs) + add_subdirectory(minimalegl) +endif() +if(QT_FEATURE_directfb) + add_subdirectory(directfb) +endif() +if(QT_FEATURE_linuxfb) + add_subdirectory(linuxfb) +endif() +if(QT_FEATURE_vnc AND TARGET Qt::Network) + add_subdirectory(vnc) +endif() +if(FREEBSD) + add_subdirectory(bsdfb) +endif() +if(HAIKU) + add_subdirectory(haiku) +endif() +if(WASM) + add_subdirectory(wasm) +endif() +if(QT_FEATURE_integrityfb) + add_subdirectory(integrity) +endif() diff --git a/src/plugins/platforms/CMakeLists.txt b/src/plugins/platforms/CMakeLists.txt new file mode 100644 index 0000000000..57c3952e4c --- /dev/null +++ b/src/plugins/platforms/CMakeLists.txt @@ -0,0 +1,57 @@ +# Generated from platforms.pro. + +if(ANDROID AND NOT ANDROID_EMBEDDED) + add_subdirectory(android) +endif() +if(NOT ANDROID) + add_subdirectory(minimal) +endif() +if(QT_FEATURE_freetype AND NOT ANDROID) + add_subdirectory(offscreen) +endif() +if(QT_FEATURE_xcb) + add_subdirectory(xcb) +endif() +if(APPLE_UIKIT AND NOT APPLE_WATCHOS) + add_subdirectory(ios) +endif() +if(APPLE_OSX) + add_subdirectory(cocoa) +endif() +if(WIN32 AND NOT WINRT) # special case TODO fix direct3d9 test + add_subdirectory(windows) +endif() +if(QT_FEATURE_direct3d11 AND WINRT) + # add_subdirectory(winrt) # special case TODO +endif() +if(QT_FEATURE_direct2d1_1 AND QT_FEATURE_direct3d11_1 AND QT_FEATURE_directwrite1) + # add_subdirectory(direct2d) # special case TODO +endif() +if(QNX) + # add_subdirectory(qnx) # special case TODO +endif() +if(QT_FEATURE_eglfs) + add_subdirectory(eglfs) + add_subdirectory(minimalegl) +endif() +if(QT_FEATURE_directfb) + add_subdirectory(directfb) +endif() +if(QT_FEATURE_linuxfb) + add_subdirectory(linuxfb) +endif() +if(QT_FEATURE_vnc AND TARGET Qt::Network) + add_subdirectory(vnc) +endif() +if(FREEBSD) + # add_subdirectory(bsdfb) # special case TODO +endif() +if(HAIKU) + # add_subdirectory(haiku) # special case TODO +endif() +if(WASM) + # add_subdirectory(wasm) # special case TODO +endif() +if(QT_FEATURE_integrityfb) + # add_subdirectory(integrity) # special case TODO +endif() diff --git a/src/plugins/platforms/android/.prev_CMakeLists.txt b/src/plugins/platforms/android/.prev_CMakeLists.txt new file mode 100644 index 0000000000..7b21613fb9 --- /dev/null +++ b/src/plugins/platforms/android/.prev_CMakeLists.txt @@ -0,0 +1,85 @@ +# Generated from android.pro. + +##################################################################### +## QAndroidIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QAndroidIntegrationPlugin + OUTPUT_NAME qtforandroid + TYPE platforms + SOURCES + androidcontentfileengine.cpp androidcontentfileengine.h + androiddeadlockprotector.cpp androiddeadlockprotector.h + androidjniaccessibility.cpp androidjniaccessibility.h + androidjniclipboard.cpp androidjniclipboard.h + androidjniinput.cpp androidjniinput.h + androidjnimain.cpp androidjnimain.h + androidjnimenu.cpp androidjnimenu.h + androidsurfaceclient.h + main.cpp + qandroidassetsfileenginehandler.cpp qandroidassetsfileenginehandler.h + qandroideventdispatcher.cpp qandroideventdispatcher.h + qandroidinputcontext.cpp qandroidinputcontext.h + qandroidplatformaccessibility.cpp qandroidplatformaccessibility.h + qandroidplatformbackingstore.cpp qandroidplatformbackingstore.h + qandroidplatformclipboard.cpp qandroidplatformclipboard.h + qandroidplatformdialoghelpers.cpp qandroidplatformdialoghelpers.h + qandroidplatformfiledialoghelper.cpp qandroidplatformfiledialoghelper.h + qandroidplatformfontdatabase.cpp qandroidplatformfontdatabase.h + qandroidplatformforeignwindow.cpp qandroidplatformforeignwindow.h + qandroidplatformintegration.cpp qandroidplatformintegration.h + qandroidplatformmenu.cpp qandroidplatformmenu.h + qandroidplatformmenubar.cpp qandroidplatformmenubar.h + qandroidplatformmenuitem.cpp qandroidplatformmenuitem.h + qandroidplatformoffscreensurface.cpp qandroidplatformoffscreensurface.h + qandroidplatformopenglcontext.cpp qandroidplatformopenglcontext.h + qandroidplatformopenglwindow.cpp qandroidplatformopenglwindow.h + qandroidplatformscreen.cpp qandroidplatformscreen.h + qandroidplatformservices.cpp qandroidplatformservices.h + qandroidplatformtheme.cpp qandroidplatformtheme.h + qandroidplatformwindow.cpp qandroidplatformwindow.h + qandroidsystemlocale.cpp qandroidsystemlocale.h + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + ${QT_SOURCE_TREE}/src/3rdparty/android + PUBLIC_LIBRARIES + Qt::AccessibilitySupportPrivate + Qt::Core + Qt::CorePrivate + Qt::EglSupportPrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + android + jnigraphics +) + +#### Keys ignored in scope 1:.:.:android.pro:<TRUE>: +# OTHER_FILES = "$$PWD/android.json" + +## Scopes: +##################################################################### + +qt_extend_target(QAndroidIntegrationPlugin CONDITION QT_FEATURE_vulkan + SOURCES + qandroidplatformvulkaninstance.cpp qandroidplatformvulkaninstance.h + qandroidplatformvulkanwindow.cpp qandroidplatformvulkanwindow.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +qt_extend_target(QAndroidIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(QAndroidIntegrationPlugin CONDITION QT_FEATURE_android_style_assets + SOURCES + extract.cpp +) + +qt_extend_target(QAndroidIntegrationPlugin CONDITION NOT QT_FEATURE_android_style_assets + SOURCES + extract-dummy.cpp +) diff --git a/src/plugins/platforms/android/CMakeLists.txt b/src/plugins/platforms/android/CMakeLists.txt new file mode 100644 index 0000000000..4d1f83053b --- /dev/null +++ b/src/plugins/platforms/android/CMakeLists.txt @@ -0,0 +1,94 @@ +# Generated from android.pro. + +##################################################################### +## QAndroidIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QAndroidIntegrationPlugin + OUTPUT_NAME qtforandroid + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES android # special case + SOURCES + androidcontentfileengine.cpp androidcontentfileengine.h + androiddeadlockprotector.cpp androiddeadlockprotector.h + androidjniaccessibility.cpp androidjniaccessibility.h + androidjniclipboard.cpp androidjniclipboard.h + androidjniinput.cpp androidjniinput.h + androidjnimain.cpp androidjnimain.h + androidjnimenu.cpp androidjnimenu.h + androidsurfaceclient.h + main.cpp + qandroidassetsfileenginehandler.cpp qandroidassetsfileenginehandler.h + qandroideventdispatcher.cpp qandroideventdispatcher.h + qandroidinputcontext.cpp qandroidinputcontext.h + qandroidplatformaccessibility.cpp qandroidplatformaccessibility.h + qandroidplatformbackingstore.cpp qandroidplatformbackingstore.h + qandroidplatformclipboard.cpp qandroidplatformclipboard.h + qandroidplatformdialoghelpers.cpp qandroidplatformdialoghelpers.h + qandroidplatformfiledialoghelper.cpp qandroidplatformfiledialoghelper.h + qandroidplatformfontdatabase.cpp qandroidplatformfontdatabase.h + qandroidplatformforeignwindow.cpp qandroidplatformforeignwindow.h + qandroidplatformintegration.cpp qandroidplatformintegration.h + qandroidplatformmenu.cpp qandroidplatformmenu.h + qandroidplatformmenubar.cpp qandroidplatformmenubar.h + qandroidplatformmenuitem.cpp qandroidplatformmenuitem.h + qandroidplatformoffscreensurface.cpp qandroidplatformoffscreensurface.h + qandroidplatformopenglcontext.cpp qandroidplatformopenglcontext.h + qandroidplatformopenglwindow.cpp qandroidplatformopenglwindow.h + qandroidplatformscreen.cpp qandroidplatformscreen.h + qandroidplatformservices.cpp qandroidplatformservices.h + qandroidplatformtheme.cpp qandroidplatformtheme.h + qandroidplatformwindow.cpp qandroidplatformwindow.h + qandroidsystemlocale.cpp qandroidsystemlocale.h + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + ${QT_SOURCE_TREE}/src/3rdparty/android + PUBLIC_LIBRARIES + Qt::AccessibilitySupportPrivate + Qt::Core + Qt::CorePrivate + Qt::EglSupportPrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + android + jnigraphics +# special case begin + INSTALL_DIRECTORY + plugins/platforms + OUTPUT_DIRECTORY + plugins/platforms + ARCHIVE_INSTALL_DIRECTORY + plugins/platforms +# special case end +) + +#### Keys ignored in scope 1:.:.:android.pro:<TRUE>: +# OTHER_FILES = "$$PWD/android.json" + +## Scopes: +##################################################################### + +qt_extend_target(QAndroidIntegrationPlugin CONDITION QT_FEATURE_vulkan + SOURCES + qandroidplatformvulkaninstance.cpp qandroidplatformvulkaninstance.h + qandroidplatformvulkanwindow.cpp qandroidplatformvulkanwindow.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +qt_extend_target(QAndroidIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(QAndroidIntegrationPlugin CONDITION QT_FEATURE_android_style_assets + SOURCES + extract.cpp +) + +qt_extend_target(QAndroidIntegrationPlugin CONDITION NOT QT_FEATURE_android_style_assets + SOURCES + extract-dummy.cpp +) diff --git a/src/plugins/platforms/android/android.pro b/src/plugins/platforms/android/android.pro index 730247cd7f..8ea78f7cba 100644 --- a/src/plugins/platforms/android/android.pro +++ b/src/plugins/platforms/android/android.pro @@ -9,6 +9,8 @@ QT += \ qtConfig(vulkan): QT += vulkan_support-private +qtHaveModule(platformcompositor_support-private): QT += platformcompositor_support-private + OTHER_FILES += $$PWD/android.json INCLUDEPATH += \ @@ -16,7 +18,6 @@ INCLUDEPATH += \ $$QT_SOURCE_TREE/src/3rdparty/android SOURCES += $$PWD/main.cpp \ - $$PWD/androidplatformplugin.cpp \ $$PWD/androidcontentfileengine.cpp \ $$PWD/androiddeadlockprotector.cpp \ $$PWD/androidjnimain.cpp \ diff --git a/src/plugins/platforms/android/androidplatformplugin.cpp b/src/plugins/platforms/android/androidplatformplugin.cpp deleted file mode 100644 index 297e167f47..0000000000 --- a/src/plugins/platforms/android/androidplatformplugin.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org> -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <qpa/qplatformintegrationplugin.h> -#include "qandroidplatformintegration.h" - -QT_BEGIN_NAMESPACE - -class QAndroidPlatformIntegrationPlugin: public QPlatformIntegrationPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QPlatformIntegrationFactoryInterface_iid FILE "android.json") -public: - QPlatformIntegration *create(const QString &key, const QStringList ¶mList) override; -}; - - -QPlatformIntegration *QAndroidPlatformIntegrationPlugin::create(const QString &key, const QStringList ¶mList) -{ - Q_UNUSED(paramList); - if (!key.compare(QLatin1String("android"), Qt::CaseInsensitive)) - return new QAndroidPlatformIntegration(paramList); - return 0; -} - -QT_END_NAMESPACE -#include "androidplatformplugin.moc" - diff --git a/src/plugins/platforms/android/main.cpp b/src/plugins/platforms/android/main.cpp index c304fc8d69..4841d0425c 100644 --- a/src/plugins/platforms/android/main.cpp +++ b/src/plugins/platforms/android/main.cpp @@ -61,3 +61,4 @@ QPlatformIntegration *QAndroidIntegrationPlugin::create(const QString& system, c } QT_END_NAMESPACE +#include "main.moc" diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp index c81cc66166..592b78d936 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp @@ -43,6 +43,9 @@ #include <QtGui/private/qguiapplication_p.h> #include <QGuiApplication> #include <QOpenGLContext> +#if QT_CONFIG(opengl) +#include <QtPlatformCompositorSupport/qpa/qplatformbackingstoreopenglsupport.h> +#endif #include <QThread> #include <QOffscreenSurface> @@ -286,7 +289,12 @@ QPlatformBackingStore *QAndroidPlatformIntegration::createPlatformBackingStore(Q { if (!QtAndroid::activity()) return nullptr; - return new QAndroidPlatformBackingStore(window); + + auto *backingStore = new QAndroidPlatformBackingStore(window); +#if QT_CONFIG(opengl) + backingStore->setOpenGLSupport(new QPlatformBackingStoreOpenGLSupport(backingStore)); +#endif // QT_CONFIG(opengl) + return backingStore; } QPlatformOpenGLContext *QAndroidPlatformIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const diff --git a/src/plugins/platforms/cocoa/.prev_CMakeLists.txt b/src/plugins/platforms/cocoa/.prev_CMakeLists.txt new file mode 100644 index 0000000000..1491340b65 --- /dev/null +++ b/src/plugins/platforms/cocoa/.prev_CMakeLists.txt @@ -0,0 +1,150 @@ +# Generated from cocoa.pro. + +##################################################################### +## QCocoaIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QCocoaIntegrationPlugin + OUTPUT_NAME qcocoa + TYPE platforms + SOURCES + main.mm + messages.cpp messages.h + qcocoaapplication.h qcocoaapplication.mm + qcocoaapplicationdelegate.h qcocoaapplicationdelegate.mm + qcocoabackingstore.h qcocoabackingstore.mm + qcocoaclipboard.h qcocoaclipboard.mm + qcocoacursor.h qcocoacursor.mm + qcocoadrag.h qcocoadrag.mm + qcocoaeventdispatcher.h qcocoaeventdispatcher.mm + qcocoahelpers.h qcocoahelpers.mm + qcocoainputcontext.h qcocoainputcontext.mm + qcocoaintegration.h qcocoaintegration.mm + qcocoaintrospection.h qcocoaintrospection.mm + qcocoakeymapper.h qcocoakeymapper.mm + qcocoamenu.h qcocoamenu.mm + qcocoamenubar.h qcocoamenubar.mm + qcocoamenuitem.h qcocoamenuitem.mm + qcocoamenuloader.h qcocoamenuloader.mm + qcocoamimetypes.h qcocoamimetypes.mm + qcocoanativeinterface.h qcocoanativeinterface.mm + qcocoansmenu.h qcocoansmenu.mm + qcocoascreen.h qcocoascreen.mm + qcocoaservices.h qcocoaservices.mm + qcocoasystemtrayicon.h qcocoasystemtrayicon.mm + qcocoatheme.h qcocoatheme.mm + qcocoawindow.h qcocoawindow.mm + qcocoawindowmanager.h qcocoawindowmanager.mm + qiosurfacegraphicsbuffer.h qiosurfacegraphicsbuffer.mm + qmacclipboard.h qmacclipboard.mm + qmultitouch_mac.mm qmultitouch_mac_p.h + qnsview.h qnsview.mm + qnswindow.h qnswindow.mm + qnswindowdelegate.h qnswindowdelegate.mm + PUBLIC_LIBRARIES + ${FWAppKit} + ${FWCarbon} + ${FWCoreServices} + ${FWCoreVideo} + ${FWIOKit} + ${FWIOSurface} + ${FWMetal} + ${FWQuartzCore} + Cups::Cups + Qt::ClipboardSupportPrivate + Qt::Core + Qt::CorePrivate + Qt::FontDatabaseSupportPrivate + Qt::GraphicsSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ThemeSupportPrivate +) + +# Resources: +set(qcocoaresources_resource_files + "images/sizeallcursor.png" + "images/spincursor.png" + "images/waitcursor.png" +) + +qt_add_resource(QCocoaIntegrationPlugin "qcocoaresources" + PREFIX + "/qt-project.org/mac/cursors" + FILES + ${qcocoaresources_resource_files} +) + + +#### Keys ignored in scope 1:.:.:cocoa.pro:<TRUE>: +# OTHER_FILES = "cocoa.json" + +## Scopes: +##################################################################### + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_opengl + SOURCES + qcocoaglcontext.h qcocoaglcontext.mm +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_vulkan + SOURCES + qcocoavulkaninstance.h qcocoavulkaninstance.mm + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_accessibility + SOURCES + qcocoaaccessibility.h qcocoaaccessibility.mm + qcocoaaccessibilityelement.h qcocoaaccessibilityelement.mm + PUBLIC_LIBRARIES + Qt::AccessibilitySupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_sessionmanager + SOURCES + qcocoasessionmanager.cpp qcocoasessionmanager.h +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION TARGET Qt::Widgets + SOURCES + qpaintengine_mac.mm qpaintengine_mac_p.h + PUBLIC_LIBRARIES + Qt::WidgetsPrivate +) + +#### Keys ignored in scope 8:.:.:cocoa.pro:TARGET Qt::Widgets: +# QT_FOR_CONFIG = "widgets" + +qt_extend_target(QCocoaIntegrationPlugin CONDITION TARGET Qt::PrintSupport AND TARGET Qt::Widgets + SOURCES + qcocoaprintdevice.h qcocoaprintdevice.mm + qcocoaprintersupport.h qcocoaprintersupport.mm + qprintengine_mac.mm qprintengine_mac_p.h + PUBLIC_LIBRARIES + Qt::PrintSupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_colordialog AND TARGET Qt::Widgets + SOURCES + qcocoacolordialoghelper.h qcocoacolordialoghelper.mm +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_filedialog AND TARGET Qt::Widgets + SOURCES + qcocoafiledialoghelper.h qcocoafiledialoghelper.mm +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_fontdialog AND TARGET Qt::Widgets + SOURCES + qcocoafontdialoghelper.h qcocoafontdialoghelper.mm +) + +#### Keys ignored in scope 13:.:.:cocoa.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/cocoa/CMakeLists.txt b/src/plugins/platforms/cocoa/CMakeLists.txt new file mode 100644 index 0000000000..9e8b162aec --- /dev/null +++ b/src/plugins/platforms/cocoa/CMakeLists.txt @@ -0,0 +1,154 @@ +# Generated from cocoa.pro. + +# special case: +qt_find_package(Cups PROVIDED_TARGETS Cups::Cups) + +##################################################################### +## QCocoaIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QCocoaIntegrationPlugin + OUTPUT_NAME qcocoa + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES cocoa # special case + TYPE platforms + SOURCES + main.mm + messages.cpp messages.h + qcocoaapplication.h qcocoaapplication.mm + qcocoaapplicationdelegate.h qcocoaapplicationdelegate.mm + qcocoabackingstore.h qcocoabackingstore.mm + qcocoaclipboard.h qcocoaclipboard.mm + qcocoacursor.h qcocoacursor.mm + qcocoadrag.h qcocoadrag.mm + qcocoaeventdispatcher.h qcocoaeventdispatcher.mm + qcocoahelpers.h qcocoahelpers.mm + qcocoainputcontext.h qcocoainputcontext.mm + qcocoaintegration.h qcocoaintegration.mm + qcocoaintrospection.h qcocoaintrospection.mm + qcocoakeymapper.h qcocoakeymapper.mm + qcocoamenu.h qcocoamenu.mm + qcocoamenubar.h qcocoamenubar.mm + qcocoamenuitem.h qcocoamenuitem.mm + qcocoamenuloader.h qcocoamenuloader.mm + qcocoamimetypes.h qcocoamimetypes.mm + qcocoanativeinterface.h qcocoanativeinterface.mm + qcocoansmenu.h qcocoansmenu.mm + qcocoascreen.h qcocoascreen.mm + qcocoaservices.h qcocoaservices.mm + qcocoasystemtrayicon.h qcocoasystemtrayicon.mm + qcocoatheme.h qcocoatheme.mm + qcocoawindow.h qcocoawindow.mm + qcocoawindowmanager.h qcocoawindowmanager.mm + qiosurfacegraphicsbuffer.h qiosurfacegraphicsbuffer.mm + qmacclipboard.h qmacclipboard.mm + qmultitouch_mac.mm qmultitouch_mac_p.h + qnsview.h qnsview.mm + qnswindow.h qnswindow.mm + qnswindowdelegate.h qnswindowdelegate.mm + PUBLIC_LIBRARIES + ${FWAppKit} + ${FWCarbon} + ${FWCoreServices} + ${FWCoreVideo} + ${FWIOKit} + ${FWIOSurface} + ${FWMetal} + ${FWQuartzCore} + Cups::Cups + Qt::ClipboardSupportPrivate + Qt::Core + Qt::CorePrivate + Qt::FontDatabaseSupportPrivate + Qt::GraphicsSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ThemeSupportPrivate +) + +# Resources: +set(qcocoaresources_resource_files + "images/sizeallcursor.png" + "images/spincursor.png" + "images/waitcursor.png" +) + +qt_add_resource(QCocoaIntegrationPlugin "qcocoaresources" + PREFIX + "/qt-project.org/mac/cursors" + FILES + ${qcocoaresources_resource_files} +) + + +#### Keys ignored in scope 1:.:.:cocoa.pro:<TRUE>: +# OTHER_FILES = "cocoa.json" + +## Scopes: +##################################################################### + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_opengl + SOURCES + qcocoaglcontext.h qcocoaglcontext.mm +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_vulkan + SOURCES + qcocoavulkaninstance.h qcocoavulkaninstance.mm + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_accessibility + SOURCES + qcocoaaccessibility.h qcocoaaccessibility.mm + qcocoaaccessibilityelement.h qcocoaaccessibilityelement.mm + PUBLIC_LIBRARIES + Qt::AccessibilitySupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_sessionmanager + SOURCES + qcocoasessionmanager.cpp qcocoasessionmanager.h +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION TARGET Qt::Widgets + SOURCES + qpaintengine_mac.mm qpaintengine_mac_p.h + PUBLIC_LIBRARIES + Qt::WidgetsPrivate +) + +#### Keys ignored in scope 8:.:.:cocoa.pro:TARGET Qt::Widgets: +# QT_FOR_CONFIG = "widgets" + +qt_extend_target(QCocoaIntegrationPlugin CONDITION TARGET Qt::PrintSupport AND TARGET Qt::Widgets + SOURCES + qcocoaprintdevice.h qcocoaprintdevice.mm + qcocoaprintersupport.h qcocoaprintersupport.mm + qprintengine_mac.mm qprintengine_mac_p.h + PUBLIC_LIBRARIES + Qt::PrintSupportPrivate +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_colordialog AND TARGET Qt::Widgets + SOURCES + qcocoacolordialoghelper.h qcocoacolordialoghelper.mm +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_filedialog AND TARGET Qt::Widgets + SOURCES + qcocoafiledialoghelper.h qcocoafiledialoghelper.mm +) + +qt_extend_target(QCocoaIntegrationPlugin CONDITION QT_FEATURE_fontdialog AND TARGET Qt::Widgets + SOURCES + qcocoafontdialoghelper.h qcocoafontdialoghelper.mm +) + +#### Keys ignored in scope 13:.:.:cocoa.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/cocoa/cocoa.pro b/src/plugins/platforms/cocoa/cocoa.pro index a919963cf4..953346c56e 100644 --- a/src/plugins/platforms/cocoa/cocoa.pro +++ b/src/plugins/platforms/cocoa/cocoa.pro @@ -101,6 +101,8 @@ QT += \ qtConfig(vulkan): QT += vulkan_support-private +qtHaveModule(platformcompositor_support-private): QT += platformcompositor_support-private + CONFIG += no_app_extension_api_only qtHaveModule(widgets) { diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.h b/src/plugins/platforms/cocoa/qcocoaintegration.h index 0c14e07551..30838ba254 100644 --- a/src/plugins/platforms/cocoa/qcocoaintegration.h +++ b/src/plugins/platforms/cocoa/qcocoaintegration.h @@ -128,6 +128,8 @@ public: void beep() const override; + void closePopups(QWindow *forWindow = nullptr); + private Q_SLOTS: void focusWindowChanged(QWindow *); diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm index 61308d6bf9..b2698b05fe 100644 --- a/src/plugins/platforms/cocoa/qcocoaintegration.mm +++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm @@ -68,6 +68,10 @@ #include <QtFontDatabaseSupport/private/qfontengine_coretext_p.h> +#if QT_CONFIG(opengl) +#include <QtPlatformCompositorSupport/qpa/qplatformbackingstoreopenglsupport.h> +#endif + #ifdef QT_WIDGETS_LIB #include <QtWidgets/qtwidgetsglobal.h> #if QT_CONFIG(filedialog) @@ -324,10 +328,16 @@ QPlatformBackingStore *QCocoaIntegration::createPlatformBackingStore(QWindow *wi return nullptr; } + QPlatformBackingStore *backingStore = nullptr; if (platformWindow->view().layer) - return new QCALayerBackingStore(window); + backingStore = new QCALayerBackingStore(window); else - return new QNSWindowBackingStore(window); + backingStore = new QNSWindowBackingStore(window); + +#if QT_CONFIG(opengl) + backingStore->setOpenGLSupport(new QPlatformBackingStoreOpenGLSupport(backingStore)); +#endif + return backingStore; } QAbstractEventDispatcher *QCocoaIntegration::createEventDispatcher() const @@ -487,6 +497,19 @@ void QCocoaIntegration::beep() const NSBeep(); } +void QCocoaIntegration::closePopups(QWindow *forWindow) +{ + for (auto it = m_popupWindowStack.begin(); it != m_popupWindowStack.end();) { + auto *popup = *it; + if (!forWindow || popup->window()->transientParent() == forWindow) { + it = m_popupWindowStack.erase(it); + QWindowSystemInterface::handleCloseEvent<QWindowSystemInterface::SynchronousDelivery>(popup->window()); + } else { + ++it; + } + } +} + void QCocoaIntegration::focusWindowChanged(QWindow *focusWindow) { // Don't revert icon just because we lost focus diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index b15c0ac31c..4bff1de515 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -151,6 +151,7 @@ public: Q_NOTIFICATION_HANDLER(NSWindowDidEndLiveResizeNotification) void windowDidEndLiveResize(); Q_NOTIFICATION_HANDLER(NSWindowDidBecomeKeyNotification) void windowDidBecomeKey(); Q_NOTIFICATION_HANDLER(NSWindowDidResignKeyNotification) void windowDidResignKey(); + Q_NOTIFICATION_HANDLER(NSWindowWillMiniaturizeNotification) void windowWillMiniaturize(); Q_NOTIFICATION_HANDLER(NSWindowDidMiniaturizeNotification) void windowDidMiniaturize(); Q_NOTIFICATION_HANDLER(NSWindowDidDeminiaturizeNotification) void windowDidDeminiaturize(); Q_NOTIFICATION_HANDLER(NSWindowWillEnterFullScreenNotification) void windowWillEnterFullScreen(); diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 9cb4470e02..28da4fcf5d 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -71,14 +71,6 @@ enum { defaultWindowHeight = 160 }; -static void qt_closePopups() -{ - while (QCocoaWindow *popup = QCocoaIntegration::instance()->popPopupWindow()) { - QWindowSystemInterface::handleCloseEvent(popup->window()); - QWindowSystemInterface::flushWindowSystemEvents(); - } -} - Q_LOGGING_CATEGORY(lcCocoaNotifications, "qt.qpa.cocoa.notifications"); static void qRegisterNotificationCallbacks() @@ -819,6 +811,11 @@ void QCocoaWindow::windowDidExitFullScreen() } } +void QCocoaWindow::windowWillMiniaturize() +{ + QCocoaIntegration::instance()->closePopups(window()); +} + void QCocoaWindow::windowDidMiniaturize() { if (!isContentView()) @@ -1157,7 +1154,7 @@ void QCocoaWindow::viewDidChangeGlobalFrame() void QCocoaWindow::windowWillMove() { // Close any open popups on window move - qt_closePopups(); + QCocoaIntegration::instance()->closePopups(); } void QCocoaWindow::windowDidMove() @@ -1286,7 +1283,7 @@ void QCocoaWindow::windowWillClose() { // Close any open popups on window closing. if (window() && !windowIsPopupType(window()->type())) - qt_closePopups(); + QCocoaIntegration::instance()->closePopups(); } // ----------------------- NSWindowDelegate callbacks ----------------------- diff --git a/src/plugins/platforms/directfb/.prev_CMakeLists.txt b/src/plugins/platforms/directfb/.prev_CMakeLists.txt new file mode 100644 index 0000000000..33beaa3da4 --- /dev/null +++ b/src/plugins/platforms/directfb/.prev_CMakeLists.txt @@ -0,0 +1,61 @@ +# Generated from directfb.pro. + +##################################################################### +## QDirectFbIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QDirectFbIntegrationPlugin + OUTPUT_NAME qdirectfb + TYPE platforms + SOURCES + main.cpp + qdirectfbbackingstore.cpp qdirectfbbackingstore.h + qdirectfbblitter.cpp qdirectfbblitter.h + qdirectfbconvenience.cpp qdirectfbconvenience.h + qdirectfbcursor.cpp qdirectfbcursor.h + qdirectfbeglhooks.h + qdirectfbinput.cpp qdirectfbinput.h + qdirectfbintegration.cpp qdirectfbintegration.h + qdirectfbscreen.cpp qdirectfbscreen.h + qdirectfbwindow.cpp qdirectfbwindow.h + PUBLIC_LIBRARIES + PkgConfig::DirectFB + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ServiceSupportPrivate +) + +#### Keys ignored in scope 1:.:.:directfb.pro:<TRUE>: +# OTHER_FILES = "directfb.json" + +## Scopes: +##################################################################### + +qt_extend_target(QDirectFbIntegrationPlugin CONDITION QT_CONFIG___contains___directfb_egl + SOURCES + qdirectfb_egl.cpp qdirectfb_egl.h + DEFINES + DIRECTFB_GL_EGL + PUBLIC_LIBRARIES + Qt::EglSupportPrivate +) + +qt_extend_target(QDirectFbIntegrationPlugin CONDITION NOT DIRECTFB_PLATFORM_HOOKS_SOURCES_ISEMPTY + DEFINES + DIRECTFB_PLATFORM_HOOKS +) + +#### Keys ignored in scope 3:.:.:directfb.pro:NOT DIRECTFB_PLATFORM_HOOKS_SOURCES_ISEMPTY: +# QMAKE_LIBDIR = "$$DIRECTFB_PLATFORM_HOOKS_LIBDIR" + +qt_extend_target(QDirectFbIntegrationPlugin CONDITION DIRECTFB_PLATFORM_HOOKS_SOURCES_ISEMPTY + SOURCES + qdirectfbeglhooks_stub.cpp +) + +#### Keys ignored in scope 5:.:.:directfb.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/directfb/CMakeLists.txt b/src/plugins/platforms/directfb/CMakeLists.txt new file mode 100644 index 0000000000..c723ca75f4 --- /dev/null +++ b/src/plugins/platforms/directfb/CMakeLists.txt @@ -0,0 +1,65 @@ +# Generated from directfb.pro. + +# begin special case: +qt_find_package(DirectFB) +# end special case: + +##################################################################### +## QDirectFbIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QDirectFbIntegrationPlugin + OUTPUT_NAME qdirectfb + TYPE platforms + SOURCES + main.cpp + qdirectfbbackingstore.cpp qdirectfbbackingstore.h + qdirectfbblitter.cpp qdirectfbblitter.h + qdirectfbconvenience.cpp qdirectfbconvenience.h + qdirectfbcursor.cpp qdirectfbcursor.h + qdirectfbeglhooks.h + qdirectfbinput.cpp qdirectfbinput.h + qdirectfbintegration.cpp qdirectfbintegration.h + qdirectfbscreen.cpp qdirectfbscreen.h + qdirectfbwindow.cpp qdirectfbwindow.h + PUBLIC_LIBRARIES + PkgConfig::DirectFB + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ServiceSupportPrivate +) + +#### Keys ignored in scope 1:.:.:directfb.pro:<TRUE>: +# OTHER_FILES = "directfb.json" + +## Scopes: +##################################################################### + +qt_extend_target(QDirectFbIntegrationPlugin CONDITION QT_CONFIG___contains___directfb_egl + SOURCES + qdirectfb_egl.cpp qdirectfb_egl.h + DEFINES + DIRECTFB_GL_EGL + PUBLIC_LIBRARIES + Qt::EglSupportPrivate +) + +qt_extend_target(QDirectFbIntegrationPlugin CONDITION NOT DIRECTFB_PLATFORM_HOOKS_SOURCES_ISEMPTY + DEFINES + DIRECTFB_PLATFORM_HOOKS +) + +#### Keys ignored in scope 3:.:.:directfb.pro:NOT DIRECTFB_PLATFORM_HOOKS_SOURCES_ISEMPTY: +# QMAKE_LIBDIR = "$$DIRECTFB_PLATFORM_HOOKS_LIBDIR" + +qt_extend_target(QDirectFbIntegrationPlugin CONDITION DIRECTFB_PLATFORM_HOOKS_SOURCES_ISEMPTY + SOURCES + qdirectfbeglhooks_stub.cpp +) + +#### Keys ignored in scope 5:.:.:directfb.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/eglfs/.prev_CMakeLists.txt b/src/plugins/platforms/eglfs/.prev_CMakeLists.txt new file mode 100644 index 0000000000..4fed525392 --- /dev/null +++ b/src/plugins/platforms/eglfs/.prev_CMakeLists.txt @@ -0,0 +1,113 @@ +# Generated from eglfs.pro. + +##################################################################### +## EglFSDeviceIntegration Module: +##################################################################### + +qt_add_module(EglFSDeviceIntegration + INTERNAL_MODULE + SOURCES + api/qeglfsdeviceintegration.cpp api/qeglfsdeviceintegration_p.h + api/qeglfsglobal_p.h + api/qeglfshooks.cpp api/qeglfshooks_p.h + api/qeglfsintegration.cpp api/qeglfsintegration_p.h + api/qeglfsoffscreenwindow.cpp api/qeglfsoffscreenwindow_p.h + api/qeglfsscreen.cpp api/qeglfsscreen_p.h + api/qeglfswindow.cpp api/qeglfswindow_p.h + DEFINES + QT_BUILD_EGL_DEVICE_LIB + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + api + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::DeviceDiscoverySupportPrivate + Qt::EglSupportPrivate + Qt::EventDispatcherSupportPrivate + Qt::FbSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::GuiPrivate + Qt::ServiceSupportPrivate + Qt::ThemeSupportPrivate +) + +#### Keys ignored in scope 2:.:.:eglfsdeviceintegration.pro:<TRUE>: +# MODULE = "eglfsdeviceintegration" + +## Scopes: +##################################################################### + +qt_extend_target(EglFSDeviceIntegration CONDITION TARGET Qt::InputSupportPrivate + PUBLIC_LIBRARIES + Qt::InputSupportPrivate +) + +qt_extend_target(EglFSDeviceIntegration CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(EglFSDeviceIntegration CONDITION QT_FEATURE_vulkan + SOURCES + api/vulkan/qeglfsvulkaninstance.cpp api/vulkan/qeglfsvulkaninstance_p.h + api/vulkan/qeglfsvulkanwindow.cpp api/vulkan/qeglfsvulkanwindow_p.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +qt_extend_target(EglFSDeviceIntegration CONDITION NOT EGLFS_PLATFORM_HOOKS_SOURCES_ISEMPTY + DEFINES + EGLFS_PLATFORM_HOOKS +) + +qt_extend_target(EglFSDeviceIntegration CONDITION NOT EGLFS_DEVICE_INTEGRATION_ISEMPTY + DEFINES + EGLFS_PREFERRED_PLUGIN= +) + +if(QT_FEATURE_cursor) + # Resources: + set(cursor_resource_files + "cursor-atlas.png" + "cursor.json" + ) + + qt_add_resource(EglFSDeviceIntegration "cursor" + PREFIX + "/" + FILES + ${cursor_resource_files} + ) +endif() + +qt_extend_target(EglFSDeviceIntegration CONDITION QT_FEATURE_opengl + SOURCES + api/qeglfscontext.cpp api/qeglfscontext_p.h + api/qeglfscursor.cpp api/qeglfscursor_p.h +) +##################################################################### +## QEglFSIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QEglFSIntegrationPlugin + OUTPUT_NAME qeglfs + TYPE platforms + SOURCES + qeglfsmain.cpp + DEFINES + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + api + PUBLIC_LIBRARIES + Qt::EglFSDeviceIntegrationPrivate +) + +#### Keys ignored in scope 13:.:.:eglfs-plugin.pro:<TRUE>: +# OTHER_FILES = "$$PWD/eglfs.json" + +## Scopes: +##################################################################### + +#### Keys ignored in scope 14:.:.:eglfs-plugin.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(deviceintegration) diff --git a/src/plugins/platforms/eglfs/CMakeLists.txt b/src/plugins/platforms/eglfs/CMakeLists.txt new file mode 100644 index 0000000000..03de79d6f0 --- /dev/null +++ b/src/plugins/platforms/eglfs/CMakeLists.txt @@ -0,0 +1,112 @@ +# Generated from eglfs.pro. +qt_find_package(EGL) # special case + +##################################################################### +## EglFSDeviceIntegration Module: +##################################################################### + +qt_add_module(EglFSDeviceIntegration + INTERNAL_MODULE + SOURCES + api/qeglfsdeviceintegration.cpp api/qeglfsdeviceintegration_p.h + api/qeglfsglobal_p.h + api/qeglfshooks.cpp api/qeglfshooks_p.h + api/qeglfsintegration.cpp api/qeglfsintegration_p.h + api/qeglfsoffscreenwindow.cpp api/qeglfsoffscreenwindow_p.h + api/qeglfsscreen.cpp api/qeglfsscreen_p.h + api/qeglfswindow.cpp api/qeglfswindow_p.h + DEFINES + QT_BUILD_EGL_DEVICE_LIB + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + api + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::DeviceDiscoverySupportPrivate + Qt::EglSupportPrivate + Qt::EventDispatcherSupportPrivate + Qt::FbSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::GuiPrivate + Qt::ServiceSupportPrivate + Qt::ThemeSupportPrivate + EGL::EGL # special case +) + +#### Keys ignored in scope 2:.:.:eglfsdeviceintegration.pro:<TRUE>: +# MODULE = "eglfsdeviceintegration" + +## Scopes: +##################################################################### + +qt_extend_target(EglFSDeviceIntegration CONDITION TARGET Qt::InputSupportPrivate + PUBLIC_LIBRARIES + Qt::InputSupportPrivate +) + +qt_extend_target(EglFSDeviceIntegration CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(EglFSDeviceIntegration CONDITION QT_FEATURE_vulkan + SOURCES + api/vulkan/qeglfsvulkaninstance.cpp api/vulkan/qeglfsvulkaninstance_p.h + api/vulkan/qeglfsvulkanwindow.cpp api/vulkan/qeglfsvulkanwindow_p.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +# special case: +# extend_target(EglFSDeviceIntegration CONDITION NOT EGLFS_PLATFORM_HOOKS_SOURCES_ISEMPTY ... +# extend_target(EglFSDeviceIntegration CONDITION NOT EGLFS_DEVICE_INTEGRATION_ISEMPTY ... + +if(QT_FEATURE_cursor) # special case + # Resources: + set(cursor_resource_files + "cursor-atlas.png" + "cursor.json" + ) + + qt_add_resource(EglFSDeviceIntegration "cursor" + PREFIX + "/" + FILES + ${cursor_resource_files} + ) +endif() + +qt_extend_target(EglFSDeviceIntegration CONDITION QT_FEATURE_opengl + SOURCES + api/qeglfscontext.cpp api/qeglfscontext_p.h + api/qeglfscursor.cpp api/qeglfscursor_p.h +) +##################################################################### +## QEglFSIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QEglFSIntegrationPlugin + OUTPUT_NAME qeglfs + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES eglfs # special case + SOURCES + qeglfsmain.cpp + DEFINES + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + api + PUBLIC_LIBRARIES + Qt::CorePrivate # special case + Qt::EglFSDeviceIntegrationPrivate + EGL::EGL # special case +) + +#### Keys ignored in scope 13:.:.:eglfs-plugin.pro:<TRUE>: +# OTHER_FILES = "$$PWD/eglfs.json" + +## Scopes: +##################################################################### + +#### Keys ignored in scope 14:.:.:eglfs-plugin.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(deviceintegration) diff --git a/src/plugins/platforms/eglfs/deviceintegration/.prev_CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/.prev_CMakeLists.txt new file mode 100644 index 0000000000..d08bf6bc20 --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/.prev_CMakeLists.txt @@ -0,0 +1,38 @@ +# Generated from deviceintegration.pro. + +if(QT_FEATURE_eglfs_x11) + add_subdirectory(eglfs_x11) +endif() +if(QT_FEATURE_eglfs_egldevice OR QT_FEATURE_eglfs_gbm) + add_subdirectory(eglfs_kms_support) +endif() +if(QT_FEATURE_eglfs_gbm) + add_subdirectory(eglfs_kms) +endif() +if(QT_FEATURE_eglfs_egldevice) + add_subdirectory(eglfs_kms_egldevice) +endif() +if(QT_FEATURE_eglfs_vsp2) + add_subdirectory(eglfs_kms_vsp2) +endif() +if(QT_FEATURE_eglfs_brcm) + add_subdirectory(eglfs_brcm) +endif() +if(QT_FEATURE_eglfs_mali) + add_subdirectory(eglfs_mali) +endif() +if(QT_FEATURE_eglfs_viv) + add_subdirectory(eglfs_viv) +endif() +if(QT_FEATURE_eglfs_rcar) + add_subdirectory(eglfs_rcar) +endif() +if(QT_FEATURE_eglfs_viv_wl) + add_subdirectory(eglfs_viv_wl) +endif() +if(QT_FEATURE_eglfs_openwfd) + add_subdirectory(eglfs_openwfd) +endif() +if(QT_FEATURE_opengl) + add_subdirectory(eglfs_emu) +endif() diff --git a/src/plugins/platforms/eglfs/deviceintegration/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/CMakeLists.txt new file mode 100644 index 0000000000..7ddcb8993f --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/CMakeLists.txt @@ -0,0 +1,38 @@ +# Generated from deviceintegration.pro. + +if(QT_FEATURE_eglfs_x11) + add_subdirectory(eglfs_x11) +endif() +if(QT_FEATURE_eglfs_egldevice OR QT_FEATURE_eglfs_gbm) + add_subdirectory(eglfs_kms_support) +endif() +if(QT_FEATURE_eglfs_gbm) + add_subdirectory(eglfs_kms) +endif() +if(QT_FEATURE_eglfs_egldevice) + add_subdirectory(eglfs_kms_egldevice) +endif() +if(QT_FEATURE_eglfs_vsp2) + # add_subdirectory(eglfs_kms_vsp2) # special case TODO +endif() +if(QT_FEATURE_eglfs_brcm) + # add_subdirectory(eglfs_brcm) # special case TODO +endif() +if(QT_FEATURE_eglfs_mali) + # add_subdirectory(eglfs_mali) # special case TODO +endif() +if(QT_FEATURE_eglfs_viv) + # add_subdirectory(eglfs_viv) # special case TODO +endif() +if(QT_FEATURE_eglfs_rcar) + # add_subdirectory(eglfs_rcar) # special case TODO +endif() +if(QT_FEATURE_eglfs_viv_wl) + # add_subdirectory(eglfs_viv_wl) # special case TODO +endif() +if(QT_FEATURE_eglfs_openwfd) + # add_subdirectory(eglfs_openwfd) # special case TODO +endif() +if(QT_FEATURE_opengl) + add_subdirectory(eglfs_emu) +endif() diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt new file mode 100644 index 0000000000..a62b8bbb2b --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt @@ -0,0 +1,28 @@ +# Generated from eglfs_emu.pro. + +##################################################################### +## QEglFSEmulatorIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QEglFSEmulatorIntegrationPlugin + OUTPUT_NAME qeglfs-emu-integration + TYPE egldeviceintegrations + SOURCES + qeglfsemulatorintegration.cpp qeglfsemulatorintegration.h + qeglfsemulatorscreen.cpp qeglfsemulatorscreen.h + qeglfsemumain.cpp + DEFINES + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + ../../api + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EglFSDeviceIntegrationPrivate + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:eglfs_emu.pro:<TRUE>: +# DISTFILES = "eglfs_emu.json" +# OTHER_FILES = "$$PWD/eglfs_emu.json" diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt new file mode 100644 index 0000000000..55a1d71c07 --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt @@ -0,0 +1,36 @@ +# Generated from eglfs_kms.pro. + +##################################################################### +## QEglFSKmsGbmIntegrationPlugin Plugin: +##################################################################### + +qt_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::EdidSupportPrivate + Qt::EglFSDeviceIntegrationPrivate + Qt::EglFsKmsSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::KmsSupportPrivate + gbm::gbm +) + +#### Keys ignored in scope 1:.:.:eglfs_kms.pro:<TRUE>: +# OTHER_FILES = "$$PWD/eglfs_kms.json" diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt new file mode 100644 index 0000000000..a0b405c90c --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt @@ -0,0 +1,33 @@ +# Generated from eglfs_kms_egldevice.pro. + +##################################################################### +## QEglFSKmsEglDeviceIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QEglFSKmsEglDeviceIntegrationPlugin + OUTPUT_NAME qeglfs-kms-egldevice-integration + TYPE egldeviceintegrations + SOURCES + qeglfskmsegldevice.cpp qeglfskmsegldevice.h + qeglfskmsegldeviceintegration.cpp qeglfskmsegldeviceintegration.h + qeglfskmsegldevicemain.cpp + qeglfskmsegldevicescreen.cpp qeglfskmsegldevicescreen.h + DEFINES + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + ../../api + ../eglfs_kms_support + PUBLIC_LIBRARIES + Libdrm::Libdrm + Qt::Core + Qt::CorePrivate + Qt::EdidSupportPrivate + Qt::EglFSDeviceIntegrationPrivate + Qt::EglFsKmsSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::KmsSupportPrivate +) + +#### Keys ignored in scope 1:.:.:eglfs_kms_egldevice.pro:<TRUE>: +# OTHER_FILES = "$$PWD/eglfs_kms_egldevice.json" diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/CMakeLists.txt new file mode 100644 index 0000000000..abaad3930d --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/CMakeLists.txt @@ -0,0 +1,29 @@ +# Generated from eglfs_kms_support.pro. + +##################################################################### +## EglFsKmsSupport Module: +##################################################################### + +qt_add_module(EglFsKmsSupport + INTERNAL_MODULE + NO_MODULE_HEADERS + SOURCES + qeglfskmsdevice.cpp qeglfskmsdevice.h + qeglfskmseventreader.cpp qeglfskmseventreader.h + qeglfskmshelpers.h + qeglfskmsintegration.cpp qeglfskmsintegration.h + qeglfskmsscreen.cpp qeglfskmsscreen.h + DEFINES + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + ../../api + PUBLIC_LIBRARIES + Libdrm::Libdrm + Qt::Core + Qt::CorePrivate + Qt::EdidSupportPrivate + Qt::EglFSDeviceIntegrationPrivate + Qt::Gui + Qt::GuiPrivate + Qt::KmsSupportPrivate +) diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt new file mode 100644 index 0000000000..29dcd0dab7 --- /dev/null +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt @@ -0,0 +1,28 @@ +# Generated from eglfs_x11.pro. + +##################################################################### +## QEglFSX11IntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QEglFSX11IntegrationPlugin + OUTPUT_NAME qeglfs-x11-integration + TYPE egldeviceintegrations + SOURCES + qeglfsx11integration.cpp qeglfsx11integration.h + qeglfsx11main.cpp + DEFINES + QT_EGL_NO_X11 + INCLUDE_DIRECTORIES + ../../api + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EglFSDeviceIntegrationPrivate + Qt::Gui + Qt::GuiPrivate + X11::XCB + XCB::XCB +) + +#### Keys ignored in scope 1:.:.:eglfs_x11.pro:<TRUE>: +# OTHER_FILES = "$$PWD/eglfs_x11.json" diff --git a/src/plugins/platforms/ios/.prev_CMakeLists.txt b/src/plugins/platforms/ios/.prev_CMakeLists.txt new file mode 100644 index 0000000000..d7ff160ee0 --- /dev/null +++ b/src/plugins/platforms/ios/.prev_CMakeLists.txt @@ -0,0 +1,65 @@ +# Generated from ios.pro. + +##################################################################### +## QIOSIntegrationPlugin Plugin: +##################################################################### + +add_qt_plugin(QIOSIntegrationPlugin + OUTPUT_NAME qios + TYPE platforms + SOURCES + plugin.mm + qiosapplicationdelegate.h qiosapplicationdelegate.mm + qiosapplicationstate.h qiosapplicationstate.mm + qiosbackingstore.h qiosbackingstore.mm + qioscontext.h qioscontext.mm + qioseventdispatcher.h qioseventdispatcher.mm + qiosglobal.h qiosglobal.mm + qiosinputcontext.h qiosinputcontext.mm + qiosintegration.h qiosintegration.mm + qiosplatformaccessibility.h qiosplatformaccessibility.mm + qiosscreen.h qiosscreen.mm + qiosservices.h qiosservices.mm + qiostextresponder.h qiostextresponder.mm + qiostheme.h qiostheme.mm + qiosviewcontroller.h qiosviewcontroller.mm + qioswindow.h qioswindow.mm + quiaccessibilityelement.h quiaccessibilityelement.mm + quiview.h quiview.mm + PUBLIC_LIBRARIES + ${FWAudioToolbox} + ${FWFoundation} + ${FWQuartzCore} + ${FWUIKit} + Qt::ClipboardSupportPrivate + Qt::CorePrivate + Qt::FontDatabaseSupportPrivate + Qt::GraphicsSupportPrivate + Qt::GuiPrivate +) + +#### Keys ignored in scope 2:.:.:kernel.pro:<TRUE>: +# OTHER_FILES = "quiview_textinput.mm" "quiview_accessibility.mm" + +## Scopes: +##################################################################### + +extend_target(QIOSIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +extend_target(QIOSIntegrationPlugin CONDITION NOT APPLE_TVOS + SOURCES + qiosclipboard.h qiosclipboard.mm + qiosfiledialog.h qiosfiledialog.mm + qiosmenu.h qiosmenu.mm + qiosmessagedialog.h qiosmessagedialog.mm + qiostextinputoverlay.h qiostextinputoverlay.mm + PUBLIC_LIBRARIES + ${FWAssetsLibrary} +) + +#### Keys ignored in scope 6:.:.:kernel.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(optional) diff --git a/src/plugins/platforms/ios/CMakeLists.txt b/src/plugins/platforms/ios/CMakeLists.txt new file mode 100644 index 0000000000..d7ff160ee0 --- /dev/null +++ b/src/plugins/platforms/ios/CMakeLists.txt @@ -0,0 +1,65 @@ +# Generated from ios.pro. + +##################################################################### +## QIOSIntegrationPlugin Plugin: +##################################################################### + +add_qt_plugin(QIOSIntegrationPlugin + OUTPUT_NAME qios + TYPE platforms + SOURCES + plugin.mm + qiosapplicationdelegate.h qiosapplicationdelegate.mm + qiosapplicationstate.h qiosapplicationstate.mm + qiosbackingstore.h qiosbackingstore.mm + qioscontext.h qioscontext.mm + qioseventdispatcher.h qioseventdispatcher.mm + qiosglobal.h qiosglobal.mm + qiosinputcontext.h qiosinputcontext.mm + qiosintegration.h qiosintegration.mm + qiosplatformaccessibility.h qiosplatformaccessibility.mm + qiosscreen.h qiosscreen.mm + qiosservices.h qiosservices.mm + qiostextresponder.h qiostextresponder.mm + qiostheme.h qiostheme.mm + qiosviewcontroller.h qiosviewcontroller.mm + qioswindow.h qioswindow.mm + quiaccessibilityelement.h quiaccessibilityelement.mm + quiview.h quiview.mm + PUBLIC_LIBRARIES + ${FWAudioToolbox} + ${FWFoundation} + ${FWQuartzCore} + ${FWUIKit} + Qt::ClipboardSupportPrivate + Qt::CorePrivate + Qt::FontDatabaseSupportPrivate + Qt::GraphicsSupportPrivate + Qt::GuiPrivate +) + +#### Keys ignored in scope 2:.:.:kernel.pro:<TRUE>: +# OTHER_FILES = "quiview_textinput.mm" "quiview_accessibility.mm" + +## Scopes: +##################################################################### + +extend_target(QIOSIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +extend_target(QIOSIntegrationPlugin CONDITION NOT APPLE_TVOS + SOURCES + qiosclipboard.h qiosclipboard.mm + qiosfiledialog.h qiosfiledialog.mm + qiosmenu.h qiosmenu.mm + qiosmessagedialog.h qiosmessagedialog.mm + qiostextinputoverlay.h qiostextinputoverlay.mm + PUBLIC_LIBRARIES + ${FWAssetsLibrary} +) + +#### Keys ignored in scope 6:.:.:kernel.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(optional) diff --git a/src/plugins/platforms/ios/kernel.pro b/src/plugins/platforms/ios/kernel.pro index 71257d09f7..01e0105223 100644 --- a/src/plugins/platforms/ios/kernel.pro +++ b/src/plugins/platforms/ios/kernel.pro @@ -9,6 +9,8 @@ QT += \ core-private gui-private \ clipboard_support-private fontdatabase_support-private graphics_support-private +qtHaveModule(platformcompositor_support-private): QT += platformcompositor_support-private + LIBS += -framework Foundation -framework UIKit -framework QuartzCore -framework AudioToolbox OBJECTIVE_SOURCES = \ diff --git a/src/plugins/platforms/ios/optional/CMakeLists.txt b/src/plugins/platforms/ios/optional/CMakeLists.txt new file mode 100644 index 0000000000..3c84e61f26 --- /dev/null +++ b/src/plugins/platforms/ios/optional/CMakeLists.txt @@ -0,0 +1,5 @@ +# Generated from optional.pro. + +if(APPLE_IOS) + add_subdirectory(nsphotolibrarysupport) +endif() diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/CMakeLists.txt b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/CMakeLists.txt new file mode 100644 index 0000000000..0fbb0fdbd8 --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/CMakeLists.txt @@ -0,0 +1,29 @@ +# Generated from nsphotolibrarysupport.pro. + +##################################################################### +## QIosOptionalPlugin_NSPhotoLibrary Plugin: +##################################################################### + +add_qt_plugin(QIosOptionalPlugin_NSPhotoLibrary + OUTPUT_NAME qiosnsphotolibrarysupport + TYPE platforms/darwin + SOURCES + plugin.mm + qiosfileengineassetslibrary.h qiosfileengineassetslibrary.mm + qiosfileenginefactory.h + qiosimagepickercontroller.h qiosimagepickercontroller.mm + PUBLIC_LIBRARIES + ${FWAssetsLibrary} + ${FWFoundation} + ${FWUIKit} + Qt::Core + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:nsphotolibrarysupport.pro:<TRUE>: +# OTHER_FILES = "plugin.json" +# PLUGIN_EXTENDS = "-" + +## Scopes: +##################################################################### diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 9eca0eaad3..d724e65717 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -65,6 +65,10 @@ #import <AudioToolbox/AudioServices.h> +#if QT_CONFIG(opengl) +#include <QtPlatformCompositorSupport/qpa/qplatformbackingstoreopenglsupport.h> +#endif + #include <QtDebug> QT_BEGIN_NAMESPACE @@ -186,7 +190,11 @@ QPlatformWindow *QIOSIntegration::createPlatformWindow(QWindow *window) const // Used when the QWindow's surface type is set by the client to QSurface::RasterSurface QPlatformBackingStore *QIOSIntegration::createPlatformBackingStore(QWindow *window) const { - return new QIOSBackingStore(window); + auto *backingStore = new QIOSBackingStore(window); +#if QT_CONFIG(opengl) + backingStore->setOpenGLSupport(new QPlatformBackingStoreOpenGLSupport(backingStore)); +#endif + return backingStore; } // Used when the QWindow's surface type is set by the client to QSurface::OpenGLSurface diff --git a/src/plugins/platforms/linuxfb/.prev_CMakeLists.txt b/src/plugins/platforms/linuxfb/.prev_CMakeLists.txt new file mode 100644 index 0000000000..bcec98e1de --- /dev/null +++ b/src/plugins/platforms/linuxfb/.prev_CMakeLists.txt @@ -0,0 +1,46 @@ +# Generated from linuxfb.pro. + +##################################################################### +## QLinuxFbIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QLinuxFbIntegrationPlugin + OUTPUT_NAME qlinuxfb + TYPE platforms + SOURCES + main.cpp + qlinuxfbintegration.cpp qlinuxfbintegration.h + qlinuxfbscreen.cpp qlinuxfbscreen.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FbSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ServiceSupportPrivate +) + +#### Keys ignored in scope 1:.:.:linuxfb.pro:<TRUE>: +# OTHER_FILES = "linuxfb.json" + +## Scopes: +##################################################################### + +qt_extend_target(QLinuxFbIntegrationPlugin CONDITION TARGET Qt::InputSupportPrivate + PUBLIC_LIBRARIES + Qt::InputSupportPrivate +) + +qt_extend_target(QLinuxFbIntegrationPlugin CONDITION TARGET Qt::KmsSupportPrivate + SOURCES + qlinuxfbdrmscreen.cpp qlinuxfbdrmscreen.h + PUBLIC_LIBRARIES + Qt::KmsSupportPrivate +) + +#### Keys ignored in scope 4:.:.:linuxfb.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/linuxfb/CMakeLists.txt b/src/plugins/platforms/linuxfb/CMakeLists.txt new file mode 100644 index 0000000000..8747894100 --- /dev/null +++ b/src/plugins/platforms/linuxfb/CMakeLists.txt @@ -0,0 +1,47 @@ +# Generated from linuxfb.pro. + +##################################################################### +## QLinuxFbIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QLinuxFbIntegrationPlugin + OUTPUT_NAME qlinuxfb + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES linuxfb # special case + SOURCES + main.cpp + qlinuxfbintegration.cpp qlinuxfbintegration.h + qlinuxfbscreen.cpp qlinuxfbscreen.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FbSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ServiceSupportPrivate +) + +#### Keys ignored in scope 1:.:.:linuxfb.pro:<TRUE>: +# OTHER_FILES = "linuxfb.json" + +## Scopes: +##################################################################### + +qt_extend_target(QLinuxFbIntegrationPlugin CONDITION TARGET Qt::InputSupportPrivate + PUBLIC_LIBRARIES + Qt::InputSupportPrivate +) + +qt_extend_target(QLinuxFbIntegrationPlugin CONDITION TARGET Qt::KmsSupportPrivate + SOURCES + qlinuxfbdrmscreen.cpp qlinuxfbdrmscreen.h + PUBLIC_LIBRARIES + Qt::KmsSupportPrivate +) + +#### Keys ignored in scope 4:.:.:linuxfb.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/minimal/.prev_CMakeLists.txt b/src/plugins/platforms/minimal/.prev_CMakeLists.txt new file mode 100644 index 0000000000..764c684932 --- /dev/null +++ b/src/plugins/platforms/minimal/.prev_CMakeLists.txt @@ -0,0 +1,37 @@ +# Generated from minimal.pro. + +##################################################################### +## QMinimalIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QMinimalIntegrationPlugin + OUTPUT_NAME qminimal + TYPE platforms + SOURCES + main.cpp + qminimalbackingstore.cpp qminimalbackingstore.h + qminimalintegration.cpp qminimalintegration.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:minimal.pro:<TRUE>: +# OTHER_FILES = "minimal.json" + +## Scopes: +##################################################################### + +qt_extend_target(QMinimalIntegrationPlugin CONDITION QT_FEATURE_freetype + LIBRARIES + WrapFreetype::WrapFreetype +) + +#### Keys ignored in scope 3:.:.:minimal.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/minimal/CMakeLists.txt b/src/plugins/platforms/minimal/CMakeLists.txt new file mode 100644 index 0000000000..4f4638b640 --- /dev/null +++ b/src/plugins/platforms/minimal/CMakeLists.txt @@ -0,0 +1,38 @@ +# Generated from minimal.pro. + +##################################################################### +## QMinimalIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QMinimalIntegrationPlugin + OUTPUT_NAME qminimal + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES minimal # special case + SOURCES + main.cpp + qminimalbackingstore.cpp qminimalbackingstore.h + qminimalintegration.cpp qminimalintegration.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:minimal.pro:<TRUE>: +# OTHER_FILES = "minimal.json" + +## Scopes: +##################################################################### + +qt_extend_target(QMinimalIntegrationPlugin CONDITION QT_FEATURE_freetype + LIBRARIES + WrapFreetype::WrapFreetype +) + +#### Keys ignored in scope 3:.:.:minimal.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/minimalegl/.prev_CMakeLists.txt b/src/plugins/platforms/minimalegl/.prev_CMakeLists.txt new file mode 100644 index 0000000000..7a08af79a9 --- /dev/null +++ b/src/plugins/platforms/minimalegl/.prev_CMakeLists.txt @@ -0,0 +1,41 @@ +# Generated from minimalegl.pro. + +##################################################################### +## QMinimalEglIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QMinimalEglIntegrationPlugin + OUTPUT_NAME qminimalegl + TYPE platforms + SOURCES + main.cpp + qminimaleglintegration.cpp qminimaleglintegration.h + qminimaleglscreen.cpp qminimaleglscreen.h + qminimaleglwindow.cpp qminimaleglwindow.h + DEFINES + QT_EGL_NO_X11 + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EglSupportPrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:minimalegl.pro:<TRUE>: +# OTHER_FILES = "minimalegl.json" + +## Scopes: +##################################################################### + +qt_extend_target(QMinimalEglIntegrationPlugin CONDITION QT_FEATURE_opengl + SOURCES + qminimaleglbackingstore.cpp qminimaleglbackingstore.h + PUBLIC_LIBRARIES + Qt::OpenGL +) + +#### Keys ignored in scope 3:.:.:minimalegl.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/minimalegl/CMakeLists.txt b/src/plugins/platforms/minimalegl/CMakeLists.txt new file mode 100644 index 0000000000..4c8856e35d --- /dev/null +++ b/src/plugins/platforms/minimalegl/CMakeLists.txt @@ -0,0 +1,42 @@ +# Generated from minimalegl.pro. + +##################################################################### +## QMinimalEglIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QMinimalEglIntegrationPlugin + OUTPUT_NAME qminimalegl + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES minimalegl # special case + SOURCES + main.cpp + qminimaleglintegration.cpp qminimaleglintegration.h + qminimaleglscreen.cpp qminimaleglscreen.h + qminimaleglwindow.cpp qminimaleglwindow.h + DEFINES + QT_EGL_NO_X11 + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EglSupportPrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:minimalegl.pro:<TRUE>: +# OTHER_FILES = "minimalegl.json" + +## Scopes: +##################################################################### + +qt_extend_target(QMinimalEglIntegrationPlugin CONDITION QT_FEATURE_opengl + SOURCES + qminimaleglbackingstore.cpp qminimaleglbackingstore.h + PUBLIC_LIBRARIES + Qt::OpenGL +) + +#### Keys ignored in scope 3:.:.:minimalegl.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/minimalegl/minimalegl.pro b/src/plugins/platforms/minimalegl/minimalegl.pro index b7dde9069f..3f6ae4e248 100644 --- a/src/plugins/platforms/minimalegl/minimalegl.pro +++ b/src/plugins/platforms/minimalegl/minimalegl.pro @@ -21,6 +21,7 @@ HEADERS = qminimaleglintegration.h \ qminimaleglscreen.h qtConfig(opengl) { + QT += opengl SOURCES += qminimaleglbackingstore.cpp HEADERS += qminimaleglbackingstore.h } diff --git a/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp b/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp index dc8dd74312..2319762f31 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp +++ b/src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp @@ -40,7 +40,7 @@ #include "qminimaleglbackingstore.h" #include <QtGui/QOpenGLContext> -#include <QtGui/QOpenGLPaintDevice> +#include <QtOpenGL/QOpenGLPaintDevice> QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/offscreen/.prev_CMakeLists.txt b/src/plugins/platforms/offscreen/.prev_CMakeLists.txt new file mode 100644 index 0000000000..62d36ec449 --- /dev/null +++ b/src/plugins/platforms/offscreen/.prev_CMakeLists.txt @@ -0,0 +1,40 @@ +# Generated from offscreen.pro. + +##################################################################### +## QOffscreenIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QOffscreenIntegrationPlugin + OUTPUT_NAME qoffscreen + TYPE platforms + SOURCES + main.cpp + qoffscreencommon.cpp qoffscreencommon.h + qoffscreenintegration.cpp qoffscreenintegration.h + qoffscreenwindow.cpp qoffscreenwindow.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:offscreen.pro:<TRUE>: +# OTHER_FILES = "offscreen.json" + +## Scopes: +##################################################################### + +qt_extend_target(QOffscreenIntegrationPlugin CONDITION QT_FEATURE_opengl AND QT_FEATURE_xlib AND NOT QT_FEATURE_opengles2 + SOURCES + qoffscreenintegration_x11.cpp qoffscreenintegration_x11.h + PUBLIC_LIBRARIES + Qt::GlxSupportPrivate +) + +#### Keys ignored in scope 3:.:.:offscreen.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/offscreen/CMakeLists.txt b/src/plugins/platforms/offscreen/CMakeLists.txt new file mode 100644 index 0000000000..63474c3760 --- /dev/null +++ b/src/plugins/platforms/offscreen/CMakeLists.txt @@ -0,0 +1,41 @@ +# Generated from offscreen.pro. + +##################################################################### +## QOffscreenIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QOffscreenIntegrationPlugin + OUTPUT_NAME qoffscreen + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES offscreen # special case + SOURCES + main.cpp + qoffscreencommon.cpp qoffscreencommon.h + qoffscreenintegration.cpp qoffscreenintegration.h + qoffscreenwindow.cpp qoffscreenwindow.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate +) + +#### Keys ignored in scope 1:.:.:offscreen.pro:<TRUE>: +# OTHER_FILES = "offscreen.json" + +## Scopes: +##################################################################### + +qt_extend_target(QOffscreenIntegrationPlugin CONDITION QT_FEATURE_opengl AND QT_FEATURE_xlib AND NOT QT_FEATURE_opengles2 + SOURCES + qoffscreenintegration_x11.cpp qoffscreenintegration_x11.h + PUBLIC_LIBRARIES + Qt::GlxSupportPrivate +) + +#### Keys ignored in scope 3:.:.:offscreen.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/vnc/.prev_CMakeLists.txt b/src/plugins/platforms/vnc/.prev_CMakeLists.txt new file mode 100644 index 0000000000..a26cc0be2b --- /dev/null +++ b/src/plugins/platforms/vnc/.prev_CMakeLists.txt @@ -0,0 +1,43 @@ +# Generated from vnc.pro. + +##################################################################### +## QVncIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QVncIntegrationPlugin + OUTPUT_NAME qvnc + TYPE platforms + SOURCES + main.cpp + qvnc.cpp qvnc_p.h + qvncclient.cpp qvncclient.h + qvncintegration.cpp qvncintegration.h + qvncscreen.cpp qvncscreen.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FbSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::Network + Qt::ServiceSupportPrivate + Qt::ThemeSupportPrivate +) + +#### Keys ignored in scope 1:.:.:vnc.pro:<TRUE>: +# OTHER_FILES = "vnc.json" + +## Scopes: +##################################################################### + +qt_extend_target(QVncIntegrationPlugin CONDITION TARGET Qt::InputSupportPrivate + PUBLIC_LIBRARIES + Qt::InputSupportPrivate +) + +#### Keys ignored in scope 3:.:.:vnc.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/vnc/CMakeLists.txt b/src/plugins/platforms/vnc/CMakeLists.txt new file mode 100644 index 0000000000..cb84355d81 --- /dev/null +++ b/src/plugins/platforms/vnc/CMakeLists.txt @@ -0,0 +1,44 @@ +# Generated from vnc.pro. + +##################################################################### +## QVncIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QVncIntegrationPlugin + OUTPUT_NAME qvnc + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES vnc # special case + SOURCES + main.cpp + qvnc.cpp qvnc_p.h + qvncclient.cpp qvncclient.h + qvncintegration.cpp qvncintegration.h + qvncscreen.cpp qvncscreen.h + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FbSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::Network + Qt::ServiceSupportPrivate + Qt::ThemeSupportPrivate +) + +#### Keys ignored in scope 1:.:.:vnc.pro:<TRUE>: +# OTHER_FILES = "vnc.json" + +## Scopes: +##################################################################### + +qt_extend_target(QVncIntegrationPlugin CONDITION TARGET Qt::InputSupportPrivate + PUBLIC_LIBRARIES + Qt::InputSupportPrivate +) + +#### Keys ignored in scope 3:.:.:vnc.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforms/wasm/qwasmbackingstore.cpp b/src/plugins/platforms/wasm/qwasmbackingstore.cpp index 7e8a382512..a7423e9c47 100644 --- a/src/plugins/platforms/wasm/qwasmbackingstore.cpp +++ b/src/plugins/platforms/wasm/qwasmbackingstore.cpp @@ -31,7 +31,7 @@ #include "qwasmwindow.h" #include "qwasmcompositor.h" -#include <QtGui/qopengltexture.h> +#include <QtOpenGL/qopengltexture.h> #include <QtGui/qmatrix4x4.h> #include <QtGui/qpainter.h> #include <private/qguiapplication_p.h> diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index e9c4559971..74890ead82 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -31,12 +31,11 @@ #include "qwasmwindow.h" #include "qwasmstylepixmaps_p.h" -#include <QtGui/qopengltexture.h> +#include <QtOpenGL/qopengltexture.h> #include <QtGui/private/qwindow_p.h> #include <QtGui/qopenglcontext.h> #include <QtGui/qopenglfunctions.h> -#include <QtGui/qopengltextureblitter.h> #include <QtGui/qoffscreensurface.h> #include <QtGui/qpainter.h> #include <private/qpixmapcache_p.h> diff --git a/src/plugins/platforms/wasm/qwasmcompositor.h b/src/plugins/platforms/wasm/qwasmcompositor.h index 98f4a79b27..250d244c9f 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.h +++ b/src/plugins/platforms/wasm/qwasmcompositor.h @@ -33,8 +33,7 @@ #include <QtGui/qregion.h> #include <qpa/qplatformwindow.h> -#include <QtGui/qopengltextureblitter.h> -#include <QtGui/qopengltexture.h> +#include <QtOpenGL/qopengltextureblitter.h> #include <QtGui/qpalette.h> #include <QtGui/qpainter.h> @@ -43,7 +42,7 @@ QT_BEGIN_NAMESPACE class QWasmWindow; class QWasmScreen; class QOpenGLContext; -class QOpenGLTextureBlitter; +class QOpenGLTexture; class QWasmCompositedWindow { diff --git a/src/plugins/platforms/wasm/qwasmintegration.cpp b/src/plugins/platforms/wasm/qwasmintegration.cpp index 45bc49e382..d1901d840e 100644 --- a/src/plugins/platforms/wasm/qwasmintegration.cpp +++ b/src/plugins/platforms/wasm/qwasmintegration.cpp @@ -41,6 +41,7 @@ #include "qwasmwindow.h" #ifndef QT_NO_OPENGL # include "qwasmbackingstore.h" +# include <QtPlatformCompositorSupport/qpa/qplatformbackingstoreopenglsupport.h> #endif #include "qwasmfontdatabase.h" #if defined(Q_OS_UNIX) @@ -180,6 +181,7 @@ QPlatformBackingStore *QWasmIntegration::createPlatformBackingStore(QWindow *win #ifndef QT_NO_OPENGL QWasmCompositor *compositor = QWasmScreen::get(window->screen())->compositor(); QWasmBackingStore *backingStore = new QWasmBackingStore(compositor, window); + backingStore->setOpenGLSupport(new QPlatformBackingStoreOpenGLSupport(backingStore)); m_backingStores.insert(window, backingStore); return backingStore; #else diff --git a/src/plugins/platforms/wasm/wasm.pro b/src/plugins/platforms/wasm/wasm.pro index a12ae06833..1aee4a3e58 100644 --- a/src/plugins/platforms/wasm/wasm.pro +++ b/src/plugins/platforms/wasm/wasm.pro @@ -4,6 +4,8 @@ QT += \ core-private gui-private \ eventdispatcher_support-private fontdatabase_support-private egl_support-private +qtHaveModule(platformcompositor_support-private): QT += platformcompositor_support-private + # Avoid X11 header collision, use generic EGL native types DEFINES += QT_EGL_NO_X11 @@ -52,6 +54,7 @@ wasmfonts.base = ../../../3rdparty/wasm RESOURCES += wasmfonts qtConfig(opengl) { + QT += opengl SOURCES += qwasmbackingstore.cpp HEADERS += qwasmbackingstore.h } diff --git a/src/plugins/platforms/windows/.prev_CMakeLists.txt b/src/plugins/platforms/windows/.prev_CMakeLists.txt new file mode 100644 index 0000000000..57b7fede9f --- /dev/null +++ b/src/plugins/platforms/windows/.prev_CMakeLists.txt @@ -0,0 +1,239 @@ +# Generated from windows.pro. + +##################################################################### +## QWindowsIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QWindowsIntegrationPlugin + OUTPUT_NAME qwindows + TYPE platforms + SOURCES + main.cpp + qtwindowsglobal.h + qwin10helpers.cpp qwin10helpers.h + qwindowsbackingstore.cpp qwindowsbackingstore.h + qwindowscombase.h + qwindowscontext.cpp qwindowscontext.h + qwindowscursor.cpp qwindowscursor.h + qwindowsdialoghelpers.cpp qwindowsdialoghelpers.h + qwindowsdropdataobject.cpp qwindowsdropdataobject.h + qwindowsgdiintegration.cpp qwindowsgdiintegration.h + qwindowsgdinativeinterface.cpp qwindowsgdinativeinterface.h + qwindowsinputcontext.cpp qwindowsinputcontext.h + qwindowsintegration.cpp qwindowsintegration.h + qwindowsinternalmimedata.cpp qwindowsinternalmimedata.h + qwindowskeymapper.cpp qwindowskeymapper.h + qwindowsmenu.cpp qwindowsmenu.h + qwindowsmime.cpp qwindowsmime.h + qwindowsmousehandler.cpp qwindowsmousehandler.h + qwindowsnativeinterface.cpp qwindowsnativeinterface.h + qwindowsole.cpp qwindowsole.h + qwindowsopengltester.cpp qwindowsopengltester.h + qwindowspointerhandler.cpp qwindowspointerhandler.h + qwindowsscreen.cpp qwindowsscreen.h + qwindowsservices.cpp qwindowsservices.h + qwindowstheme.cpp qwindowstheme.h + qwindowsthreadpoolrunner.h + qwindowswindow.cpp qwindowswindow.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + LIBRARIES + advapi32 + d3d9 + gdi32 + ole32 + shell32 + user32 + winmm + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ThemeSupportPrivate + dwmapi + imm32 + oleaut32 + shlwapi + winspool + wtsapi32 +) + +# Resources: +set_source_files_properties("openglblacklists/default.json" + PROPERTIES QT_RESOURCE_ALIAS "default.json" +) +set(openglblacklists_resource_files + "openglblacklists/default.json" +) + +qt_add_resource(QWindowsIntegrationPlugin "openglblacklists" + PREFIX + "/qt-project.org/windows/openglblacklists" + FILES + ${openglblacklists_resource_files} +) + + +#### Keys ignored in scope 1:.:.:windows.pro:<TRUE>: +# OTHER_FILES = "windows.json" + +## Scopes: +##################################################################### + +qt_extend_target(QWindowsIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_accessibility + SOURCES + uiautomation/qwindowsuiaaccessibility.cpp uiautomation/qwindowsuiaaccessibility.h + uiautomation/qwindowsuiabaseprovider.cpp uiautomation/qwindowsuiabaseprovider.h + uiautomation/qwindowsuiagriditemprovider.cpp uiautomation/qwindowsuiagriditemprovider.h + uiautomation/qwindowsuiagridprovider.cpp uiautomation/qwindowsuiagridprovider.h + uiautomation/qwindowsuiainvokeprovider.cpp uiautomation/qwindowsuiainvokeprovider.h + uiautomation/qwindowsuiamainprovider.cpp uiautomation/qwindowsuiamainprovider.h + uiautomation/qwindowsuiaprovidercache.cpp uiautomation/qwindowsuiaprovidercache.h + uiautomation/qwindowsuiarangevalueprovider.cpp uiautomation/qwindowsuiarangevalueprovider.h + uiautomation/qwindowsuiaselectionitemprovider.cpp uiautomation/qwindowsuiaselectionitemprovider.h + uiautomation/qwindowsuiaselectionprovider.cpp uiautomation/qwindowsuiaselectionprovider.h + uiautomation/qwindowsuiatableitemprovider.cpp uiautomation/qwindowsuiatableitemprovider.h + uiautomation/qwindowsuiatableprovider.cpp uiautomation/qwindowsuiatableprovider.h + uiautomation/qwindowsuiatextprovider.cpp uiautomation/qwindowsuiatextprovider.h + uiautomation/qwindowsuiatextrangeprovider.cpp uiautomation/qwindowsuiatextrangeprovider.h + uiautomation/qwindowsuiatoggleprovider.cpp uiautomation/qwindowsuiatoggleprovider.h + uiautomation/qwindowsuiautils.cpp uiautomation/qwindowsuiautils.h + uiautomation/qwindowsuiavalueprovider.cpp uiautomation/qwindowsuiavalueprovider.h + uiautomation/qwindowsuiawindowprovider.cpp uiautomation/qwindowsuiawindowprovider.h + PUBLIC_LIBRARIES + Qt::AccessibilitySupportPrivate +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_vulkan + SOURCES + qwindowsvulkaninstance.cpp qwindowsvulkaninstance.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +#### Keys ignored in scope 5:.:.:windows.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengl AND NOT QT_FEATURE_dynamicgl AND NOT QT_FEATURE_opengles2 + PUBLIC_LIBRARIES + opengl32 +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION mingw + PUBLIC_LIBRARIES + uuid +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengl + SOURCES + qwindowsopenglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengles2 + SOURCES + qwindowseglcontext.cpp qwindowseglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengl AND NOT QT_FEATURE_opengles2 + SOURCES + qwindowsglcontext.cpp qwindowsglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_dynamicgl + SOURCES + qwindowseglcontext.cpp qwindowseglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_systemtrayicon + SOURCES + qwindowssystemtrayicon.cpp qwindowssystemtrayicon.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_clipboard + SOURCES + qwindowsclipboard.cpp qwindowsclipboard.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_clipboard AND QT_FEATURE_draganddrop + SOURCES + qwindowsdrag.cpp qwindowsdrag.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_tabletevent + SOURCES + qwindowstabletsupport.cpp qwindowstabletsupport.h + INCLUDE_DIRECTORIES + ${QT_SOURCE_TREE}/src/3rdparty/wintab +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_sessionmanager + SOURCES + qwindowssessionmanager.cpp qwindowssessionmanager.h +) + +if(QT_FEATURE_imageformat_png) + # Resources: + set(cursors_resource_files + "images/closedhandcursor_32.png" + "images/closedhandcursor_48.png" + "images/closedhandcursor_64.png" + "images/dragcopycursor_32.png" + "images/dragcopycursor_48.png" + "images/dragcopycursor_64.png" + "images/draglinkcursor_32.png" + "images/draglinkcursor_48.png" + "images/draglinkcursor_64.png" + "images/dragmovecursor_32.png" + "images/dragmovecursor_48.png" + "images/dragmovecursor_64.png" + "images/openhandcursor_32.png" + "images/openhandcursor_48.png" + "images/openhandcursor_64.png" + "images/splithcursor_32.png" + "images/splithcursor_48.png" + "images/splithcursor_64.png" + "images/splitvcursor_32.png" + "images/splitvcursor_48.png" + "images/splitvcursor_64.png" + ) + + qt_add_resource(QWindowsIntegrationPlugin "cursors" + PREFIX + "/qt-project.org/windows/cursors" + FILES + ${cursors_resource_files} + ) +endif() + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_accessibility AND TARGET Qt::WindowsUIAutomationSupportPrivate + PUBLIC_LIBRARIES + Qt::WindowsUIAutomationSupportPrivate +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_accessibility AND mingw + PUBLIC_LIBRARIES + uuid +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_combined_angle_lib + DEFINES + LIBEGL_NAME= + LIBGLESV2_NAME= +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION NOT QT_FEATURE_combined_angle_lib + DEFINES + LIBEGL_NAME= + LIBGLESV2_NAME= +) diff --git a/src/plugins/platforms/windows/CMakeLists.txt b/src/plugins/platforms/windows/CMakeLists.txt new file mode 100644 index 0000000000..0c903d8757 --- /dev/null +++ b/src/plugins/platforms/windows/CMakeLists.txt @@ -0,0 +1,233 @@ +# Generated from windows.pro. + +##################################################################### +## QWindowsIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QWindowsIntegrationPlugin + OUTPUT_NAME qwindows + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES windows # special case + SOURCES + main.cpp + qtwindowsglobal.h + qwin10helpers.cpp qwin10helpers.h + qwindowsbackingstore.cpp qwindowsbackingstore.h + qwindowscombase.h + qwindowscontext.cpp qwindowscontext.h + qwindowscursor.cpp qwindowscursor.h + qwindowsdialoghelpers.cpp qwindowsdialoghelpers.h + qwindowsdropdataobject.cpp qwindowsdropdataobject.h + qwindowsgdiintegration.cpp qwindowsgdiintegration.h + qwindowsgdinativeinterface.cpp qwindowsgdinativeinterface.h + qwindowsinputcontext.cpp qwindowsinputcontext.h + qwindowsintegration.cpp qwindowsintegration.h + qwindowsinternalmimedata.cpp qwindowsinternalmimedata.h + qwindowskeymapper.cpp qwindowskeymapper.h + qwindowsmenu.cpp qwindowsmenu.h + qwindowsmime.cpp qwindowsmime.h + qwindowsmousehandler.cpp qwindowsmousehandler.h + qwindowsnativeinterface.cpp qwindowsnativeinterface.h + qwindowsole.cpp qwindowsole.h + qwindowsopengltester.cpp qwindowsopengltester.h + qwindowspointerhandler.cpp qwindowspointerhandler.h + qwindowsscreen.cpp qwindowsscreen.h + qwindowsservices.cpp qwindowsservices.h + qwindowstheme.cpp qwindowstheme.h + qwindowsthreadpoolrunner.h + qwindowswindow.cpp qwindowswindow.h + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_FOREACH + INCLUDE_DIRECTORIES + ${CMAKE_CURRENT_SOURCE_DIR} + LIBRARIES + advapi32 + d3d9 + gdi32 + ole32 + shell32 + user32 + winmm + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EventDispatcherSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::ThemeSupportPrivate + dwmapi + imm32 + oleaut32 + shlwapi + winspool + wtsapi32 +) + +# Resources: +set_source_files_properties("openglblacklists/default.json" + PROPERTIES QT_RESOURCE_ALIAS "default.json" +) +set(openglblacklists_resource_files + "openglblacklists/default.json" +) + +qt_add_resource(QWindowsIntegrationPlugin "openglblacklists" + PREFIX + "/qt-project.org/windows/openglblacklists" + FILES + ${openglblacklists_resource_files} +) + + +#### Keys ignored in scope 1:.:.:windows.pro:<TRUE>: +# OTHER_FILES = "windows.json" + +## Scopes: +##################################################################### + +qt_extend_target(QWindowsIntegrationPlugin CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_accessibility + SOURCES + uiautomation/qwindowsuiaaccessibility.cpp uiautomation/qwindowsuiaaccessibility.h + uiautomation/qwindowsuiabaseprovider.cpp uiautomation/qwindowsuiabaseprovider.h + uiautomation/qwindowsuiagriditemprovider.cpp uiautomation/qwindowsuiagriditemprovider.h + uiautomation/qwindowsuiagridprovider.cpp uiautomation/qwindowsuiagridprovider.h + uiautomation/qwindowsuiainvokeprovider.cpp uiautomation/qwindowsuiainvokeprovider.h + uiautomation/qwindowsuiamainprovider.cpp uiautomation/qwindowsuiamainprovider.h + uiautomation/qwindowsuiaprovidercache.cpp uiautomation/qwindowsuiaprovidercache.h + uiautomation/qwindowsuiarangevalueprovider.cpp uiautomation/qwindowsuiarangevalueprovider.h + uiautomation/qwindowsuiaselectionitemprovider.cpp uiautomation/qwindowsuiaselectionitemprovider.h + uiautomation/qwindowsuiaselectionprovider.cpp uiautomation/qwindowsuiaselectionprovider.h + uiautomation/qwindowsuiatableitemprovider.cpp uiautomation/qwindowsuiatableitemprovider.h + uiautomation/qwindowsuiatableprovider.cpp uiautomation/qwindowsuiatableprovider.h + uiautomation/qwindowsuiatextprovider.cpp uiautomation/qwindowsuiatextprovider.h + uiautomation/qwindowsuiatextrangeprovider.cpp uiautomation/qwindowsuiatextrangeprovider.h + uiautomation/qwindowsuiatoggleprovider.cpp uiautomation/qwindowsuiatoggleprovider.h + uiautomation/qwindowsuiautils.cpp uiautomation/qwindowsuiautils.h + uiautomation/qwindowsuiavalueprovider.cpp uiautomation/qwindowsuiavalueprovider.h + uiautomation/qwindowsuiawindowprovider.cpp uiautomation/qwindowsuiawindowprovider.h + PUBLIC_LIBRARIES + Qt::AccessibilitySupportPrivate +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_vulkan + SOURCES + qwindowsvulkaninstance.cpp qwindowsvulkaninstance.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +#### Keys ignored in scope 5:.:.:windows.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengl AND NOT QT_FEATURE_dynamicgl AND NOT QT_FEATURE_opengles2 + PUBLIC_LIBRARIES + opengl32 +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION mingw + PUBLIC_LIBRARIES + uuid +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengl + SOURCES + qwindowsopenglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengles2 + SOURCES + qwindowseglcontext.cpp qwindowseglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_opengl AND NOT QT_FEATURE_opengles2 + SOURCES + qwindowsglcontext.cpp qwindowsglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_dynamicgl + SOURCES + qwindowseglcontext.cpp qwindowseglcontext.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_systemtrayicon + SOURCES + qwindowssystemtrayicon.cpp qwindowssystemtrayicon.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_clipboard + SOURCES + qwindowsclipboard.cpp qwindowsclipboard.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_clipboard AND QT_FEATURE_draganddrop + SOURCES + qwindowsdrag.cpp qwindowsdrag.h +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_tabletevent + SOURCES + qwindowstabletsupport.cpp qwindowstabletsupport.h + INCLUDE_DIRECTORIES + ${QT_SOURCE_TREE}/src/3rdparty/wintab +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_sessionmanager + SOURCES + qwindowssessionmanager.cpp qwindowssessionmanager.h +) + +if(QT_FEATURE_imageformat_png) + # Resources: + set(cursors_resource_files + "images/closedhandcursor_32.png" + "images/closedhandcursor_48.png" + "images/closedhandcursor_64.png" + "images/dragcopycursor_32.png" + "images/dragcopycursor_48.png" + "images/dragcopycursor_64.png" + "images/draglinkcursor_32.png" + "images/draglinkcursor_48.png" + "images/draglinkcursor_64.png" + "images/dragmovecursor_32.png" + "images/dragmovecursor_48.png" + "images/dragmovecursor_64.png" + "images/openhandcursor_32.png" + "images/openhandcursor_48.png" + "images/openhandcursor_64.png" + "images/splithcursor_32.png" + "images/splithcursor_48.png" + "images/splithcursor_64.png" + "images/splitvcursor_32.png" + "images/splitvcursor_48.png" + "images/splitvcursor_64.png" + ) + + qt_add_resource(QWindowsIntegrationPlugin "cursors" + PREFIX + "/qt-project.org/windows/cursors" + FILES + ${cursors_resource_files} + ) +endif() + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_accessibility AND TARGET Qt::WindowsUIAutomationSupportPrivate + PUBLIC_LIBRARIES + Qt::WindowsUIAutomationSupportPrivate +) + +qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_accessibility AND mingw + PUBLIC_LIBRARIES + uuid +) + +# special case: +# qt_extend_target(QWindowsIntegrationPlugin CONDITION QT_FEATURE_combined_angle_lib ... +# qt_extend_target(QWindowsIntegrationPlugin CONDITION NOT QT_FEATURE_combined_angle_lib ... + diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index 2591966d54..438a0fbaa4 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -1001,7 +1001,7 @@ QByteArray QWindowsContext::comErrorString(HRESULT hr) } _com_error error(hr); result += QByteArrayLiteral(" ("); - result += errorMessageFromComError(error); + result += errorMessageFromComError(error).toUtf8(); result += ')'; return result; } diff --git a/src/plugins/platforms/windows/qwindowsgdiintegration.cpp b/src/plugins/platforms/windows/qwindowsgdiintegration.cpp index c88f669eb5..7e9595321a 100644 --- a/src/plugins/platforms/windows/qwindowsgdiintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsgdiintegration.cpp @@ -45,6 +45,10 @@ #include <QtCore/qdebug.h> #include <QtGui/private/qpixmap_raster_p.h> +#if QT_CONFIG(opengl) +#include <QtPlatformCompositorSupport/qpa/qplatformbackingstoreopenglsupport.h> +#endif + QT_BEGIN_NAMESPACE class QWindowsGdiIntegrationPrivate @@ -73,7 +77,11 @@ QPlatformPixmap *QWindowsGdiIntegration::createPlatformPixmap(QPlatformPixmap::P QPlatformBackingStore *QWindowsGdiIntegration::createPlatformBackingStore(QWindow *window) const { - return new QWindowsBackingStore(window); + auto *backingStore = new QWindowsBackingStore(window); +#ifndef QT_NO_OPENGL + backingStore->setOpenGLSupport(new QPlatformBackingStoreOpenGLSupport(backingStore)); +#endif + return backingStore; } QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp index f5d0a8780a..7431f52e8a 100644 --- a/src/plugins/platforms/windows/qwindowsglcontext.cpp +++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp @@ -329,7 +329,7 @@ static inline bool static void describeFormats(HDC hdc) { const int pfiMax = QOpenGLStaticContext::opengl32.describePixelFormat(hdc, 0, 0, nullptr); - for (int i = 0; i < pfiMax; i++) { + for (int i = 1; i <= pfiMax; i++) { PIXELFORMATDESCRIPTOR pfd; initPixelFormatDescriptor(&pfd); QOpenGLStaticContext::opengl32.describePixelFormat(hdc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd); diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 4b4047ac0c..77340387d8 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -48,6 +48,9 @@ #include "qwindowsscreen.h" #include "qwindowstheme.h" #include "qwindowsservices.h" +#ifdef QT_USE_DIRECTWRITE3 +#include <QtFontDatabaseSupport/private/qwindowsdirectwritefontdatabase_p.h> +#endif #ifndef QT_NO_FREETYPE # include <QtFontDatabaseSupport/private/qwindowsfontdatabase_ft_p.h> #endif @@ -187,7 +190,9 @@ static inline unsigned parseOptions(const QStringList ¶mList, unsigned options = 0; for (const QString ¶m : paramList) { if (param.startsWith(u"fontengine=")) { - if (param.endsWith(u"freetype")) { + if (param.endsWith(u"directwrite")) { + options |= QWindowsIntegration::FontDatabaseDirectWrite; + } else if (param.endsWith(u"freetype")) { options |= QWindowsIntegration::FontDatabaseFreeType; } else if (param.endsWith(u"native")) { options |= QWindowsIntegration::FontDatabaseNative; @@ -504,14 +509,17 @@ QWindowsStaticOpenGLContext *QWindowsIntegration::staticOpenGLContext() QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const { if (!d->m_fontDatabase) { -#ifdef QT_NO_FREETYPE - d->m_fontDatabase = new QWindowsFontDatabase(); -#else // QT_NO_FREETYPE +#ifdef QT_USE_DIRECTWRITE3 + if (d->m_options & QWindowsIntegration::FontDatabaseDirectWrite) + d->m_fontDatabase = new QWindowsDirectWriteFontDatabase; + else +#endif +#ifndef QT_NO_FREETYPE if (d->m_options & QWindowsIntegration::FontDatabaseFreeType) d->m_fontDatabase = new QWindowsFontDatabaseFT; else - d->m_fontDatabase = new QWindowsFontDatabase; #endif // QT_NO_FREETYPE + d->m_fontDatabase = new QWindowsFontDatabase(); } return d->m_fontDatabase; } diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h index 1f16d13769..165472ad40 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.h +++ b/src/plugins/platforms/windows/qwindowsintegration.h @@ -72,7 +72,8 @@ public: DetectAltGrModifier = 0x800, RtlEnabled = 0x1000, DarkModeWindowFrames = 0x2000, - DarkModeStyle = 0x4000 + DarkModeStyle = 0x4000, + FontDatabaseDirectWrite = 0x8000 }; explicit QWindowsIntegration(const QStringList ¶mList); diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 6729ceed0f..ee65b393d4 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -269,7 +269,7 @@ QDebug operator<<(QDebug d, const GUID &guid) static void formatBriefRectangle(QDebug &d, const QRect &r) { - d << r.width() << 'x' << r.height() << forcesign << r.x() << r.y() << noforcesign; + d << r.width() << 'x' << r.height() << Qt::forcesign << r.x() << r.y() << Qt::noforcesign; } static void formatBriefMargins(QDebug &d, const QMargins &m) @@ -929,7 +929,7 @@ QMargins QWindowsGeometryHint::frameOnPrimaryScreen(DWORD style, DWORD exStyle) const QMargins result(qAbs(rect.left), qAbs(rect.top), qAbs(rect.right), qAbs(rect.bottom)); qCDebug(lcQpaWindows).nospace() << __FUNCTION__ << " style=" - << showbase << hex << style << " exStyle=" << exStyle << dec << noshowbase + << Qt::showbase << Qt::hex << style << " exStyle=" << exStyle << Qt::dec << Qt::noshowbase << ' ' << rect << ' ' << result; return result; } diff --git a/src/plugins/platforms/windows/windows.pro b/src/plugins/platforms/windows/windows.pro index 50a3bb41a9..b14969cc3a 100644 --- a/src/plugins/platforms/windows/windows.pro +++ b/src/plugins/platforms/windows/windows.pro @@ -5,9 +5,13 @@ QT += \ eventdispatcher_support-private \ fontdatabase_support-private theme_support-private +qtHaveModule(platformcompositor_support-private): QT += platformcompositor_support-private + qtConfig(accessibility): QT += accessibility_support-private qtConfig(vulkan): QT += vulkan_support-private +qtConfig(directwrite3): DEFINES *= QT_USE_DIRECTWRITE2 QT_USE_DIRECTWRITE3 + LIBS += -ldwmapi QMAKE_USE_PRIVATE += gdi32 diff --git a/src/plugins/platforms/winrt/qwinrtintegration.cpp b/src/plugins/platforms/winrt/qwinrtintegration.cpp index 27d3746933..dd8cd80fd9 100644 --- a/src/plugins/platforms/winrt/qwinrtintegration.cpp +++ b/src/plugins/platforms/winrt/qwinrtintegration.cpp @@ -53,6 +53,9 @@ #if QT_CONFIG(accessibility) # include "uiautomation/qwinrtuiaaccessibility.h" #endif +#if QT_CONFIG(opengl) +#include <QtPlatformCompositorSupport/qpa/qplatformbackingstoreopenglsupport.h> +#endif #include <QtGui/QOffscreenSurface> #include <QtGui/QOpenGLContext> @@ -205,7 +208,11 @@ QPlatformWindow *QWinRTIntegration::createPlatformWindow(QWindow *window) const QPlatformBackingStore *QWinRTIntegration::createPlatformBackingStore(QWindow *window) const { - return new QWinRTBackingStore(window); + auto *backingStore = new QWinRTBackingStore(window); +#if QT_CONFIG(opengl) + backingStore->setOpenGLSupport(new QPlatformBackingStoreOpenGLSupport(backingStore)); +#endif + return backingStore; } QPlatformOpenGLContext *QWinRTIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const diff --git a/src/plugins/platforms/winrt/winrt.pro b/src/plugins/platforms/winrt/winrt.pro index 43dc8f074c..7ac49f73c4 100644 --- a/src/plugins/platforms/winrt/winrt.pro +++ b/src/plugins/platforms/winrt/winrt.pro @@ -6,6 +6,8 @@ QT += \ core-private gui-private \ fontdatabase_support-private egl_support-private +qtHaveModule(platformcompositor_support-private): QT += platformcompositor_support-private + DEFINES *= QT_NO_CAST_FROM_ASCII __WRL_NO_DEFAULT_LIB__ QMAKE_USE_PRIVATE += d3d11 ws2_32 diff --git a/src/plugins/platforms/xcb/.prev_CMakeLists.txt b/src/plugins/platforms/xcb/.prev_CMakeLists.txt new file mode 100644 index 0000000000..427997fc66 --- /dev/null +++ b/src/plugins/platforms/xcb/.prev_CMakeLists.txt @@ -0,0 +1,166 @@ +# Generated from xcb.pro. + +##################################################################### +## XcbQpa Module: +##################################################################### + +qt_add_module(XcbQpa + INTERNAL_MODULE + NO_MODULE_HEADERS + SOURCES + gl_integrations/qxcbglintegration.cpp gl_integrations/qxcbglintegration.h + gl_integrations/qxcbglintegrationfactory.cpp gl_integrations/qxcbglintegrationfactory.h + gl_integrations/qxcbglintegrationplugin.h + gl_integrations/qxcbnativeinterfacehandler.cpp gl_integrations/qxcbnativeinterfacehandler.h + qxcbatom.cpp qxcbatom.h + qxcbbackingstore.cpp qxcbbackingstore.h + qxcbclipboard.cpp qxcbclipboard.h + qxcbconnection.cpp qxcbconnection.h + qxcbconnection_basic.cpp qxcbconnection_basic.h + qxcbconnection_screens.cpp + qxcbconnection_xi2.cpp + qxcbcursor.cpp qxcbcursor.h + qxcbeventdispatcher.cpp qxcbeventdispatcher.h + qxcbeventqueue.cpp qxcbeventqueue.h + qxcbimage.cpp qxcbimage.h + qxcbintegration.cpp qxcbintegration.h + qxcbkeyboard.cpp qxcbkeyboard.h + qxcbmime.cpp qxcbmime.h + qxcbnativeinterface.cpp qxcbnativeinterface.h + qxcbobject.h + qxcbscreen.cpp qxcbscreen.h + qxcbsystemtraytracker.cpp qxcbsystemtraytracker.h + qxcbwindow.cpp qxcbwindow.h + qxcbwmsupport.cpp qxcbwmsupport.h + qxcbxsettings.cpp qxcbxsettings.h + DEFINES + QT_BUILD_XCB_PLUGIN + QT_NO_FOREACH + INCLUDE_DIRECTORIES + gl_integrations + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::EdidSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::GuiPrivate + Qt::ServiceSupportPrivate + Qt::ThemeSupportPrivate + Qt::XkbCommonSupportPrivate + XCB::ICCCM + XCB::IMAGE + XCB::KEYSYMS + XCB::RANDR + XCB::RENDER + XCB::RENDERUTIL + XCB::SHAPE + XCB::SHM + XCB::SYNC + XCB::XCB + XCB::XFIXES + XCB::XINERAMA + XCB::XINPUT + XCB::XKB + XKB::XKB +) + +## Scopes: +##################################################################### + +qt_extend_target(XcbQpa CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(XcbQpa CONDITION TARGET Qt::LinuxAccessibilitySupportPrivate + PUBLIC_LIBRARIES + Qt::LinuxAccessibilitySupportPrivate +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_vulkan + SOURCES + qxcbvulkaninstance.cpp qxcbvulkaninstance.h + qxcbvulkanwindow.cpp qxcbvulkanwindow.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_glib + LIBRARIES + GLIB2::GLIB2 +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_draganddrop + SOURCES + qxcbdrag.cpp qxcbdrag.h +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_xlib + PUBLIC_LIBRARIES + X11::XCB +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_sm + SOURCES + qxcbsessionmanager.cpp qxcbsessionmanager.h + PUBLIC_LIBRARIES + ${X11_SM_LIB} ${X11_ICE_LIB} +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_dlopen + PUBLIC_LIBRARIES + ${CMAKE_DL_LIBS} +) + +qt_extend_target(XcbQpa CONDITION CLANG AND NOT ICC + COMPILE_OPTIONS + -ftemplate-depth=1024 +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_native_painting + SOURCES + nativepainting/qbackingstore_x11.cpp nativepainting/qbackingstore_x11_p.h + nativepainting/qcolormap_x11.cpp nativepainting/qcolormap_x11_p.h + nativepainting/qpaintengine_x11.cpp nativepainting/qpaintengine_x11_p.h + nativepainting/qpixmap_x11.cpp nativepainting/qpixmap_x11_p.h + nativepainting/qt_x11_p.h + nativepainting/qtessellator.cpp nativepainting/qtessellator_p.h + nativepainting/qxcbnativepainting.cpp nativepainting/qxcbnativepainting.h + INCLUDE_DIRECTORIES + nativepainting +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_native_painting AND QT_FEATURE_xrender + PUBLIC_LIBRARIES + PkgConfig::XRender +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_fontconfig AND QT_FEATURE_xcb_native_painting + LIBRARIES + WrapFreetype::WrapFreetype +) +##################################################################### +## QXcbIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QXcbIntegrationPlugin + OUTPUT_NAME qxcb + TYPE platforms + SOURCES + qxcbmain.cpp + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::GuiPrivate + Qt::XcbQpaPrivate +) + +#### Keys ignored in scope 20:.:.:xcb-plugin.pro:<TRUE>: +# OTHER_FILES = "xcb.json" "README" + +## Scopes: +##################################################################### + +#### Keys ignored in scope 22:.:.:xcb-plugin.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(gl_integrations) diff --git a/src/plugins/platforms/xcb/CMakeLists.txt b/src/plugins/platforms/xcb/CMakeLists.txt new file mode 100644 index 0000000000..d422d69891 --- /dev/null +++ b/src/plugins/platforms/xcb/CMakeLists.txt @@ -0,0 +1,210 @@ +# Generated from xcb.pro. + +# begin special case: +qt_find_package(X11_XCB + PROVIDED_TARGETS + X11::XCB +) +qt_find_package(X11 + PROVIDED_TARGETS + X11::X11 +) +qt_find_package(XCB) +qt_find_package(XKB) +qt_find_package(PkgConfig) +qt_find_package(WrapFreetype) +qt_find_package(GLIB2 + PROVIDED_TARGETS + GLIB2::GLIB2 +) +qt_find_package(XRender PROVIDED_TARGETS PkgConfig::XRender) +qt_find_package(XKB_COMMON_X11 PROVIDED_TARGETS PkgConfig::XKB_COMMON_X11) + +# end special case: + +##################################################################### +## XcbQpa Module: +##################################################################### + +qt_add_module(XcbQpa + INTERNAL_MODULE + NO_MODULE_HEADERS + SOURCES + gl_integrations/qxcbglintegration.cpp gl_integrations/qxcbglintegration.h + gl_integrations/qxcbglintegrationfactory.cpp gl_integrations/qxcbglintegrationfactory.h + gl_integrations/qxcbglintegrationplugin.h + gl_integrations/qxcbnativeinterfacehandler.cpp gl_integrations/qxcbnativeinterfacehandler.h + qxcbatom.cpp qxcbatom.h + qxcbbackingstore.cpp qxcbbackingstore.h + qxcbclipboard.cpp qxcbclipboard.h + qxcbconnection.cpp qxcbconnection.h + qxcbconnection_basic.cpp qxcbconnection_basic.h + qxcbconnection_screens.cpp + qxcbconnection_xi2.cpp + qxcbcursor.cpp qxcbcursor.h + qxcbeventdispatcher.cpp qxcbeventdispatcher.h + qxcbeventqueue.cpp qxcbeventqueue.h + qxcbimage.cpp qxcbimage.h + qxcbintegration.cpp qxcbintegration.h + qxcbkeyboard.cpp qxcbkeyboard.h + qxcbmime.cpp qxcbmime.h + qxcbnativeinterface.cpp qxcbnativeinterface.h + qxcbobject.h + qxcbscreen.cpp qxcbscreen.h + qxcbsystemtraytracker.cpp qxcbsystemtraytracker.h + qxcbwindow.cpp qxcbwindow.h + qxcbwmsupport.cpp qxcbwmsupport.h + qxcbxsettings.cpp qxcbxsettings.h + DEFINES + QT_BUILD_XCB_PLUGIN + QT_NO_FOREACH + INCLUDE_DIRECTORIES + gl_integrations + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::EdidSupportPrivate + Qt::FontDatabaseSupportPrivate + Qt::GuiPrivate + Qt::ServiceSupportPrivate + Qt::ThemeSupportPrivate + Qt::XkbCommonSupportPrivate + PkgConfig::XKB_COMMON_X11 # special case + XCB::ICCCM + XCB::IMAGE + XCB::KEYSYMS + XCB::RANDR + XCB::RENDER + XCB::RENDERUTIL + XCB::SHAPE + XCB::SHM + XCB::SYNC + XCB::XCB + XCB::XFIXES + XCB::XINERAMA + $<$<TARGET_EXISTS:XCB::XINPUT>:XCB::XINPUT> # special case + XCB::XKB + XKB::XKB +) + +## Scopes: +##################################################################### + +qt_extend_target(XcbQpa CONDITION TARGET Qt::PlatformCompositorSupportPrivate + PUBLIC_LIBRARIES + Qt::PlatformCompositorSupportPrivate +) + +qt_extend_target(XcbQpa CONDITION TARGET Qt::LinuxAccessibilitySupportPrivate + PUBLIC_LIBRARIES + Qt::LinuxAccessibilitySupportPrivate +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_vulkan + SOURCES + qxcbvulkaninstance.cpp qxcbvulkaninstance.h + qxcbvulkanwindow.cpp qxcbvulkanwindow.h + PUBLIC_LIBRARIES + Qt::VulkanSupportPrivate +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_glib + LIBRARIES + GLIB2::GLIB2 +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_draganddrop + SOURCES + qxcbdrag.cpp qxcbdrag.h +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_xlib + PUBLIC_LIBRARIES + X11::XCB + X11::X11 # special case +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_sm + SOURCES + qxcbsessionmanager.cpp qxcbsessionmanager.h + PUBLIC_LIBRARIES + ${X11_SM_LIB} ${X11_ICE_LIB} +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_dlopen + PUBLIC_LIBRARIES + ${CMAKE_DL_LIBS} +) + +qt_extend_target(XcbQpa CONDITION CLANG AND NOT ICC + COMPILE_OPTIONS + -ftemplate-depth=1024 +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_native_painting + SOURCES + nativepainting/qbackingstore_x11.cpp nativepainting/qbackingstore_x11_p.h + nativepainting/qcolormap_x11.cpp nativepainting/qcolormap_x11_p.h + nativepainting/qpaintengine_x11.cpp nativepainting/qpaintengine_x11_p.h + nativepainting/qpixmap_x11.cpp nativepainting/qpixmap_x11_p.h + nativepainting/qt_x11_p.h + nativepainting/qtessellator.cpp nativepainting/qtessellator_p.h + nativepainting/qxcbnativepainting.cpp nativepainting/qxcbnativepainting.h + INCLUDE_DIRECTORIES + nativepainting +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_xcb_native_painting AND QT_FEATURE_xrender + PUBLIC_LIBRARIES + PkgConfig::XRender +) + +qt_extend_target(XcbQpa CONDITION QT_FEATURE_fontconfig AND QT_FEATURE_xcb_native_painting + LIBRARIES + WrapFreetype::WrapFreetype +) + +# special case begin +if (NOT QT_FEATURE_system_xcb_input) + set(xinput_source "${PROJECT_SOURCE_DIR}/src/3rdparty/xcb/libxcb/xinput.c") + set_source_files_properties( + "${xinput_source}" + PROPERTIES COMPILE_OPTIONS "-w" + ) + target_sources(XcbQpa PRIVATE "${xinput_source}") + target_include_directories(XcbQpa PRIVATE + "${PROJECT_SOURCE_DIR}/src/3rdparty/xcb/include" + ) +endif() +# special case end + +##################################################################### +## QXcbIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QXcbIntegrationPlugin + OUTPUT_NAME qxcb + TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES xcb # special case + SOURCES + qxcbmain.cpp + DEFINES + QT_NO_FOREACH + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::GuiPrivate + Qt::XcbQpaPrivate +) + +#### Keys ignored in scope 20:.:.:xcb-plugin.pro:<TRUE>: +# OTHER_FILES = "xcb.json" "README" + +## Scopes: +##################################################################### + +#### Keys ignored in scope 22:.:.:xcb-plugin.pro:NOT TARGET___equals____ss_QT_DEFAULT_QPA_PLUGIN: +# PLUGIN_EXTENDS = "-" +add_subdirectory(gl_integrations) +if(OFF) + add_subdirectory(xcb-static) # special case TODO: xcb-static sub folder +endif() + diff --git a/src/plugins/platforms/xcb/gl_integrations/CMakeLists.txt b/src/plugins/platforms/xcb/gl_integrations/CMakeLists.txt new file mode 100644 index 0000000000..210a924550 --- /dev/null +++ b/src/plugins/platforms/xcb/gl_integrations/CMakeLists.txt @@ -0,0 +1,8 @@ +# Generated from gl_integrations.pro. + +if(QT_FEATURE_xcb_egl_plugin) + add_subdirectory(xcb_egl) +endif() +if(QT_FEATURE_xcb_glx_plugin) + add_subdirectory(xcb_glx) +endif() diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt new file mode 100644 index 0000000000..a78d01ec87 --- /dev/null +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt @@ -0,0 +1,28 @@ +# Generated from xcb_egl.pro. + +##################################################################### +## QXcbEglIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QXcbEglIntegrationPlugin + OUTPUT_NAME qxcb-egl-integration + TYPE xcbglintegrations + SOURCES + qxcbeglcontext.h + qxcbeglintegration.cpp qxcbeglintegration.h + qxcbeglmain.cpp + qxcbeglnativeinterfacehandler.cpp qxcbeglnativeinterfacehandler.h + qxcbeglwindow.cpp qxcbeglwindow.h + DEFINES + QT_NO_FOREACH + INCLUDE_DIRECTORIES + .. + ../.. + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::EglSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::XcbQpaPrivate +) diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt new file mode 100644 index 0000000000..b3361dbd99 --- /dev/null +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt @@ -0,0 +1,41 @@ +# Generated from xcb_glx.pro. + +##################################################################### +## QXcbGlxIntegrationPlugin Plugin: +##################################################################### + +qt_add_plugin(QXcbGlxIntegrationPlugin + OUTPUT_NAME qxcb-glx-integration + TYPE xcbglintegrations + SOURCES + qglxintegration.cpp qglxintegration.h + qxcbglxintegration.cpp qxcbglxintegration.h + qxcbglxmain.cpp + qxcbglxnativeinterfacehandler.cpp qxcbglxnativeinterfacehandler.h + qxcbglxwindow.cpp qxcbglxwindow.h + DEFINES + QT_NO_FOREACH + INCLUDE_DIRECTORIES + .. + ../.. + PUBLIC_LIBRARIES + Qt::Core + Qt::CorePrivate + Qt::GlxSupportPrivate + Qt::Gui + Qt::GuiPrivate + Qt::XcbQpaPrivate +) + +## Scopes: +##################################################################### + +qt_extend_target(QXcbGlxIntegrationPlugin CONDITION QT_FEATURE_xcb_glx + PUBLIC_LIBRARIES + XCB::GLX +) + +qt_extend_target(QXcbGlxIntegrationPlugin CONDITION QT_FEATURE_dlopen AND NOT static + PUBLIC_LIBRARIES + ${CMAKE_DL_LIBS} +) diff --git a/src/plugins/platforms/xcb/qxcbeventqueue.h b/src/plugins/platforms/xcb/qxcbeventqueue.h index 11d0b8e963..e7327b3fd6 100644 --- a/src/plugins/platforms/xcb/qxcbeventqueue.h +++ b/src/plugins/platforms/xcb/qxcbeventqueue.h @@ -49,6 +49,7 @@ #include <xcb/xcb.h> #include <atomic> +#include <limits> QT_BEGIN_NAMESPACE @@ -106,7 +107,7 @@ public: bool peekEventQueue(PeekerCallback peeker, void *peekerData = nullptr, PeekOptions option = PeekDefault, qint32 peekerId = -1); - void waitForNewEvents(unsigned long time = ULONG_MAX); + void waitForNewEvents(unsigned long time = std::numeric_limits<unsigned long>::max()); private: QXcbEventNode *qXcbEventNodeFactory(xcb_generic_event_t *event); diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp index 3fd989e1f9..cea0511822 100644 --- a/src/plugins/platforms/xcb/qxcbintegration.cpp +++ b/src/plugins/platforms/xcb/qxcbintegration.cpp @@ -61,6 +61,9 @@ #include <QtFontDatabaseSupport/private/qgenericunixfontdatabase_p.h> #include <QtServiceSupport/private/qgenericunixservices_p.h> +#if QT_CONFIG(opengl) +#include <QtPlatformCompositorSupport/qpa/qplatformbackingstoreopenglsupport.h> +#endif #include <stdio.h> @@ -288,16 +291,23 @@ QPlatformOpenGLContext *QXcbIntegration::createPlatformOpenGLContext(QOpenGLCont QPlatformBackingStore *QXcbIntegration::createPlatformBackingStore(QWindow *window) const { - const bool isTrayIconWindow = QXcbWindow::isTrayIconWindow(window); - if (isTrayIconWindow) - return new QXcbSystemTrayBackingStore(window); + QPlatformBackingStore *backingStore = nullptr; + const bool isTrayIconWindow = QXcbWindow::isTrayIconWindow(window); + if (isTrayIconWindow) { + backingStore = new QXcbSystemTrayBackingStore(window); #if QT_CONFIG(xcb_native_painting) - if (nativePaintingEnabled()) - return new QXcbNativeBackingStore(window); + } else if (nativePaintingEnabled()) { + backingStore = new QXcbNativeBackingStore(window); #endif - - return new QXcbBackingStore(window); + } else { + backingStore = new QXcbBackingStore(window); + } + Q_ASSERT(backingStore); +#ifndef QT_NO_OPENGL + backingStore->setOpenGLSupport(new QPlatformBackingStoreOpenGLSupport(backingStore)); +#endif + return backingStore; } QPlatformOffscreenSurface *QXcbIntegration::createPlatformOffscreenSurface(QOffscreenSurface *surface) const diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro index a5d05faa9c..1f651e7697 100644 --- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro +++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro @@ -9,6 +9,9 @@ QT += \ edid_support-private \ xkbcommon_support-private +qtHaveModule(platformcompositor_support-private): \ + QT += platformcompositor_support-private + qtHaveModule(linuxaccessibility_support-private): \ QT += linuxaccessibility_support-private |