diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-08-25 11:32:58 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-08-27 23:35:16 +0300 |
commit | fc4a73aa544bf03d881ddb7e2eb8ebd47d7da7b8 (patch) | |
tree | 6e0a334fa3b9535541d546ecffc890cbb4307a6a /src/plugins/platforms/android/qandroidplatformopenglcontext.cpp | |
parent | 15db957585828af7a83896963fade95c3ddcc7e3 (diff) |
Add QOffScreenSurface platform API abstraction
This follows the work done in 6ff79478a44fce12ca18832a56db4a370a9ff417.
The API is available by including qoffscreensurface.h, scoped in
the QPlatformInterface namespace. The namespace
exposes platform specific type-safe interfaces that provide:
a) Factory functions for adopting native contexts, e.g.
QAndroidPlatformOffscreenSurface::fromNative(ANativeWindow);
b) Access to underlying native handles, e.g.
surface->platformInterface<QAndroidPlatformOffscreenSurface>()
->nativeSurface()
Fixes: QTBUG-85874
Change-Id: I29c459866e0355a52320d5d473e8b147e050acb3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformopenglcontext.cpp')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformopenglcontext.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp b/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp index 330330a638..c51fbaf1d3 100644 --- a/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp +++ b/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp @@ -76,9 +76,8 @@ EGLSurface QAndroidPlatformOpenGLContext::eglSurfaceForPlatformSurface(QPlatform if (surface->surface()->surfaceClass() == QSurface::Window) { return static_cast<QAndroidPlatformOpenGLWindow *>(surface)->eglSurface(eglConfig()); } else { - auto platformOffscreenSurface = static_cast<QPlatformOffscreenSurface*>(surface); - if (platformOffscreenSurface->offscreenSurface()->nativeHandle()) - return static_cast<QAndroidPlatformOffscreenSurface *>(surface)->surface(); + if (auto *platformOffscreenSurface = dynamic_cast<QAndroidPlatformOffscreenSurface *>(surface)) + return platformOffscreenSurface->surface(); else return static_cast<QEGLPbuffer *>(surface)->pbuffer(); } |