diff options
| author | Petri Virkkunen <petri.virkkunen@qt.io> | 2024-02-15 14:06:03 +0200 |
|---|---|---|
| committer | Petri Virkkunen <petri.virkkunen@qt.io> | 2024-04-30 22:17:04 +0300 |
| commit | ed3ce4ebfa34472df61a684f298aadb74d72c5bd (patch) | |
| tree | 8359252bf78e9bff466cb110c527dddc4db7d8bf /src/plugins/platforms/android/qandroidplatformintegration.cpp | |
| parent | ec3c96d72d17538406fe77274ba0b5ceed680254 (diff) | |
Android: Enable required capabilities for embedding QML in services
Enabling OpenGL, ThreadedOpenGL and ForeignWindows capabilities for all
cases where we have a valid Android context.
Also enable createPlatformOpenGLContext and createPlatformWindow in the
same circumstance.
This allows service-embedded contexts to create and manipulate windows
and surfaces.
Task-number: QTBUG-118874
Change-Id: I34a3153865cc1263973b8ddf67a82d61b2266bca
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformintegration.cpp')
| -rw-r--r-- | src/plugins/platforms/android/qandroidplatformintegration.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp index 4d9e6fa7045..6efd3fc6318 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp @@ -72,6 +72,12 @@ QAndroidPlatformScreen* createScreenForDisplayId(int displayId) return new QAndroidPlatformScreen(display); } +static bool isValidAndroidContextForRendering() +{ + return QtAndroid::isQtApplication() ? QtAndroidPrivate::activity().isValid() + : QtAndroidPrivate::context().isValid(); +} + } // anonymous namespace void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &resource) @@ -317,9 +323,12 @@ bool QAndroidPlatformIntegration::hasCapability(Capability cap) const case ApplicationState: return true; case ThreadedPixmaps: return true; case NativeWidgets: return QtAndroidPrivate::activity().isValid(); - case OpenGL: return QtAndroidPrivate::activity().isValid(); - case ForeignWindows: return QtAndroidPrivate::activity().isValid(); - case ThreadedOpenGL: return !needsBasicRenderloopWorkaround() && QtAndroidPrivate::activity().isValid(); + case OpenGL: + return isValidAndroidContextForRendering(); + case ForeignWindows: + return isValidAndroidContextForRendering(); + case ThreadedOpenGL: + return !needsBasicRenderloopWorkaround() && isValidAndroidContextForRendering(); case RasterGLSurface: return QtAndroidPrivate::activity().isValid(); case TopStackedNativeChildWindows: return false; case MaximizeUsingFullscreenGeometry: return true; @@ -341,7 +350,7 @@ QPlatformBackingStore *QAndroidPlatformIntegration::createPlatformBackingStore(Q QPlatformOpenGLContext *QAndroidPlatformIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const { - if (!QtAndroidPrivate::activity().isValid()) + if (!isValidAndroidContextForRendering()) return nullptr; QSurfaceFormat format(context->format()); format.setAlphaBufferSize(8); @@ -384,7 +393,7 @@ QOffscreenSurface *QAndroidPlatformIntegration::createOffscreenSurface(ANativeWi QPlatformWindow *QAndroidPlatformIntegration::createPlatformWindow(QWindow *window) const { - if (!QtAndroidPrivate::activity().isValid()) + if (!isValidAndroidContextForRendering()) return nullptr; #if QT_CONFIG(vulkan) |
