Go to file
Tor Arne Vestbø 6ff79478a4 Introduce platform API abstraction for QOpenGLContext
The API is available by including qopenglcontext.h as usual,
but scoped in the QPlatformInterface namespace. The namespace
exposes platform specific type-safe interfaces that provide:

 a) Factory functions for adopting native contexts, e.g.

    QCocoaGLContext::fromNative(nsContext, shareContext);

 b) Access to underlying native handles, e.g.

    openGLContext->platformInterface<QCocoaGLContext>->nativeContext()

 c) Platform specific functionality, e.g.

    static QWGLContext::openGLModuleHandle()

    openGLContext->platformInterface<QEGLContext>->doSomething();

The platform interfaces live close to the classes they extend,
removing the need for complex indirection and plumbing, and
avoids kitchen-sink modules and APIs such as the extras modules,
QPlatformFunctions, or QPlatformNativeInterface.

In the case of QOpenGLContext these platform APIs are backed
by the platform plugin, so dynamic_cast is used to ensure the
platform plugin supports the requested interface, but this is
and implementation detail. The interface APIs are agnostic
to where the implementation lives, while still being available
to the user as part of the APIs they extend/augment.

The documentation will be restored when the dust settles.

Task-number: QTBUG-80233
Change-Id: Iac612403383991c4b24064332542a6e4bcbb3293
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-07-02 10:27:50 +02:00
.github/workflows Update configure flags to the last fixes 2020-06-30 15:21:32 +02:00
bin syncqt: Make sure to update forwarding headers if they are stale 2020-06-30 13:15:11 +02:00
cmake CMake: Document the mapping of configure options to CMake arguments 2020-07-02 09:00:08 +02:00
coin CMake: Skip / ignore failing tests on CMake platforms 2020-07-01 14:55:29 +02:00
config.tests CMake: Skip regeneration of manual compile test project 2020-04-09 11:26:46 +02:00
dist Remove last remainings of Qt Quick 1 imports 2020-05-25 11:48:12 +02:00
doc QString: add char8_t overload of fromUtf8() 2020-06-23 06:31:28 +00:00
examples Introduce platform API abstraction for QOpenGLContext 2020-07-02 10:27:50 +02:00
lib Purge all fonts 2015-08-18 19:59:14 +00:00
mkspecs CMake: Use target install prefix for MODULE_BASE_OUTDIR 2020-07-01 10:03:50 +02:00
qmake Remove unused variables in MSVC generator after WinRT removal 2020-06-29 12:26:26 +02:00
src Introduce platform API abstraction for QOpenGLContext 2020-07-02 10:27:50 +02:00
tests Introduce platform API abstraction for QOpenGLContext 2020-07-02 10:27:50 +02:00
util CMake: Generate qdevice.pri when cross-building 2020-06-29 12:47:59 +02:00
.cmake.conf pro2cmake.py: Generate .cmake.conf files for versioning 2020-04-30 17:44:03 +00:00
.gitattributes Update the git-archive export options 2012-09-07 15:39:31 +02:00
.gitignore Move QTextCodec support out of QtCore 2020-06-20 02:04:38 +02:00
.lgtm.yml Add config file for enabling LGTM analysis 2020-06-20 23:52:59 +02:00
.qmake.conf Bump version 2019-12-17 12:41:31 +01:00
.tag Update the git-archive export options 2012-09-07 15:39:31 +02:00
CMakeLists.txt CMake: Protect against Qt toolchain file recursive inclusion 2020-06-04 23:21:27 +02:00
config_help.txt Move QTextCodec support out of QtCore 2020-06-20 02:04:38 +02:00
configure Fix configure -cmake -no-pch 2020-06-30 15:21:21 +02:00
configure.bat Don't compile qmake in c++11 mode 2020-02-03 17:43:30 +01:00
configure.cmake CMake: Generate qdevice.pri when cross-building 2020-06-29 12:47:59 +02:00
configure.json Remove winrt 2020-06-06 20:25:49 +02:00
configure.pri Remove winrt 2020-06-06 20:25:49 +02:00
dependencies.yaml Re-add dependencies.yaml now that qt5.git wip/qt6 builds fine 2019-09-18 13:19:31 +02:00
header.BSD Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.FDL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL-EXCEPT Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3-COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-NOGPL2 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-ONLY Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.MIT qsimd: add support for new x86 CPU features 2018-05-05 06:20:07 +00:00
INSTALL INSTALL: Remove outdated reference to Windows CE 2019-02-13 13:01:57 +00:00
LICENSE.FDL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.GPL2 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3-EXCEPT Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.LGPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.LGPLv3 Remove LICENSE.GPLv3, LICENSE.LGPLv21, LGPL_EXCEPTION.txt 2018-04-16 11:02:14 +00:00
LICENSE.QT-LICENSE-AGREEMENT Update enterprise license agreement v4.2.1 2019-12-18 13:07:19 +02:00
qtbase.pro nuke configure -host-option 2016-12-13 18:55:59 +00:00
sync.profile Move UNIX themes into QtGui 2020-06-22 09:12:14 +02:00