From 4376467169979ce6886d6f58944a2f50dcf77e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tinja=20Paavosepp=C3=A4?= Date: Tue, 10 Oct 2023 09:40:06 +0300 Subject: Android: Make winId() return the underlying QtWindow jobject Previously, winId() returned a simple integer ID, incremented by one for each window, instead of a handle to the underlying window. Note, if constructing a QWindow with fromWinId(), the passed jobject will not be the same one returned by winId(), as the passed jobject, assumed to be a View, will be wrapped inside a QtWindow to ensure child windows can be added to it if needed. Pick-to: 6.7 Change-Id: I9d5d977eeb08d4cc3594f7339660fe94c3a55864 Reviewed-by: Assam Boudjelthia --- src/plugins/platforms/android/qandroidplatformwindow.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/plugins/platforms/android/qandroidplatformwindow.cpp') diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp index 84a4eab389..6681f1d20d 100644 --- a/src/plugins/platforms/android/qandroidplatformwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformwindow.cpp @@ -16,8 +16,6 @@ QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(lcQpaWindow, "qt.qpa.window") -Q_CONSTINIT static QBasicAtomicInt winIdGenerator = Q_BASIC_ATOMIC_INITIALIZER(0); - QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window) : QPlatformWindow(window), m_nativeQtWindow(nullptr), m_nativeParentQtWindow(nullptr), m_androidSurfaceObject(nullptr) @@ -27,7 +25,6 @@ QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window) // the surfaceType is overwritten in QAndroidPlatformOpenGLWindow ctor so let's save // the fact that it's a raster window for now m_isRaster = window->surfaceType() == QSurface::RasterSurface; - m_windowId = winIdGenerator.fetchAndAddRelaxed(1) + 1; setWindowState(window->windowStates()); // the following is in relation to the virtual geometry @@ -174,6 +171,11 @@ void QAndroidPlatformWindow::setParent(const QPlatformWindow *window) } } +WId QAndroidPlatformWindow::winId() const +{ + return m_nativeQtWindow.isValid() ? reinterpret_cast(m_nativeQtWindow.object()) : 0L; +} + QAndroidPlatformScreen *QAndroidPlatformWindow::platformScreen() const { return static_cast(window()->screen()->handle()); -- cgit v1.2.3